Entfernung messen mit dem Satz des Pythagoras auch in 3D?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Mandalore3142
User
Beiträge: 14
Registriert: Freitag 5. Oktober 2007, 19:13
Wohnort: Bremen
Kontaktdaten:

Entfernung messen mit dem Satz des Pythagoras auch in 3D?

Beitragvon Mandalore3142 » Freitag 5. Oktober 2007, 19:28

Hallo alle,
bin neu im Forum und hoffe ich bekomm hier Hilfe. :mrgreen:

Meine Frage, ich hab eine kleine Funktion zum messen der Entfernung zweier Punkte auf einem 2D Koordinatensystem. Und wie könnte mann das für ein 3D Koordinatensystem machen oder gibts da schon ne Funktion für???

Hoffe mir kann jemand helfen, weil ich nicht so recht weis ich das ganze bei 3D angehen sollte. ^^

Code: Alles auswählen

import math

def getDistance(pos1,pos2):
  a = pos1[0]-pos2[0]
  b = pos1[1]-pos2[1]
  result = math.sqrt((a**2)+(b**2))
  return result,int(result)

print getDistance((10,20),(13,14))


MfG Mandalore
BlackJack

Beitragvon BlackJack » Freitag 5. Oktober 2007, 20:01

Einfach noch ein drittes Element zur Koordinate hinzufügen. Auch da kommt das Quadrat der Differenz als weiterer Summand unter die Wurzel.
Mandalore3142
User
Beiträge: 14
Registriert: Freitag 5. Oktober 2007, 19:13
Wohnort: Bremen
Kontaktdaten:

Beitragvon Mandalore3142 » Freitag 5. Oktober 2007, 20:08

Toll danke für die schnelle Antwort!!

Code: Alles auswählen

a = pos1[0]-pos2[0]
b = pos1[1]-pos2[1]
c = pos1[2]-pos2[2]
result = math.sqrt((a**2)+(b**2)+(c**2))
------
print getDistance((10,20,20),(13,14,40))


Wenn das so stimmt danke, ich hätte mir da wohl einen viel zu komplizierten Weg ausgedacht.^^

MfG Mandalore
BlackJack

Beitragvon BlackJack » Freitag 5. Oktober 2007, 20:33

Man kann das ganze etwas generischer schreiben (ungetestet):

Code: Alles auswählen

def distance(pos1, pos2):
    return math.sqrt(sum((a - b)**2 for a, b in zip(pos1, pos2)))


Das funktioniert dann für beide Arten von Koordinaten.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]