Winkel zwischen zwei Vektoren

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.
Antworten
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

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.
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

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
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

``abs`` ist eine built-in function

Code: Alles auswählen

    abs(number) -> number

Return the absolute value of the argument.
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

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.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Genau, und hilfreich wäre auch zu wissen was das für Vektorinstanzen sind. Aus welchem Modul, bzw. wie ist das ggf. selber implementiert?
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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 ...
Antworten