/// <summary>
/// 点到直线的距离
/// </summary>
/// <returns>The of point to vector.</returns>
/// <param name="startPoint">Start point.</param>
/// <param name="endPoint">End point.</param>
/// <param name="point">Point.</param>
public static float PointToStraightlineDistance(Vector3 lineStartPoint, Vector3 lineEndPoint, Vector3 targetPoint)
{
//需要转到2维平面计算
Vector2 startVe2 = IgnoreYAxis(lineStartPoint);
Vector2 endVe2 = IgnoreYAxis(lineEndPoint);
float A = endVe2.y - startVe2.y;
float B = startVe2.x - endVe2.x;
float C = endVe2.x * startVe2.y - startVe2.x * endVe2.y;
float denominator = Mathf.Sqrt(A * A + B * B);
Vector2 pointVe2 = IgnoreYAxis(targetPoint);
return Mathf.Abs((A * pointVe2.x + B * pointVe2.y + C) / denominator);
}
/// <summary>
/// 去掉三维向量的Y轴,把向量投射到xz平面。
/// </summary>
/// <param name="vector3"></param>
/// <returns></returns>
public static Vector2 IgnoreYAxis(Vector3 vector3)
{
return new Vector2(vector3.x, vector3.z);
}
计算点到直线的距离
猜你喜欢
转载自blog.csdn.net/strivero/article/details/53078563
今日推荐
周排行