Seite 1 von 1
Winkel zwischen zwei Vektoren
Verfasst: Montag 25. Februar 2008, 03:45
von kame
Code: Alles auswählen
winkel = arccos(dot(vektor1, vektor2)/(abs(vektor1)*abs(vektor2)))
So funktionierts leider nicht. Aber wie komme ich an den Winkel. Habe im Forum leider nichts gefunden.
Verfasst: Montag 25. Februar 2008, 06:36
von rayo
Hi
Zeig mal woher dot, abs und arccos kommen.
arccos wird ja math.acos sein.
abs und dot müssten eigene Funktionen sein, diese wären gut auch zur Verfügung zu haben um den Fehler zu finden.
Und der Winkel ist in Radiant, also ein Kreis ist 2*Pi, Umwandeln kannst du mit math.degree(winkel).
Gruss
Verfasst: Montag 25. Februar 2008, 06:56
von Zap
``abs`` ist eine built-in function
Code: Alles auswählen
abs(number) -> number
Return the absolute value of the argument.
Verfasst: Montag 25. Februar 2008, 08:02
von rayo
Ja aber das built-in abs würde nicht auf einen Vektor gehen, also nehme ich an er hat abs Überschrieben, sonst würde ja direkt eine Fehlermeldung kommen.
Verfasst: Montag 25. Februar 2008, 12:04
von CM
Genau, und hilfreich wäre auch zu wissen was das für Vektorinstanzen sind. Aus welchem Modul, bzw. wie ist das ggf. selber implementiert?
Verfasst: Montag 25. Februar 2008, 12:43
von kame
Code: Alles auswählen
from visual import *
vektor1 = (1,2,3)
vektor2 = (4,5,6)
winkel = math.acos(dot(vektor1, vektor2)/(abs(vektor1)*abs(vektor2)))
Ja ich bekomme ne Fehlermeldung:
Traceback (most recent call last):
File "C:\Python25\zwei.py", line 6, in <module>
winkel = math.acos(dot(vektor1, vektor2)/(abs(vektor1)*abs(vektor2)))
TypeError: bad operand type for abs(): 'tuple'
>>>
Muss ich das Mathemodul extra aufrufen? Und wenn ja wie?
Und dot() und abs() funktionieren im Visual-Modul.
Grüsse,
kame
Verfasst: Montag 25. Februar 2008, 12:58
von CM
Mach mal
Na?
Die Fehlermeldung ist eindeutig: Ein tuple ist kein Vektor. Demgemäß ist Vektormultiplikation - gleich welcher Art - auch für tuple nicht implementiert.
Gruß,
Christian
edit: ... und abs() auf einen tuple ist natürlich auch nicht implementiert ...