2013-04-02 59 views
0

我在學校學習一些關於重心座標的東西,我發現下面的代碼會計算出點是否在三角形中。但我不知道如何更改代碼,所以我可以輸入來自標準輸入的點的值。我該怎麼辦?用於計算重心座標的C#輸入矢量3

public static bool PointInTriangle(ref Vector3 A, ref Vector3 B, ref Vector3 C, ref Vector3 P) 
{ 
    // Prepare our barycentric variables 
    Vector3 u = B - A; 
    Vector3 v = C - A; 
    Vector3 w = P - A; 

    Vector3 vCrossW = Vector3.Cross(v, w); 
    Vector3 vCrossU = Vector3.Cross(v, u); 
    // Test sign of r 
    if (Vector3.Dot(vCrossW, vCrossU) < 0) 
     return false; 

    Vector3 uCrossW = Vector3.Cross(u, w); 
    Vector3 uCrossV = Vector3.Cross(u, v); 

    // Test sign of t 
    if (Vector3.Dot(uCrossW, uCrossV) < 0) 
     return false; 

    // At this piont, we know that r and t and both > 0 
    float denom = uCrossV.Length; 
    float r = vCrossW.Length/denom; 
    float t = uCrossW.Length/denom; 

    return (r <= 1 && t <= 1 && r + t <= 1); 
} 
+0

你說的「從標準輸入」是什麼意思? – Tipx

+0

從控制檯... – skywlk

+0

你的意思是「你不想用'ref'參數嗎? – Tipx

回答

0

您應該看看this Walkthrough如何創建一個簡單的應用程序。之後,你可以看看this one,它解釋瞭如何提示參數。一旦做到這一點,您可以使用調用函數:

bool isInTrigangle = MyClass.PointInTriangle(a, b, c, p); 

我寫MyClass,因爲我不知道有這個靜態方法的類的名稱。我還沒有把參數ref,因爲我以爲你改變了函數的簽名:

public static bool PointInTriangle(Vector3 A, Vector3 B, Vector3 C, Vector3 P)