Vector eindpunt berekenen in een draaiende vector.

Matrixrekenen, vectorruimten, groep-en ringstructuren, (lineaire) tranformaties.
Plaats reactie
DeadBeef
Nieuw lid
Nieuw lid
Berichten: 2
Lid geworden op: 05 jun 2014, 21:48

Vector eindpunt berekenen in een draaiende vector.

Bericht door DeadBeef » 05 jun 2014, 22:07

Hey iedereen!

ik ben een tijdje geleden eens begonnen aan een spel maken, gewoon, om te kijken hoe ver ik kom. nou ben ik op een probleem gestuit waar ik op mezelf niet uit kom en ik hoop dat jullie mij hierbij kunnen helpen.

ik heb een ruimteschipje dat een velocity vector heeft. deze word uit geoefend op de wereld as. dus om van richting te veranderen moet ik de richting van de vector aan passn, in 3 dimensies, terwijl de vector niet of nauwelijks van lengte veranderd.

in 2 assen weet ik het wel:
x = midden_x + radius * cos(hoek)
Y = midden_y + radius * sin(hoek)

de hoeken zijn dan de enige variabele die veranderd hoeft te worden om het eindpunt te veranderen, en dat is precies wat ik zoek. maar nu die z as... daar kan ik maar niet uit komen

arie
Moderator
Moderator
Berichten: 3911
Lid geworden op: 09 mei 2008, 09:19

Re: Vector eindpunt berekenen in een draaiende vector.

Bericht door arie » 05 jun 2014, 22:32

In 3 dimensies heb je de grootte van je velocity vector (= jouw radius) en twee hoeken nodig, bijvoorbeeld:
- een hoek alfa in het x-y-vlak, zoals gebruikelijk
- een hoek beta voor de z-richting.

Vergelijk met de aardbol: daar geven we elk punt op het oppervlak aan door
- de straal van de aarde (= radius)
- de lengtegraad: -180 .. 180 graden
- de breedtegraad: -90 .. 90 graden (zuidpool .. noordpool)
(x-y-vlak in vlak van de evenaar = breedtegraad 0 graden, z-as loopt door de polen, oorsprong in middelpunt van aarde)

Per tijdseenheid dat je ruimteschip beweegt moet je dan bij de z-coordinaat dz = radius * sin(beta) optellen.
De projectie van je vector op het x-y vlak is (radius * cos(beta)), en met die projectie kan je vervolgens de verandering in x- en y-richting bepalen:
dx = (radius * cos(beta)) * cos(alfa)
dy = (radius * cos(beta)) * sin(alfa)

In jouw termen:
x = midden_x + radius * cos(beta) * cos(alfa)
y = midden_y + radius * cos(beta) * sin(alfa)
z = midden_z + radius * sin(beta)

Kom je hiermee verder?

DeadBeef
Nieuw lid
Nieuw lid
Berichten: 2
Lid geworden op: 05 jun 2014, 21:48

Re: Vector eindpunt berekenen in een draaiende vector.

Bericht door DeadBeef » 06 jun 2014, 08:57

Arie, je bent 'n held! bedankt!

Plaats reactie