Obtenga la longitud del vector con GLM

14

Estoy bastante confundido sobre cómo se comporta la biblioteca GLM o la estoy usando de manera incorrecta.

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

float len = testVec.length();

Obtengo el valor 2con el fragmento de código anterior. Creo que estoy tratando de obtener la longitud del vector definida por testVec. Sabes muy bien que no es la longitud correcta del vector. ¿Que me estoy perdiendo aqui?

sajis997
fuente

Respuestas:

14

Lo siento amigos por publicar un tema tan trivial! El problema está resuelto. Estaba usando la función incorrecta. Aquí va el correcto:

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

La función miembro del mismo nombre devuelve el número de componentes (es decir vec2::length, siempre cederá 2, vec3::lengthsiempre cederá 3, etc.).

sajis997
fuente
77
No te disculpes, creo que es una pregunta justa, ya que el nombramiento de funciones de GLM es bastante engañoso aquí. Espero que esto pueda ser una referencia útil (y concisa) en el futuro.
Martin Ender
2
@MartinEnder no es GLM el culpable: la especificación GLSL prescribe que existe esta confusión: hay length(vecN)una función libre que devuelve la norma vecNy el vecN.length()método, la dimensión de retorno vecN. Ver §5.5 Componentes vectoriales y escalares y longitud de la especificación GLSL 4.60.
Ruslan