这里推导直线与直线的最短距离点。
已知 直线(p1,p2),和(p3,p4)。
这里附上代码:
public static int LineToLineDistancePoint(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, out Vector3 rp1,
out Vector3 rp2)
{
rp1 = null;
rp2 = null;
Vector3 pa;
Vector3 pb;
int i = LineToLinePoint(p1, p2, p3, p4, out pa, out pb);
if (i == 1)
{
rp1 = pa;
rp2 = pa;
return 1;
}
if (i == -1)
{
//平行了
return 0;
}
Vector3 E = p3 - p1;
Vector3 v1 = (p2 - p1).Normalized();
Vector3 v2 = (p4 - p3).Normalized();
float n = Dot(v1, v2);
float k = (Dot(E, v2)*n - Dot(E, v1)) / (n * n - 1);
float j = k * n - Dot(E , v2);
rp1 = p1 + k * v1;
rp2 = p3 + j * v2;
return 1;
}