2012-03-25 16 views
7

Forse mi manca qualcosa nei documenti, ma sembra che GLM non possa prendere la trasposizione di un vettore. Vedo anche nessun tipo mat3x1 o mat1x3. Anche glm :: transpose non funziona per i vettori. Mi sto perdendo qualcosa o questa è solo una caratteristica priva di GLM?GLM: come trasporre un vettore?

risposta

8

GLM è basato su GLSL, dove semplicemente non è necessario trasporre un vettore. Se fai la moltiplicazione vettoriale/matrice, moltiplica il vettore nel modo in cui funziona per la dimensione della matrice (a meno che non debba cambiare l'ordine della moltiplicazione). Quindi se hai un mat4 e fai mat4*vec4, il tuo vec4 è considerato un vettore di colonna. Se lo fai, vec4*mat4, è considerato un vettore di riga. Se si fa mat2x4*vec4, si ottiene un errore, mentre vec4*mat2x4 funziona (come vettore riga).

Quindi, in generale, non c'è motivo di aver bisogno di "trasporre" un vettore. Il sistema fa semplicemente tutto ciò che funziona.

+0

I vedi, penso che sia quello che non stavo capendo. Grazie. – aeskreis

+0

E se si desidera calcolare qualcosa come v * transpose (v) dove v è un vec4. Quello che voglio è un mat4 come risultato. Cioè moltiplicando un 4x1 e un 1x4 per ottenere un 4x4. Non vedo come farlo in GLM. Forse non puoi? – Chuck

+0

@Chuck: Beh, probabilmente è perché non è un'operazione molto utile. Inoltre, puoi fare la matematica da solo abbastanza facilmente; è solo a coppie moltiplicando ogni elemento del vettore. –