Springen naar inhoud

Coordinaten berekenen


  • Log in om te kunnen reageren

#1

tokesnugerd

    tokesnugerd


  • 0 - 25 berichten
  • 7 berichten
  • Gebruiker

Geplaatst op 03 juli 2007 - 01:14

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
Geplaatste 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

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

stoker

    stoker


  • >1k berichten
  • 2746 berichten
  • Ervaren gebruiker

Geplaatst op 03 juli 2007 - 08:56

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

#3

stoker

    stoker


  • >1k berichten
  • 2746 berichten
  • Ervaren gebruiker

Geplaatst op 03 juli 2007 - 10:13

en je bent de 10 000e geregistreerde :D

#4

Heezen

    Heezen


  • >250 berichten
  • 481 berichten
  • Ervaren gebruiker

Geplaatst op 03 juli 2007 - 11:33

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 fucked urself..
Correct me if I'm wrong.

#5

tokesnugerd

    tokesnugerd


  • 0 - 25 berichten
  • 7 berichten
  • Gebruiker

Geplaatst op 03 juli 2007 - 20:25

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 !

Veranderd door tokesnugerd, 03 juli 2007 - 20:26


#6

Sjakko

    Sjakko


  • >1k berichten
  • 1007 berichten
  • Ervaren gebruiker

Geplaatst op 03 juli 2007 - 20:41

die hoek is gelijk aan LaTeX

arctan is de inverse tangens.

#7

tokesnugerd

    tokesnugerd


  • 0 - 25 berichten
  • 7 berichten
  • Gebruiker

Geplaatst op 04 juli 2007 - 10:00

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

Geplaatste afbeelding

#8

tokesnugerd

    tokesnugerd


  • 0 - 25 berichten
  • 7 berichten
  • Gebruiker

Geplaatst op 04 juli 2007 - 10:19

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 ?)

#9

Sjakko

    Sjakko


  • >1k berichten
  • 1007 berichten
  • Ervaren gebruiker

Geplaatst op 04 juli 2007 - 11:28

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.

#10

tokesnugerd

    tokesnugerd


  • 0 - 25 berichten
  • 7 berichten
  • Gebruiker

Geplaatst op 04 juli 2007 - 11:31

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)
Geplaatste afbeelding

Klopt deze een beetje ?

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

#11

Sjakko

    Sjakko


  • >1k berichten
  • 1007 berichten
  • Ervaren gebruiker

Geplaatst op 04 juli 2007 - 11:45

Je hoek klopt niet. Aangezien jij de y-as met de positieve richting naar beneden neemt, moet je hoek worden: LaTeX

#12

Sjakko

    Sjakko


  • >1k berichten
  • 1007 berichten
  • Ervaren gebruiker

Geplaatst op 04 juli 2007 - 12:22

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. LaTeX

Stel de y-as ligt van beneden naar boven en de x-as ligt van links naar rechts, dan:

Voor x geldt:
als LaTeX : (ofwel B ligt rechts van A)
LaTeX

als LaTeX : (ofwel B ligt links van A)
LaTeX

Voor y geldt:
als LaTeX : (ofwel B ligt hoger dan A)
LaTeX

als LaTeX : (ofwel B ligt lager dan A)
LaTeX

r=schuinezijde en LaTeX =hoek
Als jouw assen in een andere richting liggen, dan be´nvloedt dat die minnetjes en plusjes.

#13


  • Gast

Geplaatst op 04 juli 2007 - 12:46

(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.

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:
LaTeX

En de geschatte tijd (ETA) is deze afstand gedeeld door de snelheid.

#14

stoker

    stoker


  • >1k berichten
  • 2746 berichten
  • Ervaren gebruiker

Geplaatst op 05 juli 2007 - 17:49

LaTeX

maak daar eens LaTeX van.
dat leek me op het eerste zich al niet te kloppen.

test het eens en laat het weten.

#15


  • Gast

Geplaatst op 10 juli 2007 - 22:06

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.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures