折线段的拐向判断
2016-11-01 00:00
155 查看
摘要: 利用矢量计算来判断拐向关系
矢量:如果有向现代p1p2的起点p1在坐标原点,可以称它为矢量。
矢量加减法:设二维矢量P=(x1,y1),Q=(x2,y2),则矢量加法定义为P+Q=(x1+x2, y1+y2);矢量剪发为P-Q=(x1-x2, y1-y2)。显然有P+Q=Q+P, P-Q=-(Q-P)。满足平行四边形和三角形法则。
矢量叉积:设矢量P=(x1, y1), Q=(x2, y2), 则矢量叉积定义为由(0,0)、p1、p2和p1p2所组成的平行四边形的带符号面积,即P✖️Q=x1*y2 - x2*y1,其结果是一个标量。并且PXQ=-1(QXP),和PX(-Q) = -(PXQ)。叉积的一个非常重要的性质是可以通过它的符号判断两个矢量互相之前的顺逆时针关系:
若PXQ>0,则P在Q的顺时针方向。
若PXQ<0,则P在Q的逆时针方向。
若PXQ=0,则P与Q共线,但可能同向也可能反向。
折线段的拐向判断:对于共有端点的线段p0p1和p0p2,通过计算(p2 - p0)x(p1 - p0)的符号可以确定折线段的拐向:
1. 若(p2-p0)x(p1-p0) < 0,则p0p1在p1点拐向左侧后得到p0p2。
2.若(p2-p0)x(p1-p0) > 0,则p0p1在p1点拐向右侧后得到p0p2。
3.若(p2-p0)x(p1-p0) = 0,则p0、p1、p2三点共线。
矢量:如果有向现代p1p2的起点p1在坐标原点,可以称它为矢量。
矢量加减法:设二维矢量P=(x1,y1),Q=(x2,y2),则矢量加法定义为P+Q=(x1+x2, y1+y2);矢量剪发为P-Q=(x1-x2, y1-y2)。显然有P+Q=Q+P, P-Q=-(Q-P)。满足平行四边形和三角形法则。
矢量叉积:设矢量P=(x1, y1), Q=(x2, y2), 则矢量叉积定义为由(0,0)、p1、p2和p1p2所组成的平行四边形的带符号面积,即P✖️Q=x1*y2 - x2*y1,其结果是一个标量。并且PXQ=-1(QXP),和PX(-Q) = -(PXQ)。叉积的一个非常重要的性质是可以通过它的符号判断两个矢量互相之前的顺逆时针关系:
若PXQ>0,则P在Q的顺时针方向。
若PXQ<0,则P在Q的逆时针方向。
若PXQ=0,则P与Q共线,但可能同向也可能反向。
折线段的拐向判断:对于共有端点的线段p0p1和p0p2,通过计算(p2 - p0)x(p1 - p0)的符号可以确定折线段的拐向:
1. 若(p2-p0)x(p1-p0) < 0,则p0p1在p1点拐向左侧后得到p0p2。
2.若(p2-p0)x(p1-p0) > 0,则p0p1在p1点拐向右侧后得到p0p2。
3.若(p2-p0)x(p1-p0) = 0,则p0、p1、p2三点共线。
相关文章推荐
- 计算几何算法基础————判断点是否在线段上(另附叉积的重要应用,折线段的拐向判断)
- 矢量叉积与折线段拐向判断---三角形顺逆判断
- 通用存储过程之二: 根据主键的值,判断记录是否存在的存储过程
- 检测客户端是否安装 Silverlight 插件和判断IE是否安装或支持Silverlight(限IE)
- 通过LINUX命令判断OS,DB,DNS,HOSTNAME等配置
- Js判断字符串中是否包含空格
- C++ STL中判断list为空,size()==0和empty()有什么区别
- Java判断时间,Email,手机号,身份证等是否为正确格式
- php判断xss攻击
- Android——判断Service是否已经启动
- Android判断获取内置外置sd卡demo
- 判断密码长度
- lintcode 判断一个单链表是否有环及环的链接点
- String——anagrams 判断字符串是否互为变位词
- 判断两个IP是否属于同一子网
- themeleaf中的th:switch条件判断语句用法示例
- iOS 判断版本号
- 网络判断
- android 判断时间是否已过期
- javaScript 判断字符串是否为数字的简单方法