计算几何
判断点在线段哪一边
计算叉积,大于0在上面,小于0在下面。
已知$$P_1(x_0, y_0),\space P_2(x_1, y_1), \space P_3(x_3, y_3)$$三个点坐标,求$$P_3$$在线段$$P_1P_2$$的哪一侧。则构造向量$$\vec{P_1P_2}, \space \vec{P_2P_3}$$,算$$\vec{P_1P_2}\times \vec{P_2P_3}$$即可。
$$\vec{(x_1, y_1)} \times \vec{(x_2, y_2)} = x_1y_2 - x_2y_1$$
struct Vector {
double x, y;
double cross_prod(Vector &v) const {
return this->x * v.y - this->y * v.x;
}
};
坐标系上一点绕原点旋转公式
$$ X_1=\cos(A)\cdot X_0 - \sin(A)\cdot Y_0;
Y_1=\sin(A)\cdot X_0 + \cos(A)\cdot Y_0; $$