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)定義為上面的公式.
歐氏距離看作信號的相似程度。 距離越近就越相似,就越容易相互干擾,誤碼率就越高


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM