点与有向线段的位置关系

来源:互联网 发布:约瑟夫环 数组 编辑:程序博客网 时间:2024/05/02 01:48

点与有向线段的关系有5种:

1.   点在有向线段左侧

(y-y1)(x2-x1) - (x-x1)(y2-y1)>0

2.   点在有向线段右侧

(y-y1)(x2-x1) - (x-x1)(y2-y1)<0

3.   点在有向线段正前方

(x2-x1)*(y-y2)=(y2-y1)*(x-x2)且(x2-x1)*(x-x2)>0

4.   点在有向线段正后方

(x1-x2)*(y-y1)=(y1-y2)*(x-x1)且(x1-x2)*(x-x1)>0

5.   点在有向线段上

 

点在有向线段左侧

设点A(x,y)在有向线段 P1P2左侧,点B是通过p1且与x轴平行的直线上的一点,则必有∠BP1A-∠P2P1A>0°且<180°。

即0<sin(∠BP1A-∠P2P1A)<1

设∠BP1A=α∠P2P1A=β根据差角公式有:

sin(α-β)=sinα·cosβ-cosα·sinβ

根据三角函数定义可知:

sinα = (y-y1)/ra

cosα = (x-x1)/ra

sinβ = (y2-y1)/rb

cosβ = (x2-x1)/rb

故有:

0<(y-y1)(x2-x1)/(rarb) - (x-x1) (y2-y1)/(rarb)<1

又因为(y-y1)(x2-x1)/(rarb) - (x-x1)(y2-y1)/( rarb)<1必然成立,所以只需要满足:

0<(y-y1)(x2-x1)/( rarb) - (x-x1) (y2-y1)/(rarb)

因为rarb恒大于0,所以消去分母可得:

(y-y1)(x2-x1) - (x-x1) (y2-y1)>0

即,满足(y-y1)(x2-x1) - (x-x1)(y2-y1)>0时,点A在有向线段 P1P2左侧。


点在有向线段右侧

类似地,满足(y-y1)(x2-x1) - (x-x1)(y2-y1)<0时,点A在有向线段 P1P2右侧。

 

点在有向线段正前方

点A在有向线段P1P2正前方时,有向线段P1P2和P2A方向相同。

即(x2-x1)/(x-x2)=(y2-y1)/(y-y2),且(x2-x1)*(x-x2)>0

又因为点A在有向线段前方,即A和P2不重合,所以(x-x2)、(y-y2)不可能为0

所以两边同时乘以(x-x2)(y-y2)得:

(x2-x1)*(y-y2)=(y2-y1)*(x-x2)

即,当(x2-x1)*(y-y2)=(y2-y1)*(x-x2)且(x2-x1)*(x-x2)>0时,点A在有向线段P1P2前方。


点在有向线段正后方

点A在有向线段P1P2正后方时,有向线段P2P1和P1A方向相同。

即(x1-x2)/(x-x1)=(y1-y2)/(y-y1),且(x1-x2)*(x-x1)>0

又因为点A在有向线段后方,即A和P1不重合,所以(x-x1)、(y-y1)不可能为0

所以两边同时乘以(x-x1)(y-y1)得:

(x1-x2)*(y-y1)=(y1-y2)*(x-x1)

即,当(x1-x2)*(y-y1)=(y1-y2)*(x-x1)且(x1-x2)*(x-x1)>0时,点A在有向线段P1P2后方。


点在有向线段上

点A在有向线段P1P2上且点A与点P1、P2不重合时,有向线段P2A和P1A方向相反。

点A在有向线段P1P2上且点A与点P1或P2重合时,有向线段点A=P2或点A=P1


1 0