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

Code: Alles auswählen

vektor1 = vector(1,2,3)
vektor2 = vector(4,5,6)
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 ...