Выберите наименьший угол между многими векторами и моим объектом - PullRequest
1 голос
/ 12 мая 2019

У меня есть массив vector3:

Vector3[]points

У меня есть точка прицеливания, сохраненная в переменной Vector3:

Vector3 endPos

Мне нужно получить наименьший угол с точкой прицеливания средиVector3 массив и вернуть индекс vector3 с наименьшим углом.

Я думаю, как сделать это в течение нескольких часов, но я действительно не знаю, как.Я все еще новичок в этом (пожалуйста, в C #). Спасибо!

1 Ответ

1 голос
/ 12 мая 2019

Вы можете использовать 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}");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...