Matematik
Rotation af 3D Vektor
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
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.
