Matematik

Rotation af 3D Vektor

29. april 2009 af kennethkryger (Slettet)

Hej,

Til et IT-udviklingsprojekt har jeg nogle forskellige komponenter, som repræsenterer cylinderer, bøjninger, knæk osv i et 3D koordinatsystem (højrestillet - dvs Z-aksen peger "ind mod en selv eller væk fra din skærm"). Hver komponent har et start- og et slukpunkt.

Hver start- og slukpunkt har følgende egenskaber:
- Position (X, Y, Z): Beskriver punktets placering
- X-akse (X, Y, Z): Beskriver retningen for x-aksen på punktet
- Y-akse (X, Y, Z): Beskriver retningen for y-aksen på punktet
- Z-akse (X, Y, Z): Beskriver retningen for z-aksen på punktet

Hvis jeg fx har en komponent (A), som er en 90° bøjning, vil den have følgende værdier for start- og slutpunkterne:

Startpunkt:
- Position = 0, 0, 0
- X-akse = 1, 0, 0 (peger mod højre)
- Y-akse = 0, 1, 0 (peger opad)
- Z-akse = 0, 0, 1 (peger væk fra skærmen)

Endpoint:
- Position = 15, 0, 15
- X-akse = 0, 0, 1 (peger væk fra skærmen)
- Y-akse = 0, 1, 0 (peger opad)
- Z-akse = -1, 0, 0 (peger mod venstre)

Hvis jeg tilføjet endnu en 90° bøjning (B) til koordinatsystemet på position (30, 0, 30) så får akserne i start- og slutpunkterne samme værdier som ovenfor, mens positionerne bliver:
Startpunkt = 30, 0, 30
Slutpunkt = 45, 0, 45

Komponenterne kan "kobles" sammen via start- og slutpunkter. Det betyder, at hvis komponent B kobles på komponent A, så får komponent B følgende værdier, hvor komponent B er roteret, således, at startpunktet på B peger i samme retning som slutpunktet for komponent A:

Startpunkt:
- Position = 15, 0, 15
- X-akse = 0, 0, 1
- Y-akse = 0, 1, 0
- Z-akse = -1, 0, 0

Slutpunkt:
- Position = 0, 0, 30
- X-akse = -1, 0, 0
- Y-akse = 0, 1, 0
- Z-akse = 0, 0, -1

Jeg er ikke helt sikker på, hvordan dette beregnes, men da dette er et IT-udviklingsprojekt, har jeg nogle funktioner tilgængelig, som forhåbentlig gør det nemmere, fx. kan jeg spørge efter viklen mellem to vektorer, deres krydsprodukt, prikprodukt osv.

Mit problemer er, at jeg ikke helt ved hvad jeg bruge?

Ydermere, er der lige en sidste detaljer, som måske gør tingene lidt mere kompliseret? Komponenterne skal roteres omkring X-aksen på deres start-punkt.
Det betyder, at hvis jeg roterer komponent B 90° om sit startpunkts X-akse, så får den følgende værdier:

Startpunkt:
- Position = 15, 0, 15
- X-akse = 0, 0, 1
- Y-akse = -1, 0, 0
- Z-akse = 0, -1, 0

Slutpunkt:
- Position = 15, -15, 30
- X-akse = 0, -1, 0
- Y-akse = -1, 0, 0
- Z-akse = 0, 0, -1

Forslag, kommentarer eller links til steder for jeg kan blive klogere modtages med kyshånd!

Mvh
Kenneth


Brugbart svar (0)

Svar #1
29. april 2009 af peter lind

Her er lidt om drejninger i 3D

Vedhæftet fil:drejningera.pdf

Skriv et svar til: Rotation af 3D Vektor

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.