点到线段分为三种情况
- 1 如图,向量AB与AP的点积小于0时,距离为AP的模
- 2 如图,向量AB与BP的点积大于0时,距离为BP的模
- 3 如图,向量AB在线段正上方时,不满足以上两个条件,距离即为点到直线的距离
double distancetosegment(Point P, Point A, Point B){
if(A==B) return Length(P-A);
Vector v1 = B-A, v2 = P-A, v3 = P-B;
if(dcmp(Dot(v1,v2)) < 0) return Length(v2);
else if(dcmp(Dot(v1,v3)) > 0) return Length(v3);
else return fabs(Cross(v1,v2) / Length(v1));
}
网友评论