Sitter med ei øving i 3D-programmering (OpenGL) og har ei problemstilling jeg ikke ser løsninga på.
Jeg har et objekt som er plassert i punktet (x, y, z) og jeg skal rotere dette objektet 45 grader rundt en akse (la oss si x-aksen, men jeg skal implementere det samme for alle 3 akser).
Jeg må vite hvor objektet befinner seg etter denne rotasjonen, med hensyn på de gamle koordinatene.
Eksempel; jeg har en kube med sentrum i (1, 1, 1) og skal rotere den 45 grader rundt x-aksen. Hva blir den nye posisjonen?
Har blitt kodeblind og Lineær Algebra-blind.
Translasjon grunnet rotasjon
Moderators: Vektormannen, espen180, Aleks855, Solar Plexsus, Gustav, Nebuchadnezzar, Janhaa
-
- Guru
- Posts: 628
- Joined: 06/08-2011 01:56
Følgende matrise utfører en rotasjon med vinkel [tex]\theta[/tex] om x-aksen. Det skulle være greit ut fra denne å finne tilsvarende matrise for y og z aksen.
[tex]\left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & \cos{\theta} & -\sin{\theta} \\ 0 & \sin{\theta} & \cos{\theta} \end{array} \right)[/tex]
[tex]\left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & \cos{\theta} & -\sin{\theta} \\ 0 & \sin{\theta} & \cos{\theta} \end{array} \right)[/tex]
-
- Euler
- Posts: 5889
- Joined: 26/09-2007 19:35
- Location: Trondheim
- Contact:
Hva vil det mer spesifikt si at du har utført rotasjonen? (Altså, har du funnet de nye koordinatene til hjørnepunktene, rotert sideflatene, eller hva?)
Elektronikk @ NTNU | nesizer
Hehe, det er litt vanskelig å forklare. Kanskje bedre om jeg viser det frem?
http://youtu.be/Rg7epygfafA
Altså trenger jeg å fortelle kuben, nå er du rotert. Du befant deg i punktet (x,y,z), men nå befinner du deg i punktet (u,v,w).
På den måten vil riktige kuber velges for rotering etter diverse andre rotasjoner har vært gjort.
Forresten, formelen trenger ikke være HELT generell. Hver rotasjonsmetode roterer kun rundt EN akse. Altså kan det greit være tre forskjellige formler; en for rotering rundt x-aksen, en for rotering rundt y-aksen osv.
http://youtu.be/Rg7epygfafA
Altså trenger jeg å fortelle kuben, nå er du rotert. Du befant deg i punktet (x,y,z), men nå befinner du deg i punktet (u,v,w).
På den måten vil riktige kuber velges for rotering etter diverse andre rotasjoner har vært gjort.
Forresten, formelen trenger ikke være HELT generell. Hver rotasjonsmetode roterer kun rundt EN akse. Altså kan det greit være tre forskjellige formler; en for rotering rundt x-aksen, en for rotering rundt y-aksen osv.
-
- Guru
- Posts: 628
- Joined: 06/08-2011 01:56
Hvis du definerer [tex]T(x)=Ax[/tex] hvor A er matrisen i forrige posten, så vil T benyttet på senteret i en av de 9 kubene i det aktuelle
området gi deg senteret for denne kuben etter rotasjonen (om x-aksen).
området gi deg senteret for denne kuben etter rotasjonen (om x-aksen).
Jeg tillater meg å innføre litt notasjon for å være i stand til å beskrive problemstillingene mer presist.
Si at den store kuben består av 3*3*3 mindre kuber med sidelengder 1, som er indeksert $a_{x,y,z}$, der $x,y,z=\{-1,0,1\}$, slik at $a_{0,0,0}$ er kuben i midten, $a_{1,y,z}$ er kubene som har positiv x-koordinat etc.
I startposisjonen vil nå kube $a_{x,y,z}$ ha sentrum i $(x,y,z)$. I tillegg må du gi hver kube to ortogonale "retningsvektorer" som entydig bestemmer hvordan kuben er rotert relativt sitt eget sentrum (og disse må oppdateres ved å bruke de rotasjonsmatrisene som brahmagupta foreslo etter hver rotasjon). På den måten kan man holde oversikt over at hver sideflate i hver kube har riktig farge etter rotasjonene.
Si at den store kuben består av 3*3*3 mindre kuber med sidelengder 1, som er indeksert $a_{x,y,z}$, der $x,y,z=\{-1,0,1\}$, slik at $a_{0,0,0}$ er kuben i midten, $a_{1,y,z}$ er kubene som har positiv x-koordinat etc.
I startposisjonen vil nå kube $a_{x,y,z}$ ha sentrum i $(x,y,z)$. I tillegg må du gi hver kube to ortogonale "retningsvektorer" som entydig bestemmer hvordan kuben er rotert relativt sitt eget sentrum (og disse må oppdateres ved å bruke de rotasjonsmatrisene som brahmagupta foreslo etter hver rotasjon). På den måten kan man holde oversikt over at hver sideflate i hver kube har riktig farge etter rotasjonene.
Kjapt, er ikke dette rotasjon i xy-planet? Altså rundt z-aksen?Brahmagupta wrote:Følgende matrise utfører en rotasjon med vinkel [tex]\theta[/tex] om x-aksen. Det skulle være greit ut fra denne å finne tilsvarende matrise for y og z aksen.
[tex]\left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & \cos{\theta} & -\sin{\theta} \\ 0 & \sin{\theta} & \cos{\theta} \end{array} \right)[/tex]
-
- Guru
- Posts: 628
- Joined: 06/08-2011 01:56
Nei, det er riktig som jeg skrev. Matrisen fikserer jo hele x-aksen!