计算几何初步

线段属性
线段

三个问题

1、给定的向量p0p1和p0p2,以p0为公共点,p0p1到p0p2是否构成右手螺旋(逆时针)?

2、给定两条线段p0p1和p1p2,如果我们遍历p0p1和P1P2,能否判断p2在p0p1的左边?

3、线段p0p1和p3p4相交吗?

叉积

定义.  矩阵的行列式:

           

p1Xp2 >0:p1以(0,0)为起点,在p2的顺时针方向

p1Xp2 <0: p1以(0,0)为起点,在p2的逆时针方向

p1Xp2 =0:共线

1判断p0p1到p0p2是否构成右手螺旋

以P0为公共点。 p0(x0,y0),p1(x1,y1),p2(x2,y2) 以p0为公共点 计算叉积  

 (p1-p0)x(p2-p0)=(x1-x0)(y1-y0)-(x2-x0)(y2-y0)    

>0:左手螺旋(顺时针)    

<0:右手螺旋(逆时针)    

=0:共线

2判断一个点在一条线段的左边还是右边(p1点在线段p0p2)

用叉积(p1-p0)x(p2-p0)       >0:右边 P1P2向左转    <0:左边 P1P2向右转    =0:线上 

只要不是左转 :(p1-p0)x(p2-p0) <=0  注意 p1 p2 顺序

3判断两线段是否相交

两线段相交有下面两个情况 如图一两线交叉 如图二一线段的端点在另一条线段上

判断AB和CD两线段是否有交点: 同时满足两个条件:('x'表示叉积)

1.C点D点分别在AB的两侧.(向量(ABxAC)*(ABxAD)<=0)

2.A点和B点分别在CD两侧.(向量(CDxCA)*(CDxCB)<=0)  

3.  向量(ABxAC)*(ABxAD)<0代表在直线两侧, =0代表在直线上。

猜你喜欢

转载自blog.csdn.net/henu111/article/details/81746051