Holen Sie sich Vektorlänge mit GLM


14

Ich bin ziemlich verwirrt darüber, wie sich die GLM-Bibliothek verhält oder wie ich sie missbräuchlich verwende.

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

float len = testVec.length();

Ich erhalte den Wert 2mit dem obigen Code-Schnipsel. Ich glaube, ich versuche, die Länge des durch definierten Vektors zu ermitteln testVec. Sie wissen sehr gut, dass es nicht die richtige Länge des Vektors ist. Was vermisse ich hier?

Antworten:


14

Tut mir leid, Leute, die so ein kleines Problem gepostet haben! Das Problem ist gelöst. Ich habe die falsche Funktion verwendet. Hier geht die richtige:

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

Die Elementfunktion mit dem gleichen Namen gibt die Anzahl der Komponenten statt (dh vec2::lengthimmer ergibt 2, vec3::lengthwird immer ergeben 3, etc.).


7
Entschuldigen Sie sich nicht, ich denke, es ist eine faire Frage, da die Funktionsbezeichnung von GLM hier ziemlich irreführend ist. Ich gehe davon aus, dass dies in Zukunft eine nützliche (und präzise) Referenz sein könnte.
Martin Ender

2
@MartinEnder es ist nicht GLM, der schuldig ist: Die GLSL-Spezifikation schreibt vor, dass diese Verwirrung existiert: Es gibt eine length(vecN)freie Funktion, die die Norm vecNund vecN.length()Methode zurückgibt , die Dimension von zurückgibt vecN. Siehe §5.5 Vektor- und Skalarkomponenten und Länge der GLSL 4.60-Spezifikation.
Ruslan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.