点与有向线段的位置关系
来源:互联网 发布:约瑟夫环 数组 编辑:程序博客网 时间: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后方。
点在有向线段上
1°
点A在有向线段P1P2上且点A与点P1、P2不重合时,有向线段P2A和P1A方向相反。
2°
点A在有向线段P1P2上且点A与点P1或P2重合时,有向线段点A=P2或点A=P1。
- 点与有向线段的位置关系
- 点与线段的位置关系-算法
- 几何+点与线段的位置关系+二分(POJ2318)
- 这是原来写的如何判断点与有向线段关系的程序,有帮助于看懂我下面那个程序(C#2.0)
- poj 2318 TOYS (点与线段位置关系判断)
- POJ 2318 TOYS(叉积判断点与线段的位置关系)
- 判断点与多边形的位置关系
- 判断点与多边形的位置关系
- zoj1081(点与多边形的位置关系)
- 判断点在有向线段的左边还是右边
- 点到线段直线的距离, 直线与直线的关系 直线与线段的关系
- 判断点与多边形位置关系的算法
- <模板><计算几何>点与多边形的位置关系
- 第十三周项目一-点与圆的位置关系
- POJ 2318 TOYS(点与凸多边形的位置关系)
- 计算几何问题汇总--点与线的位置关系
- 计算几何问题汇总--点与线的位置关系
- 二维平面上点与线段关系的判定
- Android--ContentProvider
- 根据top进程抓取oracle数据库耗费资源的sql语句
- 官网中文离线视频
- HTML中fieldset标签以及slideUp和slideDown的使用
- JS实现cookie的存,取,删除
- 点与有向线段的位置关系
- stl操作3
- 石子归并---区间型动态规划
- 亦思尘笔记-IOS通过web打开本地应用
- 日期选择对话框DatePickerFragment
- Caffe SGD shuffle mechanism
- 黑马程序员_面向对象(三)
- [乐意黎原创] Selenium里WebDriver中窗口的close()与quit()
- js 自己实现 endsWith startsWith contains