1.有向面积
(1)三角形的有向面积
如下图所示,我们根据2d的向量叉乘就能求出来一个有向面积。
(2)多边形的有向面积
1.选取任意一点,这点与所有的线段构成的三角形面积之和就是多边形的面积
如上图所示,我们我们选取一个点E作为参考点(选取原点作为参考点是可以直接获取两个向量,减少运算量),然后使用循环遍历每条边求出每个三角形的有向面积,然后求和则可得出这个四边形的有符号面积。
下面×号代表叉乘,→代表向量。
面积S= (BE→×EA→ + CE→×EB→ + DE→×EC→ + AE→×ED→)*0.5
设 一组点P0~PN构成的几何图形,
那么第一个三角形的面积算法是
(p1.x *-p0.y) -(-p0.x*p1.y)=p0.x*p1.y-p1.x*p0.y
则面积合 s = ((p0.x*p1.y-p1.x*p0.y) + (p1.x*p2.y-p2.x*p1.y)+....... )*0.5
ps:当多边形为凸多边形时,且参考点在多边形内部时,每个三角形的面积一定同为正或同为负。
2.使用四边形的方式计算有向面积,即计算每个线段构成的梯形所构成的有向面积,然后他们的合就是图形的面积。
如上图所示。我们先给出公式
S=((C.y+B.y)*(C.x-B.x) + (D.y+C.y)*(D.x-C.x) + (E.y+D.y)*(E.x-D.x) +(B.y+E.y)*(B.x-E.x))*0.5
我们先拿出来一部分公式出来作为解释
(C.y+B.y)*(C.x-B.x)
求的恰好是CBGH这个梯形的面积(上底加下底乘以高除以二为梯形的面积,C.y+B.y为上底加下底,C.x-B.x为高)
剩余的部分也是剩下来梯形的面积,然后除以2就能得到多边形的面积。
虽然这里使用的是梯形的面积,但实际上也是利用的有向面积。
公式:
设 一组点P0~PN构成的几何图形。
则
S=((P1.y+PO.y)*(P1.x-P0.x) + (P2.y+P1.y)*(P2.x-P1.x) + ......)*0.5
3.先把多边形分割成很多小三角形,然后求这些三角形的面积合(此方法效率低下,不推荐使用)
ps:
1.在处理的过程中千万不要漏掉了最后一个点到第一个点形成的线段的处理
2.附上叉乘传送 向量的叉乘