Vragen over matrices

Moderators: dirkwb, Xilvo

Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
Reageer
Berichten: 18

Vragen over matrices

Hoi wiskunde-experts :)

Ik ben bezig met het programmeren van een game-engine en matrices (transformaties) zijn daarbij van groot belang.

Ik gebruik 4x4 matrices voor mijn transformaties. Meer info:

Matrices in Direct3d

1. Is het zo dat de eerste 3 velden van de 3 bovenste rijen van een matrix de basisvectoren voor het nieuwe coordinatenstelsel vormen. b.v:

[Xbase.X,Xbase.Y,Xbase.Z,0]

[Xbase.X,Xbase.Y,Xbase.Z,0]

[Xbase.X,Xbase.Y,Xbase.Z,0]

[0 ,0 ,0 ,1]

2. Hoe kan ik de rotatie uit een matrix verwijderen??

Een manier die ik zelf bedacht heb:

Je haalt de translatie uit de matrix... voorbeeld:

[1 ,0 ,0 ,0]

[0 ,1 ,0 ,0]

[0 ,0 ,1 ,0]

[TransX,TransY,TransZ,1]

Vervolgens haal je de basisvectoren uit de matrix (zoals hierboven).

Bereken de lengte van elke basisvector en noem de lengtes (ScaleX,ScaleY,ScaleZ).

Vervolgens maak je een nieuwe matrix die er als volgd uit ziet.

[ScaleX,0 ,0 ,0]

[0 ,ScaleY,0 ,0]

[0 ,0 ,ScaleZ ,0]

[TransX,TransY,TransZ,1]

Is dit een goede aanpak..??? :)

Alvast bedankt :)

Berichten: 2.746

Re: Vragen over matrices

2. Hoe kan ik de rotatie uit een matrix verwijderen??
wat bedoel je daar precies mee?

Gebruikersavatar
Berichten: 6.905

Re: Vragen over matrices

1. Is het zo dat de eerste 3 velden van de 3 bovenste rijen van een matrix de basisvectoren voor het nieuwe coordinatenstelsel vormen. b.v:
dat moeten al zeker de kolommen zijn als ik mij niet vergis (wiskundig gezien)

mss niet bij de directx library

Berichten: 18

Re: Vragen over matrices

Oke... over hoe het zit met die basisvectoren, zal ik op een DirectX forum wel eens vragen. Mocht iemand het hier toevallig weten dan hoor ik het graag.

Met de rotatie verwijderen bedoel ik dat de matrix geen rotatie meer bevat, dus dat na de transformatie de assen niet gedraaid zijn, hooguit verplaatst of geschaalt. :)

Berichten: 2.746

Re: Vragen over matrices

Met de rotatie verwijderen bedoel ik dat de matrix geen rotatie meer bevat, dus dat na de transformatie de assen niet gedraaid zijn, hooguit verplaatst of geschaalt. :)
ik snap het nog altijd niet goed, maar het kan ook aan mij liggen.

ofwel wordt er geroteerd, door te vermenigvuldigen met een matrix, ofwel niet, en een poging; als je een geroteerde basis wil terug roteren, verminigvuldig je met de inverse van de rotatiematrix.

Gebruikersavatar
Berichten: 2.906

Re: Vragen over matrices

Met de rotatie verwijderen bedoel ik dat de matrix geen rotatie meer bevat, dus dat na de transformatie de assen niet gedraaid zijn, hooguit verplaatst of geschaalt. :)
Je bedoelt gewoon een diagonaalmatrix?
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Berichten: 18

Re: Vragen over matrices

ik snap het nog altijd niet goed, maar het kan ook aan mij liggen.

ofwel wordt er geroteerd, door te vermenigvuldigen met een matrix, ofwel niet, en een poging; als je een geroteerde basis wil terug roteren, verminigvuldig je met de inverse van de rotatiematrix.
Yep dat bedoel ik :) ... Het probleem is dat ik geen losse matrix heb die ALLEEN de rotatie bevat. Ik heb dus een soort samengestelde matrix waar ik de rotatie uit wil hebben zodat alleen translatie en schaalgegevens o.i.d overblijven in de matrix.

Je hebt ook deze functie in Direct3d9:

D3DXMatrixDecompose

Deze word gebruikt om de translatie, rotatie en schaalgegevens uit een matrix te halen. Ik zou graag de translatie en schaalgegevens willen hebben en hier een nieuwe matrix van willen bouwen.

Helaas werk ik momenteel met DirectX8 en deze bevat deze functie niet tot zover ik weet :)

P.S:
Je bedoelt gewoon een diagonaalmatrix?
Ik heb geen idee wat een diagonaalmatrix is... zou je dat willen uitleggen?? :)

Berichten: 2.746

Re: Vragen over matrices

een rotatie rond de x-as krijg je met deze matrix:
\( \mbox{} \left[ \begin{array}{cols} 1 & 0 & 0 & 0 0 & \cos \theta & - \sin \theta & 0 0 & \sin \theta & \cos \theta & 0 0 & 0 & 0 & 1 \end{array} \right]\)
met theta de draaihoek in tegenwijzerzin.

je zal deze of zn inverse nodig hebben

Reageer