Ну, v.length()
на самом деле возвращает количество компонентов вектора (в данном случае: 3
), поэтому эта функция не делает то, что вы думаете, что она делает. Существует функция glm
, которая изменяет величину вектора на 1
(делая его единичным вектором). Эта операция называется нормализацией. glm::normalize
может сделать это.
Ваша функция может быть реализована так:
#include <glm/geometry.hpp>
glm::vec3 unit_vector(glm::vec3 v) {
return glm::normalize(v);
}
Или просто используйте glm::normalize
напрямую.