我在学校里学到一些关于重心坐标的东西,我发现下面的代码可以计算出这个点是否在三角形中。但我无法弄清楚如何更改代码,以便我可以从标准输入中输入点的值。我该怎么办?
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 :(得分: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)