【发布时间】:2020-12-24 00:53:16
【问题描述】:
我在 Unity 项目中使用了这个角度函数,但它偶尔会返回 NaN,我不明白为什么。我从网上复制了这段代码,所以我不完全理解它是如何工作的
public static float Angle(Vector3 vec1, Vector3 angleVec, Vector3 vec2)
{
float lengthA = Mathf.Sqrt(Mathf.Pow(angleVec.x - vec1.x, 2) + Mathf.Pow(angleVec.y - vec1.y, 2));
float lengthB = Mathf.Sqrt(Mathf.Pow(vec2.x - angleVec.x, 2) + Mathf.Pow(vec2.y - angleVec.y, 2));
float lengthC = Mathf.Sqrt(Mathf.Pow(vec2.x - vec1.x, 2) + Mathf.Pow(vec2.y - vec1.y, 2));
float calc = ((lengthA * lengthA) + (lengthB * lengthB) - (lengthC * lengthC)) / (2 * lengthA * lengthB);
float returnAngle = Mathf.Acos(calc) * Mathf.Rad2Deg;
if (System.Single.IsNaN(returnAngle))
{
Debug.LogError("NAN");
}
return returnAngle;
}
谁能帮我修复这个代码
【问题讨论】:
-
反余弦未定义某些值。见here。
-
@PranavHosangadi:是的,这在我链接的文章中有解释。
标签: c# function unity3d nan angle