Vra

Dit lyk net nie of ek dit in my kop kan uitpluis nie.Ek probeer 'n voorwerp in 3D-ruimte beweeg.

As ek 'n punt op 5,15,5 het en opengl-funksies gebruik om die modelaansig te verander ....

glTranslatef( 10.0f, 4.0f, 4.0f );
glRotatef( 33.0f, 1.0f, 0.0f, 0.0f );
glTranslatef( 10.0f, 4.0f, 4.0f );

Is daar 'n manier waarop ek kan uitvind waar daardie punt eindig (in wêreld- / globale koördinate)?Kan ek 'n soort matriksberekeninge doen wat my 20,26,23 sal teruggee (of wat elke nuwe koördinaatposisie is)?

Help asseblief, ek sit al so lank hieraan vas!

Was dit nuttig?

Oplossing

Probeer die volgende:

1) Druk die huidige matriks in stapel; 2) load identiteit en toe te pas jou transformasies; 3) Kry die gevolglike transformasie matriks in sommige temp veranderlike. glGet of iets soos dit sal help; 4) Pop die matriks van die stapel

Nou het jy jou transformasie matriks. Vermeerder jou punt deur hierdie matriks te koördineer die punt se voorspel na die transformasie.

Ander wenke

Beslis:uitteken http://research.cs.queensu.ca/~jstewart/454/notes/pipeline/

Kortom, al hierdie oproepe verminder tot 'n enkele matriks, wat tot op die punt vermenigvuldig word.

SadSido se metode sal beslis vir jou die resulterende matriks gee, maar dit sal dalk nie skade doen om werklik te verstaan ​​wat agter die skerms aangaan nie.Die berekeninge hierbo sal lei tot 'n lineêre algebravergelyking van die volgende:

pOut = [mTranslate] * [mRotate] * [mTranslate] * pIn

waar mTranslate = die translasieoproepe (matriks vir translasie), en mRotate = roteeroproep (matriks vir rotasie om 'n arbitrêre as).Bereken dit, en jy is goed om te gaan!

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top