Seite 1 von 1

Distanz zwischen zwei Koordinaten berechnen

Verfasst: Montag 21. Juni 2010, 13:21
von julianibus
Hi,
ich bin neu hier und habe ein Problem:
für ein Spiel muss ich die Distanz zwischen zwei xy-Koordinaten ausrechnen.
Das hab ich erstmal über die Hypothenuse versucht, was irgendwie nich richtig funktioniert.
Gibt es eine andere Möglichkeit dies zu lösen?
Wichtig ist, das am Ende ein positiver Wert rauskommt, den ich weiterverwenden kann.

lg
julianibus

Re: Distanz zwischen zwei Koordinaten berechnen

Verfasst: Montag 21. Juni 2010, 13:33
von hendrikS
julianibus hat geschrieben: Das hab ich erstmal über die Hypothenuse versucht, was irgendwie nich richtig funktioniert.
Schreib doch mal auf, was da nicht funktioniert hat.

Re: Distanz zwischen zwei Koordinaten berechnen

Verfasst: Montag 21. Juni 2010, 13:42
von julianibus
Das ganze hat mit einer Kreiskollisionserkennung zu tun.

Code: Alles auswählen

	def iscollision(self, x1, y1, x2, y2):
		xdis = x1 - x2
		ydis = y1 - y2
		realdis = math.hypot(xdis, ydis)
		
		if (realdis >= self.dis):
			return False
		elif (realdis < self.dis):
			return True
self.dis ist die Distanz, ab der es keine Kollision mehr ist.

Mit den Differenzen der x und y Koordinaten berechne ich die Hypothenuse und sollte so eig den Abtsand erhalten.
Ich denke mal das da ein Denkfehler drin ist, auf den ich nicht komme.

Re: Distanz zwischen zwei Koordinaten berechnen

Verfasst: Montag 21. Juni 2010, 13:48
von hendrikS
ydis ist wohl nicht richtig. Mal genau hingucken!

Re: Distanz zwischen zwei Koordinaten berechnen

Verfasst: Montag 21. Juni 2010, 13:52
von julianibus
ok, ich hab den code mindestens 20 mal durchgelesen und hab es nich bemerkt...
man komm ich mir jetz blöd vor. :mrgreen:
Aber es macht immer noch nicht das was ich will :(

Re: Distanz zwischen zwei Koordinaten berechnen

Verfasst: Montag 21. Juni 2010, 13:56
von numerix
An Stelle der letzten 4 Zeilen würde man schreiben:

Code: Alles auswählen

return realdis < self.dis

Re: Distanz zwischen zwei Koordinaten berechnen

Verfasst: Montag 21. Juni 2010, 14:03
von hendrikS
ydis = y1 - x2

...und nochmal genau hingucken. Manchmal sieht man ja den Wald vor lauter Bäumen nicht.

Re: Distanz zwischen zwei Koordinaten berechnen

Verfasst: Montag 21. Juni 2010, 14:09
von julianibus
hendrikS hat geschrieben:ydis = y1 - x2

...und nochmal genau hingucken. Manchmal sieht man ja den Wald vor lauter Bäumen nicht.
ja das hab ich schon abgeändert gehabt.
Mein jetziger Code:

Code: Alles auswählen

	def iscollision(self, x1, y1, x2, y2):
		xdis = x1 - x2
		ydis = y1 - y2
		realdis = math.hypot(xdis, ydis)

		return realdis < self.dis
funktioniert aber nicht. Es gibt keine Fehlermeldungen.
Gibtes vllt eine andere Möglichkeit die Distanz zwischen zwei Punkten zu ermitteln?

Re: Distanz zwischen zwei Koordinaten berechnen

Verfasst: Montag 21. Juni 2010, 14:18
von numerix
Dann dürfte der Fehler außerhalb liegen. Was für eine "Fehlermeldung" soll denn kommen?
Den Funktionsrumpf kannst du übrigens auf 1 Zeile reduzieren:

Code: Alles auswählen

def iscollision(self, x1, y1, x2, y2):
    return math.hypot(x1-x2,y1-y2) < self.dis

Re: Distanz zwischen zwei Koordinaten berechnen

Verfasst: Montag 21. Juni 2010, 15:16
von julianibus
ok, ich hab das problem gefunden, was wie schon vermutet außerhalb liegt.
Danke fürs Helfen! :mrgreen:

Re: Distanz zwischen zwei Koordinaten berechnen

Verfasst: Samstag 13. Januar 2018, 12:45
von nono191
Ich weiss nicht ob es noch relevant ist aber das könnte man mit

Code: Alles auswählen

numpy.linalg.norm()
lösen.

Re: Distanz zwischen zwei Koordinaten berechnen

Verfasst: Samstag 13. Januar 2018, 12:51
von __deets__
8 Jahre später? Ich glaube kaum :wink: