直线可用直线上一点P。与方向向量v表示,直线上的所有点可以表示为P=P。+tv,其中t称为参数。
已知直线上两个不同的点A,B,则方向向量表示为B-A,参数方程表示为A+(B-A)t。(直线的t无范围限制,射线t>0,线段t属于[0,1])
设直线分别为P+tv与Q+tw,交点在第一条直线的参数为t1,第二条上为t2,则可得t1=cross(w,u)/cross(v,w), t2=cross(v,u)/cross(v,w)
//调用前确保两条直线有唯一交点(方向向量不平行重叠)
Point Getlineintersection(Point P, Vector v, Point Q, Vector w){
Vector u = P-Q;
double t = Cross(w,u) / Cross(v, w);
return P + v*t;
}
网友评论