Блог программиста
Математика Unity (Урок 16). Vector Переменные.
03.10.2013Математика Unity

Компоненты

Значение компонентов вектора можно получить двумя способами.
Первый способ — через переменные компонентов.
Пример:
Vector3 v = new Vector3(1, 2, 3);
//Получаем значение компонента x
float x = v.x;

Второй способ — через массив компонентов.
Пример:
Vector3 v = new Vector3(1, 2, 3);
//Получаем значение компонента y (скобки кадратные)
float y = v[1];

Индексы компонентов: 0 — x, 1 – y, 2 – z, 3 – w.

Нормализованный вектор

Вектор, который имеет тоже направление, что и исходный, но его длина равна 1.
Пример:
//Вектор с компонентами 4, 3, 0. Длина = 5.
Vector3 vect = new Vector3(4, 3, 0);
//Нормализованный вектор с компонентами 4/5, 3/5, 0. Длина = 1.
Vector3 normVect = vect.normalized;

Длина вектора

Получить можно через переменную «magnitude».
Пример:
//Вектор, длину которого надо узнать
Vector3 vect = new Vector3(3, 0, 4);
//Получаем длину вектора, 5
float len = vect.magnitude;

Также есть функция для получения квадрата длины:
Пример:
//Вектор, длину которого надо узнать
Vector3 vect = new Vector3(3, 0, 4);
//Получаем квадрат длины вектора, 25
float sqrLen = vect.sqrMagnitude;

Для сравнения длин векторов советую использовать именно квадрат длины.
Почему?
Длина вектора — это корень квадратный из суммы квадратов его компонентов.
Квадрата длины — это сумма квадратов компонентов.
Во втором случае операций на одну меньше, а следовательно тратиться меньше времени. Это и без тестов понятно.
К тому же операция извлечения корня не быстрая. А оптимизация будет не лишней.
Если вы мне не верите, можете провести тест и убедиться.

На этом всё.

27811