• 2D和3D空间中计算两点之间的距离


    自己在做游戏的忘记了Unity帮我们提供计算两点之间的距离,在百度搜索了下。

    原来有一个公式自己就写了一个方法O(∩_∩)O~,到僵尸到达某一个点之后就向另一个奔跑过去

    123

    /// <summary>
        /// 3维中如何计算两点之间的距离
        /// </summary>
        /// <param name="p1"></param>
        /// <param name="p2"></param>
        /// <returns></returns>
        private float TwoPointDistance3D(Vector3 p1, Vector3 p2) 
        {
    
            float i = Mathf.Sqrt((p1.x-p2.x) * (p1.x-p2.x)
                                + (p1.y - p2.y) * (p1.y - p2.y)
                                + (p1.z - p2.z) * (p1.z - p2.z));
    
            return i;
        }
    
        /// <summary>
        /// 2维中如何计算两点之间的距离
        /// </summary>
        /// <param name="p1"></param>
        /// <param name="p2"></param>
        /// <returns></returns>
        private float TwoPointDistance2D(Vector2 p1, Vector2 p2)
        {
    
            float i = Mathf.Sqrt((p1.x - p2.x) * (p1.x - p2.x)
                                + (p1.y - p2.y) * (p1.y - p2.y));
    
            return i;
        }

    数学公式:

    欧氏距离定义: 欧氏距离( Euclidean distance)是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。
    在二维和三维空间中的欧式距离的就是两点之间的距离,二维的公式是
    d = sqrt((x1-x2)^+(y1-y2)^)
    三维的公式是
    d=sqrt(x1-x2)^+(y1-y2)^+(z1-z2)^)
    推广到n维空间,欧式距离的公式是
    d=sqrt( ∑(xi1-xi2)^ ) 这里i=1,2..n
    xi1表示第一个点的第i维坐标,xi2表示第二个点的第i维坐标
    n维欧氏空间是一个点集,它的每个点可以表示为(x(1),x(2),...x(n)),其中x(i)(i=1,2...n)是实数,称为x的第i个坐标,两个点x和y=(y(1),y(2)...y(n))之间的距离d(x,y)定义为上面的公式.
    欧氏距离看作信号的相似程度。 距离越近就越相似,就越容易相互干扰,误码率就越高

    如果你感兴趣,你可以把你妹妹介绍给我
  • 相关阅读:
    Leetcode---2. Add Two Numbers
    Leetcode---1. Two Sum
    dpkg:处理 xxx (--configure)时出错解决方案
    ubuntu 14.04搭建tensorflow-gpu开发环境
    Leetcode---35. Search Insert Position
    Leetcode---21. Merge Two Sorted Lists
    Leetcode----26. Remove Duplicates from Sorted Array
    Leetcode---28. Implement strStr()
    Leetcode----27 Remove Element
    qemu 安装 ubuntu-server 虚拟机
  • 原文地址:https://www.cnblogs.com/plateFace/p/4393200.html
Copyright © 2020-2023  润新知