Pagina 1 van 1

Vector eindpunt berekenen in een draaiende vector.

Geplaatst: 05 jun 2014, 22:07
door DeadBeef
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

Re: Vector eindpunt berekenen in een draaiende vector.

Geplaatst: 05 jun 2014, 22:32
door arie
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?

Re: Vector eindpunt berekenen in een draaiende vector.

Geplaatst: 06 jun 2014, 08:57
door DeadBeef
Arie, je bent 'n held! bedankt!