点与有向线段的位置关系
点与有向线段的关系有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。
点与有向线段的位置关系相关推荐
- 收藏:用DE-9IM判断二维空间位置关系
很有用的一篇资料,经常用,经常找,不如搬过来.感谢原作者! 来源:Classicning Daily Log http://www.classicning.com/blog/post/388.html ...
- JS魔法堂:判断节点位置关系
一.前言 在polyfill querySelectorAll 和写弹出窗时都需要判断两个节点间的位置关系,通过jQuery我们可以轻松搞定,但原生JS呢?下面我将整理各种判断方法,以供日后查阅. 二 ...
- 平面内两条线段的位置关系(相交)判定与交点求解
http://www.cnblogs.com/devymex/archive/2010/08/19/1803885.html 概念 平面内两条线段位置关系的判定在很多领域都有着广泛的应用,比如游戏.C ...
- c语言 两条线段位置,C++/STL实现判断平面内两条线段的位置关系代码示例
概念 平面内两条线段位置关系的判定在很多领域都有着广泛的应用,比如游戏.CAD.图形处理等,而两线段交点的求解又是该算法中重要的一环.本文将尽可能用通俗的语言详细的描述一种主流且性能较高的判定算法. ...
- C#判断点和直线的位置关系
/// <summary>/// 判断点和直线的位置关系/// </summary>/// <param name="LinePntA">直线上 ...
- 【POJ - 2318】TOYS(计算几何,叉积判断点与直线位置关系,二分)
题干: Calculate the number of toys that land in each bin of a partitioned toy box. Mom and dad have a ...
- 按字母位置关系给数字排序(洛谷P4414题题解,Java语言描述)
题目要求 P4414题目链接 分析 这题其实就是排序,特别水,因为只有三个数-- 问题是这排序咋排呢?也不是那么直接的,因为是按照ABC之间位置关系排一下. 其实简单处理的话就是先排序,直接按照ABC ...
- java 课后习题 判断两个圆是否相交 圆和直线的位置关系
知识点: 1.点到直线的距离公式 d = Ax +By +C = 0 根号 A^2+B ^2 2.直线方程的一般式 Ax + Bx + C = 0 A = y2 -y1 B =x1 -x2 C = x ...
- 【JAVA 第四章 流程控制语句】课后习题 判断两个圆是否相交 圆和直线的位置关系
知识点: 1.点到直线的距离公式 d = Ax +By +C = 0 根号 A^2+B ^2 2.直线方程的一般式 Ax + Bx + C = 0 A = y2 -y1 B =x1 -x2 C = x ...
最新文章
- 在macOS搭建React Native for IOS开发环境
- 大乐透python预测程序_Python生成随机验证码,大乐透号码
- pl/mysql安装_MySQL安装
- SQL2005学习(三十二),Group by
- 双系统linux引导修复
- J2SE - POI合并单元格相关
- 计算机那个是固态硬盘,固态硬盘的好处是什么?电脑使用固态硬盘有什么用
- java poi框架导出excel如何插入特殊字符(复选框勾选)
- Vue路由导航报错:NavigationDuplicated: Avoided redundant navigation to current location解决方法
- plsql快速导入sql文件
- Python 练习实例100例—5
- 查找list中重复数据
- iCloud照片怎么恢复到相册?两种方法轻松解决
- oracle11g 使用数据泵导出导入数据
- 小谈网易云音乐----API
- 约瑟夫环问题-以python为舟
- 宝马335i手动挡和M3手动挡的对比
- 操作系统之进程状态及进程状态切换 (六) --- 创建态、就绪态、运行态、阻塞态、终止态。
- 看天涯社区如何防验证码接口短信轰炸
- (产品贴)移动护理平台