Отримайте векторну довжину за допомогою GLM


14

Я дуже заплутаний у тому, як поводиться бібліотека GLM або я нею належним чином користуюся.

glm::vec2 testVec(6,-4);

float len = testVec.length();

Я отримую значення 2за вказаним вище фрагментом коду. Я вважаю, що я намагаюся визначити довжину вектора, яку визначає testVec. Ви добре знаєте, що це неправильна довжина вектора. Що я тут пропускаю?

Відповіді:


15

Вибачте, люди, які розмістили таку тривіальну проблему! Питання вирішено. Я використовував неправильну функцію. Ось правильний варіант:

glm::vec2 testVec(6,-4);
float len  = glm::length(testVec);

Одноіменна функція-член повертає замість цього кількість компонентів (тобто vec2::lengthзавжди поступатиметься 2, vec3::lengthзавжди поступатиметься 3тощо).


7
Не вибачайтеся, я думаю, що це справедливе питання, оскільки, іменування функцій GLM тут досить оманливе. Я думаю, що це може стати корисною (і стислою) довідкою в майбутньому.
Мартін Ендер

3
@MartinEnder винен не в GLM: специфікація GLSL призначає існування цієї плутанини: є length(vecN)вільна функція, що повертає норму vecNта vecN.length()метод, що повертає вимір vecN. Див. §5.5 Векторні та скалярні компоненти та довжина специфікації GLSL 4.60.
Руслан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.