Voor een programeeropdracht heb ik twee objecten die beide x en y coordinaten bevatten.
Nu is het de bedoeling om van object A naar object B te gaan met een snelheid X.
Hoe bereken ik dit?
Object van punt x,y naar andere x,y met snelheid
Re: Object van punt x,y naar andere x,y met snelheid
Kijk eerst eens naar een voorbeeld:
Kies de (pixel-)coordinaten van A = (80, 300) en B = (320, 100).
Je wil van A naar B met snelheid 10 pixels per cyclus (bv per seconden).
Nu wil je weten hoeveel je per cyclus bij je x- en y-coordinaat moet optellen.
Noem deze getallen dx en dy.
Dan moet volgens de stelling van Pythagoras gelden:
dx^2 + dy^2 = 10^2.
Verder weet je dat je snelheid van A naar B gericht is, dus:
dx/dy = 240/(-200) = -1.2
ofwel
dx = -1.2*dy
Samen levert dit op:
(-1.2*dy)^2 + dy^2 = 10^2.
2.44*dy^2 = 100
dy^2 = 40.9836...
dy = -6.4018... (dy is negatief want y moet kleiner worden)
waardoor
dx = (-1.2)*dy = 7.6822..
Werk bovenstaande uit met variabelen i.p.v. (voorbeeld-)getallen.
Je programma komt er dan globaal zo uit te zien:
[1] bereken dx en dy
[2] maak je beginpunt gelijk aan A
[3] zolang je niet in of voorbij B bent:
[3a] tel dx op bij je x-coordinaat
[3b] tel dy op bij je y-coordinaat
[3c] voer zo nodig andere acties uit (bv: plot de huidige positie op het beelscherm)
Noot:
1. het is het handigst als je blijft werken met reele waarden (real / double of iets dergelijks) die je zo nodig steeds kan converteren naar gehele waarden (int, integer etc).
2. let wel op uitzonderingssituaties: wanneer zal je door nul delen? Hoe los je dat op?
Kom je hiermee verder?
Kies de (pixel-)coordinaten van A = (80, 300) en B = (320, 100).
Je wil van A naar B met snelheid 10 pixels per cyclus (bv per seconden).
Nu wil je weten hoeveel je per cyclus bij je x- en y-coordinaat moet optellen.
Noem deze getallen dx en dy.
Dan moet volgens de stelling van Pythagoras gelden:
dx^2 + dy^2 = 10^2.
Verder weet je dat je snelheid van A naar B gericht is, dus:
dx/dy = 240/(-200) = -1.2
ofwel
dx = -1.2*dy
Samen levert dit op:
(-1.2*dy)^2 + dy^2 = 10^2.
2.44*dy^2 = 100
dy^2 = 40.9836...
dy = -6.4018... (dy is negatief want y moet kleiner worden)
waardoor
dx = (-1.2)*dy = 7.6822..
Werk bovenstaande uit met variabelen i.p.v. (voorbeeld-)getallen.
Je programma komt er dan globaal zo uit te zien:
[1] bereken dx en dy
[2] maak je beginpunt gelijk aan A
[3] zolang je niet in of voorbij B bent:
[3a] tel dx op bij je x-coordinaat
[3b] tel dy op bij je y-coordinaat
[3c] voer zo nodig andere acties uit (bv: plot de huidige positie op het beelscherm)
Noot:
1. het is het handigst als je blijft werken met reele waarden (real / double of iets dergelijks) die je zo nodig steeds kan converteren naar gehele waarden (int, integer etc).
2. let wel op uitzonderingssituaties: wanneer zal je door nul delen? Hoe los je dat op?
Kom je hiermee verder?
Re: Object van punt x,y naar andere x,y met snelheid
Bedankt voor je uitgebreide antwoord, het word al een stuk duidelijker. Alleen snap ik hier niet hoe je aan de getallen 240 /(-200) komt?arie schreef:Kijk eerst eens naar een voorbeeld:
Verder weet je dat je snelheid van A naar B gericht is, dus:
dx/dy = 240/(-200) = -1.2
ofwel
dx = -1.2*dy
Re: Object van punt x,y naar andere x,y met snelheid
In dit voorbeeld hebben we A = (80, 300) en B = (320, 100) gekozen.
Als je van A naar B gaat, moet de x-coordinaat dus van 80 naar 320 gaan, ofwel: met 320 - 80 = 240 toenemen.
De y-coordinaat gaat van 300 naar 100, dus moet met 200 afnemen = met (-200) toenemen.
Elke stap van de verplaatsing in je programma moet je dan in die zelfde richting gaan: dus
(de horizontale stapafstand) staat tot (de verticale stapafstand) = 240 staat tot (-200)
ofwel
dx : dy = 240 : -200
ofwel
dx/dy = 200/(-200)
Kom je hiermee verder?
Als je van A naar B gaat, moet de x-coordinaat dus van 80 naar 320 gaan, ofwel: met 320 - 80 = 240 toenemen.
De y-coordinaat gaat van 300 naar 100, dus moet met 200 afnemen = met (-200) toenemen.
Elke stap van de verplaatsing in je programma moet je dan in die zelfde richting gaan: dus
(de horizontale stapafstand) staat tot (de verticale stapafstand) = 240 staat tot (-200)
ofwel
dx : dy = 240 : -200
ofwel
dx/dy = 200/(-200)
Kom je hiermee verder?
Re: Object van punt x,y naar andere x,y met snelheid
Oke, ja ik snap het! Heb het werkend