Как я могу получить расстояние от точки a до точки b на пользовательской (относительной) оси?

Попытка найти расстояние от точки a до точки b по заданной оси. У меня есть несколько фотографий, которые помогут мне лучше объяснить:

один

Я пытаюсь найти расстояние от красного до розового (или серого) по двум осям. Ось от красного до зеленого (ось RG) и ось от красного до синего (ось RB).

дватри

1 ответ

Решение

Вы спрашиваете о векторной проекции.

Учитывая два вектора A а также B, что такое A проецируется на B?

На этой картинке А спроецирована на Б

В твоем случае, A кажется разница между красным и розовым, где B это то, что вы называете пользовательской осью.

При расчете этого прогноза обычно используется точечный продукт. К счастью для вас, Unity обеспечивает Vector3.Dot чтобы сделать это легко.

Мы можем рассчитать проекцию как скаляр. A "это много" в направлении B:

float projScalar = Vector3.Dot(A, B.normalized);

Это дает нам длину, о которой вы спрашиваете.

При необходимости мы можем преобразовать этот результат в вектор, приведя эту длину в направлении B:

Vector3 projVector = B.normalized * projScalar;
Другие вопросы по тегам