计算几何

任意两个向量x=(a1,b1),y=(a2,b2);

点积x·y=a1×a2+b1×b2=|x|·|y|·cos(θ)

叉积|x×y|=a1×b2-a2×b1=|x|·|y|·sinθ

用点表示叉积就是

bool judge(point a,point b,point c)
{
if((b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x)==0)
return true;
else return false;
}

点积

点积的集合意义:我们以向量 a 向向量 b 做垂线,则 | a | * cos(a,b)为 a 在向量 b 上的投影,即点积是一个向量在另一个向量上的投影乘以另一个向量。且满足交换律

应用:可以根据集合意义求两向量的夹角,cos(a,b) =( 向量a * 向量b ) / (| a | * | b |) =  x1*x2 + y1*y2 / (| a | * | b |) 

叉积

叉积的结果也是一个向量,是垂直于向量a,b所形成的平面,如果看成三维坐标的话是在 z 轴上,结果为 x1*y2-x2*y1,上面结果是它的模。

方向判定:右手定则,(右手半握,大拇指垂直向上,四指右向量a握向b,大拇指的方向就是叉积的方向)

叉积的集合意义:

1:其结果是a和b为相邻边形成平行四边形的面积。

2:结果有正有负,有sin(a,b)可知和其夹角有关,夹角大于180°为负值。

3:叉积不满足交换律

性质

***叉积德结果是以x和y为相邻边形成的平行四边形的面积

***结果有正有负,意义不同,夹角大于180为负值

***叉积不满足交换律,也就是说x×y和 y×x的结果是不同的

应用

***通过接货的政府判断两矢量之间的顺逆时针关系

若|x×y|>0表示x在y的顺时针方向

若|x×y|<0表示x在y的逆时针方向

若|x×y|>0表示x和y共线,但不确定方向是否相同

***设向量t=(x,y)关于原点逆时针旋转θ后的坐标为(x',y‘),那么 x '=xcosθ+ysinθ

                                                                                            y'=xsinθ+ycosθ;

*****

计算机对出发计算有一定的精度,在某些精度要求较高的情况下,为保持正确性应该尽量避免除法,利用叉积就是避免除法的方法之一。

常量

***

关于浮点数精度的问题

***两个浮点数不能直接比较大小,比如判断一个浮点数是否为0

**if(abs(ans)<EPS)即表示if(ans==0)浮点数知否为0

**if(fabs(a-b)<EPS)即表示if(a==b)浮点数是否相等

**if(a-b<EPS)即表示if(a<b)浮点数比较大小

***另外一种处理浮点数的方法:在不溢出整数范围的情况下,可以通过乘以10ⁿ来转换为整数运算

****写计算几何的题目时务必检查每一个变量时double还是int

实际问题

1.判断给定点p是否在线段AB上

**|AP×BP|=0且min(x1,x2)<=xp<=max(x1,x2);

                      min(y1,y2)<=yp<=max(x1,x2);

总结:点在线段上(叉积=0)

         点在线段延长线上(叉积=0)

        点在线段顺时针方向(叉积>0)

        点在线段逆时针方向(叉积<0)

2.判断一个点是否位于三角形ABC中

**可以根据面积法判断

**利用叉积判断

AP在AC顺时针方向

CP在CB顺时针方向

BP在BA顺时针方向

 即三者叉积都是大于0

当为逆时针方向时三者叉积都小于0

*****升级:可以利用叉积德正负号来判断一个点是否在凸多边形的内部

心心

外心:三遍中垂线的交点,外接圆的圆心,到三角形的三个顶点的距离相等

内心:角平分线的交点,到三角形三边的距离相等

垂心:三条高线的交点

重心:三条中线的交点时到三角形三个顶点距离的平方和最小的点,三角形内到三边距离之积最大         的点

旁心:三角形一条内角平分线与其他两个角的外角平分线的交点,旁心到三角形一边及其他两边延         长线的距离相等

***三角形的面积用海伦公式计算

3.判断一个多边形是否为凸多边形

**对于凸多边形来说,任意相邻的三个点组成的两向量的叉积,符号一致

4.极角的顺序

 5.凸包

Graham扫描法

该算法的时间复杂度大约是O(nlog(n))

所需的知识点:极角排序,栈的使用和叉积的应用

你若盛开,清风自来...
原文地址:https://www.cnblogs.com/shangjindexiaoqingnian/p/5894200.html