Vragen over matrices
Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
-
- 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
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
wat bedoel je daar precies mee?2. Hoe kan ik de rotatie uit een matrix verwijderen??
- Berichten: 6.905
Re: Vragen over matrices
dat moeten al zeker de kolommen zijn als ik mij niet vergis (wiskundig gezien)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:
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.
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
ik snap het nog altijd niet goed, maar het kan ook aan mij liggen.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.
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.
- Berichten: 2.906
Re: Vragen over matrices
Je bedoelt gewoon een diagonaalmatrix?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.
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }
-
- Berichten: 18
Re: Vragen over matrices
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.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.
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:
Ik heb geen idee wat een diagonaalmatrix is... zou je dat willen uitleggen??Je bedoelt gewoon een diagonaalmatrix?
-
- Berichten: 2.746
Re: Vragen over matrices
een rotatie rond de x-as krijg je met deze matrix:
je zal deze of zn inverse nodig hebben
\( \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