2012-03-25 13 views
7

Może brakuje mi czegoś w dokumentach, ale wydaje się, że GLM nie jest w stanie przenieść transpozycji wektora. Nie widzę również typów mat3x1 ani mat1x3. Również glm :: transpose nie działa dla wektorów. Czy brakuje mi czegoś lub czy jest to tylko cecha, której brakuje w GLM?GLM: Jak przetransponować wektor?

Odpowiedz

8

GLM jest oparty na GLSL, gdzie po prostu nie ma potrzeby transponowania wektora. Jeśli wykonasz mnożenie wektor/macierz, pomnoży on wektor w taki sposób, który działa dla rozmiaru macierzy (chyba że będzie musiał zmienić kolejność mnożenia). Więc jeśli masz mat4 i czy mat4*vec4, twój vec4 jest traktowany jako wektor kolumnowy. Jeśli robisz vec4*mat4, jest to traktowane jako wektor wiersza. Jeśli zrobisz mat2x4*vec4, pojawi się błąd, a vec4*mat2x4 działa (jako wektor wiersza).

Zasadniczo nie ma powodu, aby trzeba było "przetransponować" wektor. System po prostu robi wszystko, co działa.

+0

I widzicie, myślę, że to jest to, czego nie rozumiałem. Dziękuję Ci. – aeskreis

+0

Co jeśli chcesz obliczyć coś w rodzaju v * transpose (v) gdzie v jest vec4. W rezultacie potrzebuję mat4. To znaczy. pomnożenie 4x1 i 1x4, aby uzyskać 4x4. Nie widzę, jak to zrobić w GLM. Może nie możesz? – Chuck

+0

@ Chuck: Cóż, to prawdopodobnie dlatego, że nie jest to bardzo przydatna operacja. Poza tym możesz to łatwo zrobić dla matematyki; to tylko parowanie pomnożone przez każdy element wektora. –