1、点在线的左边还是右边
设线段端点为从 A(x1, y1)到 B(x2, y2), 线外一点 P(x0,y0),
判断该点位于有向线 A→B 的那一侧。
a = ( x2-x1, y2-y1)
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 线段上
2、判断三点是顺时针还是逆时针
设 p1=(x1,y1), p2=(x2,y2), p3=(x3,y3)
求向量
p12=(x2-x1,y2-y1)
p23=(x3-x2,y3-y2)
则当 p12 与 p23 的叉乘(向量积)
p12 x p23 = (x2-x1)*(y3-y2)-(y2-y1)*(x3-x2)
为正时,p1-p2-p3 路径的走向为逆时针,
为负时,p1-p2-p3 走向为顺时针,
为零时,p1-p2-p3 所走的方向不变,亦即三点在一直线上。