zoukankan      html  css  js  c++  java
  • 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)定义为上面的公式.
    欧氏距离看作信号的相似程度。 距离越近就越相似,就越容易相互干扰,误码率就越高

    如果你感兴趣,你可以把你妹妹介绍给我
  • 相关阅读:
    对于Dubbo一些面试题自己的答案
    序列化和反序列化的简单理解
    学习Spring-Session+Redis实现session共享
    Java中的String,StringBuilder,StringBuffer三者的区别
    个人对数据结构的理解和总结
    LeetCode 101. Symmetric Tree
    LeetCode 100. Same Tree
    LeetCode 88. Merge Sorted Array
    LeetCode 83. Remove Duplicates from Sorted List
    LeetCode 70. Climbing Stairs
  • 原文地址:https://www.cnblogs.com/plateFace/p/4393200.html
Copyright © 2011-2022 走看看