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?

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.).


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.