首页 > 编程语言 > 详细

Unity点到线段的最短距离

时间:2021-06-04 17:50:10      阅读:14      评论:0      收藏:0      [点我收藏+]

抄的Unity的源码

HandleUtility.DistancePointLine 是UnityEditor代码,源码如下,这样就可以在Runtime中运行

注意性能开销!

 

    /// <summary>
    /// 计算点到线段的最短距离
    /// </summary>
    /// <param name="point"></param>
    /// <param name="lineStart"></param>
    /// <param name="lineEnd"></param>
    /// <returns></returns>
    public static float DistancePointLine(Vector3 point, Vector3 lineStart, Vector3 lineEnd)
    {
        Vector3 rhs = point - lineStart;
        Vector3 vector3 = lineEnd - lineStart;
        float magnitude = vector3.magnitude;
        Vector3 lhs = vector3;
        if ((double) magnitude > 9.99999997475243E-07)
            lhs /= magnitude;
        float num = Mathf.Clamp(Vector3.Dot(lhs, rhs), 0.0f, magnitude);
        Vector3 v3 = lineStart + lhs * num;
        return Vector3.Magnitude (v3 - point);
    }

 

Unity点到线段的最短距离

原文:https://www.cnblogs.com/sanyejun/p/14850354.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!