判断点在线的左边还是右边
(2013-05-17 16:08:31)分类: 数学 |
- 判断点在线的左边还是右边
以及两点p1(x1,y1),p2(x2,y2),判断点p(x,y)在线的左边还是右边。
1.
{
double tmpx = (p1.x - p2.x) / (p1.y - p2.y) * (p.y - p2.y) + p2.x;
if (tmpx >
p.x)//当tmpx>p.x的时候,说明点在线的左边,小于在右边,等于则在线上。return true;
return false;
}
2.
若D>0,则点(xp,yp)在直线的左侧;若D<0,则点在直线的右侧;D=0点在直线上
Tmp = (y1 – y2) * x + (x2 – x1) * y + x1 * y2 – x2 * y1
Tmp > 0 在左侧
Tmp = 0 在线上
Tmp < 0 在右侧
3.
b = (x0-x1, y0-y1)
a x b = | a | | b | sinφ (φ为两向量的夹角)
| a | | b | ≠ 0 时, a x b 决定点 P的位置
所以 a x b 的 z 方向大小决定 P位置
(x2-x1)(y0-y1) – (y2-y1)(x0-x1) > 0 左侧
(x2-x1)(y0-y1) – (y2-y1)(x0-x1) < 0 右侧
(x2-x1)(y0-y1) – (y2-y1)(x0-x1) = 0 线段上