我有一个vector3数组:
Vector3[]points
我已经将目标位置存储在Vector3变量中:
Vector3 endPos
我需要获得Vector3数组中与目标点最小的角度,并返回具有最小角度的vector3的索引。
我正在考虑如何做几个小时,但我真的不知道怎么做。我仍然是一个新人(请使用C#)。谢谢!
答案 0 :(得分:1)
您可以使用Vector3.Angle()
来获取两个Vector3
之间的夹角,并在您的点上进行迭代,并将最小度及其索引存储在临时变量中。
像这样:
Vector3 endPos;
Vector3[] points;
private void SmallestAngle()
{
if(points.Length <2)
{
Debug.LogError("There should be more than two points!");
return;
}
float deg = float.PositiveInfinity;
int index = 0;
for (int i = 0; i < points.Length; i++)
{
float d = Vector3.Angle(points[i], endPos);
if (d < deg)
{
deg = d;
index = i;
}
}
Debug.Log($"Smallest angle = {deg} / Index = {index}");
}