Ottieni lunghezza vettoriale con GLM


14

Sono piuttosto confuso su come si comporta la libreria GLM o la sto usando in modo improprio.

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

float len = testVec.length();

Ottengo il valore 2con lo snippet di codice sopra riportato. Credo che sto cercando di ottenere la lunghezza del vettore definita da testVec. Sai benissimo che non è la lunghezza corretta del vettore. Cosa mi sto perdendo qui?

Risposte:


14

Mi dispiace gente per aver pubblicato un problema così banale! Il problema è stato risolto Stavo usando la funzione sbagliata. Ecco quello corretto:

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

La funzione membro con lo stesso nome restituisce invece il numero di componenti (ovvero vec2::lengthprodurrà sempre 2, vec3::lengthprodurrà sempre 3, ecc.).


7
Non scusarti, penso che sia una domanda equa, visto che la denominazione delle funzioni di GLM è abbastanza fuorviante qui. Mi aspetto che questo potrebbe essere un riferimento utile (e conciso) in futuro.
Martin Ender

2
@MartinEnder non è colpevole di GLM: la specifica GLSL prescrive che questa confusione esiste: esiste una length(vecN)funzione libera che restituisce la norma vecNe il vecN.length()metodo, che restituisce la dimensione di vecN. Vedere §5.5 Componenti vettoriali e scalari e lunghezza delle specifiche GLSL 4.60.
Ruslan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.