点积、叉积
(u×v<0) : (u) 在 (v) 的逆时针方向
判断线段相交,求交点
首先判断两条线段是否相交
图中,设两线段交点为 (E)
(ecause frac{|CE|}{|DE|}=frac{△ACD在CD边上的高}{△BCD在CD边上的高};;=frac{S_{△ACD}}{S_{△BCD}}=frac{CD×CA}{CB×CD}=frac{(x_D-x_C)(y_A-y_C)-(x_A-x_C)(y_D-y_C)}{(x_B-x_C)(y_D-y_C)-(x_D-x_C)(y_B-y_C)}=k)
( herefore E=(frac{k*x_B+x_A}{k+1},frac{k*y_B+y_A}{k+1}),CE=frac{k}{k+1}CD)
point intersect(point P,Vector v,point Q,Vector w){
point ret;
Vector u=P-Q;
if(sgn(cross(v,w))==0)return false;
double t=cross(w,u)/cross(v,w);
ret=P+v*t;
return ret;
}
点的旋转、坐标轴的旋转
点的旋转
(s=xcos b-ysin b)
(t=xsin b+ycos b)
坐标轴的旋转
(s=xcos heta+ysin heta)
(t=ycos heta-xsin heta)