Есть ли функция для расчета этого единичного вектора в glm? - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть следующая функция в C ++ для вычисления единичного вектора:

glm::vec3 unit_vector(glm::vec3 v) {
    return v / (float)v.length();
}

Есть ли эквивалент GLM, который я могу использовать?

1 Ответ

0 голосов
/ 01 ноября 2018

Ну, v.length() на самом деле возвращает количество компонентов вектора (в данном случае: 3), поэтому эта функция не делает то, что вы думаете, что она делает. Существует функция glm, которая изменяет величину вектора на 1 (делая его единичным вектором). Эта операция называется нормализацией. glm::normalize может сделать это.

Ваша функция может быть реализована так:

#include <glm/geometry.hpp>

glm::vec3 unit_vector(glm::vec3 v) {
    return glm::normalize(v);
}

Или просто используйте glm::normalize напрямую.

...