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

Winkel zwischen zwei Vektoren

Beitragvon kame » Montag 25. Februar 2008, 03:45

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:

Beitragvon rayo » Montag 25. Februar 2008, 06:36

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

Beitragvon Zap » Montag 25. Februar 2008, 06: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:

Beitragvon rayo » Montag 25. Februar 2008, 08:02

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:

Beitragvon CM » Montag 25. Februar 2008, 12:04

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:

Beitragvon kame » Montag 25. Februar 2008, 12:43

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:

Beitragvon CM » Montag 25. Februar 2008, 12:58

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

Wer ist online?

Mitglieder in diesem Forum: Nebeig