三角形的有向面积

设三点:A(x0,y0),B(x1,y1),C(x2,y2),则三角形ABC的有向面积为:

area=(x0*y1+x1*y2+y0*x2-x0*y2-x2*y1-x1*y0)/2 ;

如果area>0,则说明ABC三点呈逆时针排列;

如果area=0,则ABC三点共线;

如果area<0,则说明ABC三点呈现顺时针排列。

这个定理:① 计算三角形的面积。

              ② 判断点是否在三角形的内部。

判断点是否在三角形内部(通过判断该点同三角形连续两点组成三角形的顺逆性来判断点是否在三角形内。):
假设存在一个点D,若这个点在三角形的内部,则以该点为起点,和原多边形的任意两个连续的且尊照多边形组成方向的点(如DAB、DBC、DCA)组成的三角形都是一个方向。若这个点在三角形的外部,则会出现DAB、DBC、DCA三个三角形方向不一致的情形,即其中有一个不同于另外两个(如一个顺,两个逆)。

推广
判断点是否在凸多边形内:
实际上,对于凸多边性也可以用一样的方法,只是这个时候判断的三角形的数目增加了,不管怎么样,只要点在多边形内部他们的顺逆都是一样的。
判断点是否在凹多边形内:
对于凹多边形而言,情况就要相对复杂一些了。此时,判断一个点是否在其内部的计算量会增加比较多。

具体算法如下:此时三角形一个个的判断可能会失效,我们应当两个同时判断。即判断该点是否同时在多边形的连续两个三角形之中,相当于是求两个三角形的交集,直到完成多边形封闭。例如,判断P点是否在多边形ABCD之中,依次判断P是否在ABC-BCD、BCD-CDA、CDA-DAB、DAB-ABC各个成对三角形中,P在ABC-BCD中表示P在ABC-BCD的交集之中。这样就可以判断一个点是否在一个凹多边形内部了。

posted @ 2014-12-05 10:43  luori  阅读(887)  评论(0)    收藏  举报