计算几何(多边形面积的计算,线段规范相交模板)

二维平面内线段规范相交的判定

摘自 《计算几何》    --谢迪

规范相交

---两条线段恰有唯一一个不是断点的公共点。

可以用解析几何解法

1.列直线方程: Ax+By+C=0

  判断解的情况

  --若无解则平行

  --无穷多解,则说明共线

  --唯一解

    -判断是否分别在两条线段的内部

 

解析结合解法的问题  

1.求解方程需要浮点除法运算

  --浮点误差

    特别是接近平行时

  --浮点除法运算速度

2.总体效率

  --需要比较定点

  --交点没有用

 

计算几何的算法

  --仅需要加、减、乘

  --不求交点

如何判断?

两条线段相交时,每条线段两个端点都在另一条线段的异侧

 

 

 

 

两条线段相交时,每条线段的端点都在另一条线段的异侧

--判断异侧

--有向线段

--判断一个点是在有向线段的左边还是右边

 

判断一个点实在有向线段的左边还是在右边

--添加一条辅助向量

--若要判断P的相对位置,只要判断向量P1P在向量P1P2的顺时针还是逆时针

 

 

向量的叉积

--向量a到向量b成逆时针,上述结果大于0;

--向量a到向量b成顺时针,上述结果小于0;

--向量a和向量b共线时(不论同向还是反向),上述结果等于0.

 

 

向量的叉积

--本质上是有向面积

 

有向面积的应用

--求凸多边形的面积

--将凸多边形用三角剖分,然后求所有三角形面积之和

 

 

有向面积的应用

--求凸多边形的面积

--任取一点(为计算方便可取原点),将它与所有的多边形的定点都连上辅助线

--依逆时针方向扫描定点,依次求出当前定点和下一个的顶点以及原点构成的三角形的有向面积,即叉积/2.并将所有的面积相加即可。

 

 因为向量的叉积有正负之分,所以图中的蓝色区域的面积和红的区域的面积的正负是相反的(红色为正,蓝色为负)。也就是说,相对于原点,最后蓝色区域的面积总会被抵消,相当于求出的就是红色的区域。

 

 

有向面积的应用

--任意多边形的面积

--与前面一种方法一样就可以求出来

--可见,有向面积的引入极大方便了计算。

 

 

 

--P和P'在向量P1P2的异侧,即

 

--且P1和P2在向量PP'的异侧,即

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(计算几何,算法小结)