判断点在直线的哪一侧
来源:互联网 发布:如何使用cnki数据库 编辑:程序博客网 时间:2024/06/11 08:10
方法一:
采用几何计算,求面积法。转载:http://blog.csdn.net/modiz/article/details/9928955
- 注意向量是有方向的...
- 判断 某一点在直线左右侧 左右方向是相对前进方向的,只要指定了前进方向就可以知道左右(比如指定前进方向是从直线的起点到终点).判断点在直线的左侧还是右侧是计算几何里面的一个最基本算法.使用矢量来判断.
S(P1,P2,P3)=|y1 y2 y3|= (x1-x3)*(y2-y3)-(y1-y3)*(x2-x3)
定义:平面上的三点P1(x1,y1),P2(x2,y2),P3(x3,y3)的面积量:
当P1P2P3逆时针时S为正的,当P1P2P3顺时针时S为负的。
令矢量的起点为A,终点为B,判断的点为C,
如果S(A,B,C)为正数,则C在矢量AB的左侧;
如果S(A,B,C)为负数,则C在矢量AB的右侧;
如果S(A,B,C)为0,则C在直线AB上。 方法二:
- 采用向量叉积方式:转载http://blog.csdn.net/modiz/article/details/9928553
- 它可以用来判断点在直线的某侧。进而可以解决点是否在三角形内,两个矩形是否重叠等问题。向量的叉积的模表示这两个向量围成的平行四边形的面积。
- 设矢量P = ( x1, y1 ),Q = ( x2, y2 ),则矢量叉积定义为由(0,0)、p1、p2和p1+p2所组成的平行四边形的带符号的面积,即:P×Q = x1*y2 - x2*y1,其结果是一个伪矢量。显然有性质 P × Q = - ( Q × P ) 和 P × ( - Q ) = - ( P × Q )。
叉积的一个非常重要性质是可以通过它的符号判断两矢量相互之间的顺逆时针关系:
若 P × Q < 0 , 则P在Q的逆时针方向。
若 P × Q = 0 , 则P与Q共线,但可能同向也可能反向。
叉积的方向与进行叉积的两个向量都垂直,所以叉积向量即为这两个向量构成平面的法向量。
如果向量叉积为零向量,那么这两个向量是平行关系。
int GeometryHelp::Side(LineSegment2D line, Point point){Point P1 = line.P1;Point P2 = line.P2;return ((P2.y - P1.y) * point.x + (P1.x-P2.x) * point.y + (P2.x*P1.y - P1.x*P2.y));}
0 0
- 判断点在直线的哪一侧
- 计算几何 判断点在直线的左右哪一侧
- poj2298-Toy Storage-判断点在直线的哪侧
- 判断点在直线的哪个区域
- 判断点在直线的一哪侧
- 判断点在直线上
- 判断点在直线上
- 判断二维点在线段的哪一侧
- poj2318_TOYS_叉积判断点在线段的哪一侧
- 判断某一点在直线的左右侧的算法
- 计算机图形学—判断点在直线上的方法
- C#判断点在直线上的方法
- 判断点在直线段上的方法
- 判断某一点在直线左右侧的方法...
- C#判断点在直线上的方法
- UVA 10167 Birthday Cake(判断点在直线的哪边)
- POJ1106->叉积判断点在直线的左右
- 判断点在直线的左右那一侧
- 黑马程序员>>>面向对象[>上<]
- MFC COM
- iText导出PDF经典实现
- 你确实很顽强
- Java程序员必须掌握的8大排序算法
- 判断点在直线的哪一侧
- 小团队的技术管理
- gwt SplitLayoutPanel
- 分布式环境下的事务管理
- struct 1 流程有感
- IntellijIDEA使用GIT Push的问题
- Spark:用Scala和Java实现WordCount
- Android中Intent传递Java对象的方法
- Hello Presto