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
Distanz zwischen zwei Koordinaten berechnen
-
- User
- Beiträge: 16
- Registriert: Montag 21. Juni 2010, 13:04
- Wohnort: Aschaffenburg
- Kontaktdaten:
-
- User
- Beiträge: 16
- Registriert: Montag 21. Juni 2010, 13:04
- Wohnort: Aschaffenburg
- Kontaktdaten:
Das ganze hat mit einer Kreiskollisionserkennung zu tun.
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.
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
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.
Zuletzt geändert von julianibus am Montag 21. Juni 2010, 14:05, insgesamt 1-mal geändert.
-
- User
- Beiträge: 16
- Registriert: Montag 21. Juni 2010, 13:04
- Wohnort: Aschaffenburg
- Kontaktdaten:
ok, ich hab den code mindestens 20 mal durchgelesen und hab es nich bemerkt...
man komm ich mir jetz blöd vor.
Aber es macht immer noch nicht das was ich will
man komm ich mir jetz blöd vor.
Aber es macht immer noch nicht das was ich will
An Stelle der letzten 4 Zeilen würde man schreiben:
Code: Alles auswählen
return realdis < self.dis
-
- User
- Beiträge: 16
- Registriert: Montag 21. Juni 2010, 13:04
- Wohnort: Aschaffenburg
- Kontaktdaten:
ja das hab ich schon abgeändert gehabt.hendrikS hat geschrieben:ydis = y1 - x2
...und nochmal genau hingucken. Manchmal sieht man ja den Wald vor lauter Bäumen nicht.
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
Gibtes vllt eine andere Möglichkeit die Distanz zwischen zwei Punkten zu ermitteln?
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:
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
-
- User
- Beiträge: 16
- Registriert: Montag 21. Juni 2010, 13:04
- Wohnort: Aschaffenburg
- Kontaktdaten:
ok, ich hab das problem gefunden, was wie schon vermutet außerhalb liegt.
Danke fürs Helfen!
Danke fürs Helfen!
Ich weiss nicht ob es noch relevant ist aber das könnte man mit
lösen.
Code: Alles auswählen
numpy.linalg.norm()