Coordinaten berekenen

Moderators: dirkwb, Xilvo

Berichten: 7

Coordinaten berekenen

Hallo iedereen, ik zit met een probleempje. voor in een internetspel (dat onder ontwikkeling is) moeten we de coordinaten berekenen van een 'ruimteschip' dat op weg is naar een ander punt, en dit in rechte lijn.

We weten op een moment t hoe ver hij is van het beginpunt, maar we zouden de coordinaten moeten kennen.

Volgende afbeelding verduidelijkt alles

Afbeelding

Zou iemand me kunnen uitleggen hoe ik dit bereken? ik ben er al even op aan het zoeken, maar ik vind het niet echt.

Alvast bedankt

Tokesnugerd

Berichten: 2.746

Re: Coordinaten berekenen

het kan misschien simpeler, maar dit is hoe ik het zou doen.

maak een rechthoekige driehoek met rechten evenwijdige aan x en y-as en je gegeven rechte is de schuine zijde.

de linker scherpe hoek van je driehoek = arctan(a)

Ox=Ax+|AO|.cos(arctan(a))

Oy=Ay+|AO|.sin(arctan(a))

test eens uit of het zo werkt

Berichten: 2.746

Re: Coordinaten berekenen

en je bent de 10 000e geregistreerde :D

Berichten: 481

Re: Coordinaten berekenen

Hmm, waarom doe je het niet als volgt?:

Je berekent eerst de snelheid in x en y richting..

( De beginsnelheid * cos(hoek) = snelheid in x -richting)

Dan is de x coordinaat tijdseenheid*snelheid in x-richting

en ongeveer hetzelfde voor de y-richting
Procrastination is like masturbation; it's all fun and games till you realize you just **** urself..

Correct me if I'm wrong.

Berichten: 7

Re: Coordinaten berekenen

en je bent de 10 000e geregistreerde :D
En.. waar zie je dat ? :D

jullie spreken hier over alpha, hoe bepaal ik deze hoek? want dan heb je toch nog 2 lijnstukken nodig...

Alvast bedankt voor jullie reactie !

Berichten: 1.007

Re: Coordinaten berekenen

die hoek is gelijk aan
\(arctan \left( \frac{y_{A}-y_{B}}{x_{A}-x_{B}} \right)\)


arctan is de inverse tangens.

Berichten: 7

Re: Coordinaten berekenen

We hebben alle mogelijkheden hierboven gebruikt, de bovenste 2 geven trouwens net hetzelfde resultaat, maar het is nog niet correct...

Nu dat we de hoek a kunnen berekenen, kan je eigenlijk gewoon de regeltjes CAS en SOS toepassen (zie afbeelding)

Je hebt dan het verschil in coordinaten, dan is het nog kwestie van optellen of aftrekken (kijken waar de tekens veranderd moeten worden). Ik hoop dat jullie dit kunnen bevestigen.

Toch bedankt voor de antwoorden, het heeft ons geholpen in de 'denkwijze' :D

Afbeelding

Berichten: 7

Re: Coordinaten berekenen

Ik mocht mijn bericht niet wijzigen, maar in dit gevaal zou

Xo = Xa + Aanliggendrechthoekszijde

Yo = Ya + Overstaandrechthoekszijde

Klopt dit in alle gevallen ? en welke hoek is alpha als je de punten A en O omwisselt ? (de hoek tussen de stippellijn en de rechte die nu Overstaanderechthoekszijde voorstelt ?)

Berichten: 1.007

Re: Coordinaten berekenen

tokesnugerd schreef:Ik mocht mijn bericht niet wijzigen, maar in dit gevaal zou

Xo = Xa + Aanliggendrechthoekszijde

Yo = Ya + Overstaandrechthoekszijde

Klopt dit in alle gevallen ?
Dit klopt als O rechts ligt van A en de x-as naar rechts wijst en de y-as naar beneden wijst.
en welke hoek is alpha als je de punten A en O omwisselt ? (de hoek tussen de stippellijn en de rechte die nu Overstaanderechthoekszijde voorstelt ?)
Hoek blijft hetzelfde. Alleen de plusjes in je vergelijkingen worden minnetjes. De hoek die ik gaf was trouwens de hoek tussen de horizontaal en de stippellijn met als aanname dat de y-as omhoog lag.

Berichten: 7

Re: Coordinaten berekenen

Nog maar weer eens een nieuwe reply (ik kan mijn posts nooit editten) Het valt me op dat ik eigenlijk net hetzelfde zeg als jullie :D

Ik ga het nu eens volledig uitschrijven (1 grote formule)

Afbeelding

Klopt deze een beetje ?
Sjakko schreef:Dit klopt als O rechts ligt van A en de x-as naar rechts wijst en de y-as naar beneden wijst.

Hoek blijft hetzelfde. Alleen de plusjes in je vergelijkingen worden minnetjes. De hoek die ik gaf was trouwens de hoek tussen de horizontaal en de stippellijn met als aanname dat de y-as omhoog lag.
Je zou die afbeelding zo in een assenstelsel kunnen steken -> de X-as is een horizontale rechte en de Y-as is de verticale.

En welke formule moet je dan gebruiken als O links ligt van A (en wat als O boven A ligt ?) -> een ruimteschip kan in elke richting reizen (2 dimensies hier) Dus we zijn op zoek naar een algemene formule (of meerdere formules; met een beetje programmeren kan je dan bepalen welke formule nodig is)

Bedankt

Berichten: 1.007

Re: Coordinaten berekenen

Je hoek klopt niet. Aangezien jij de y-as met de positieve richting naar beneden neemt, moet je hoek worden:
\(arctan \left( \frac{y_{B}-y_{A}}{x_{A}-x_{B}} \right)\)

Berichten: 1.007

Re: Coordinaten berekenen

Het wordt een beetje een chaos zo. Bepaal eerst hoe je assen komen te liggen. Dat bepaalt de minnetjes en plusjes in je formules. De manier van superslayer kan ook, maar het probleem is dat de arctan niet altijd de hoek geeft die je wilt (je kunt er k*180graden naast zitten). Voor de hoek tussen horizontaal en stippellijn zou ik zorgen dat die tussen 0 en 90 graden ligt. Dat doe je met de absolute waarde.
\(hoek=arctan \left( abs \left( \frac{y_{A}-y_{B}}{x_{A}-x_{B}} \right) \right)\)
Stel de y-as ligt van beneden naar boven en de x-as ligt van links naar rechts, dan:

Voor x geldt:

als
\(x_{B}>x_{A}\)
: (ofwel B ligt rechts van A)
\(x_{O}=x_{A}+rcos \theta\)
als
\(x_{B}<x_{A}\)
: (ofwel B ligt links van A)
\(x_{O}=x_{A}-rcos \theta\)
Voor y geldt:

als
\(y_{B}>y_{A}\)
: (ofwel B ligt hoger dan A)
\(y_{O}=y_{A}+rsin \theta\)
als
\(y_{B}<y_{A}\)
: (ofwel B ligt lager dan A)
\(y_{O}=y_{A}-rsin \theta\)
r=schuinezijde en
\(\theta\)
=hoek

Als jouw assen in een andere richting liggen, dan beïnvloedt dat die minnetjes en plusjes.

Re: Coordinaten berekenen

(ik ben de programmeur van het spel)

Het nulpunt van het assenstelsel staat links boven, dus we zitten in kwadrant IV (als ik me dit goed herinner).

Ik heb een test gemaakt om de formules te testen, maar 'het schip' komt te vroeg aan.

Code: Selecteer alles

Start: (24, 36)

End: (84, 93)

Dist: 82.7586853448

Speed: 5

ETA: 16.551737069

Tick 0 » Angle 43.5311992856° » (28, 39)

Tick 1 » Angle 43.958373324° » (32, 42)

Tick 2 » Angle 44.4437477729° » (36, 46)

Tick 3 » Angle 44.3969088056° » (40, 49)

Tick 4 » Angle 45° » (44, 53)

Tick 5 » Angle 45° » (48, 57)

Tick 6 » Angle 45° » (52, 61)

Tick 7 » Angle 45° » (56, 65)

Tick 8 » Angle 45° » (60, 69)

Tick 9 » Angle 45° » (64, 73)

Tick 10 » Angle 45° » (68, 77)

Tick 11 » Angle 45° » (72, 81)

Tick 12 » Angle 45° » (76, 85)

Tick 13 » Angle 45° » (80, 89)

Tick 14 » Angle 45° » (84, 93)

Tick 15 » Angle 0° » (84, 93)

Tick 16 » Angle 0° » (84, 93)
De afstand (dist) is berekend met de stelling van pythagoras als volgt:
\(\sqrt \left( \left( x_{A} - x_{B} \right) + \left( y_{A} - y_{B} \right) \right)\)
En de geschatte tijd (ETA) is deze afstand gedeeld door de snelheid.

Berichten: 2.746

Re: Coordinaten berekenen

\(\sqrt \left( \left( x_{A} - x_{B} \right) + \left( y_{A} - y_{B} \right) \right)\)
maak daar eens
\(\sqrt \left( \left( x_{A} - x_{B} \right)^2 + \left( y_{A} - y_{B} \right)^2 \right)\)
van.

dat leek me op het eerste zich al niet te kloppen.

test het eens en laat het weten.

Re: Coordinaten berekenen

Sorry, dat was een fout in de post (ik heb LaTeX nog niet veel gebruikt).

Nuja, ik heb het een beetje anders moeten doen, en heb Sjakko's post gevolgd (#12). Dit werkt in de meeste gevallen, maar niet als (in zijn formule) r gelijk is aan 1. Dit is redelijk irritant, omdat mijn spel een snelheid toelaat van 1 tot 5.

Ik kan de PHP code posten als dat makkelijker is.

Reageer