Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

vektoren-winkel-rotationen
Gehe zu Seite 1, 2  Weiter
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Mathe-Forum -> vektoren-winkel-rotationen
 
Autor Nachricht
Drager
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 28.10.2005
Beiträge: 9

BeitragVerfasst am: 28 Okt 2005 - 11:48:32    Titel: vektoren-winkel-rotationen

hallo,

also ich weiss net ob die frage schon beantwortet wurde, konnte aber mit der suche nix finden...

also es geht darum, ich habe 2 richtungsvektoren (mit aufpunkt (0,0,0)) und möchte mit hilfe von rotationen (um x- ,y- und z-achse) den einen vektor in den anderen überführen...

wie kann ich die einzelnen winkel bekommen, um die ich rotieren muss?
(habs schon mit skalar von projektionen auf die jeweiligen ebenen probiert, aber weiss dann erstens net , um welche ich zuerst rotieren soll etc. noch kommen meist nicht richtige ergebnisse heraus..)


es wäre auch möglich um einen beliebigen vektor zu rotieren (sprich muss nicht unbedingt x, y und z-achse sein,) falls dass das problem vereinfacht...

auch kann ich einen der vektoren fest angeben (0,1,0) , aber eigendlich wollte ich das problem allgemein halten.. wenns aber net anders geht wär ich auch mit dieser lösung zufrieden...
der andere vektor ist eine normale auf einer ebene (n1,n2,n3) falls das was hilft..

hab schon zig sachen ausprobiert , nix hat aber geklappt ..

wäre um tipps oder lösung sehr dankbar

danke im voraus

Drager
brabe
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 26.10.2005
Beiträge: 2807
Wohnort: Lehrerzimmer

BeitragVerfasst am: 28 Okt 2005 - 14:40:37    Titel:

Rotationen geht mit Matrizen!

einen Vektor in den anderen mit einer der drei Rotationsachsen e1,e2,e3?

ohne eine achse geht da doch gar keiner!?

Also musst diese auch allgemein ansetzten?
Drager
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 28.10.2005
Beiträge: 9

BeitragVerfasst am: 28 Okt 2005 - 14:44:59    Titel:

brabe hat folgendes geschrieben:

einen Vektor in den anderen mit einer der drei Rotationsachsen e1,e2,e3?

ohne eine achse geht da doch gar keiner!?

Also musst diese auch allgemein ansetzten?


ich will einen vektor in einen andern überführen mit beliebig vielen rotation um irgendwelche beliebingen vektoren (meinetwegen auch die rotationsachsen...)


es handelt sich bei den vektoren um richtungsvektoren mit aufpunkt(0,0,0)..


um das vielleicht mal anschaulich zu machen, ich hab ein 3D objekt von einem baum , dessen ausrichtung durch einen vektor angeben wird (z.b. (0,1,0))
jetzt will ich diesen baum auf einen 3D landschaft so ausrichten , das er z.b. an einem hang auch schief steht, dazu benutze ich die normale dieses hanges, um die neigung zu finden...

somit habe ich die ausrichtung des baumes, und die normale der landschaftsoberfläche, und will daraus berechnen wie ich den baum rotieren muss, damit er der darunterliegenden landschaft angepasst ist... sprich seinen ausrichtungsvektor des baumes, der normalen des bodens anzupassen.. dazu muss ich den baum rotieren (ja das mach ich mit matrizen) , aber ich muss ja wissen , wie ich den baum zu rotieren habe, damit er richtig steht und dazu brauche ich die rotationswinkel und achsen (die man ja mal mit (1,0,0),(0,1,0) und (0,0,1) annehmen kann oder jeden beliebigen anderen ..)
brabe
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 26.10.2005
Beiträge: 2807
Wohnort: Lehrerzimmer

BeitragVerfasst am: 28 Okt 2005 - 15:10:12    Titel:

Naja, wenn du doch die Landschaft darunter hast, und deren koordinatensystem, dann hasste doch bestimmt dieses ausgerichtet anhand von e1,e2,e3, also sollte e3 deine z achse sein und immer richtung himmel zeigen, ich gehe mal davon aus, dass wir uns nicht mit kugelkoordinaten beschäftigen oder?

also du bist ein spieleunwickler oder ist es wirklich eine aufgabe?

----------
naja, die Aufgabe ist echt simple

Baum_neu = Martix*Baum_alt

nun musst du nur festlegen wie die rotationsachse aussieht, bei der ist dann bei den koordinatenachsen als Drehachse die 1 auf der Diagonalen und eine cos bzw sin funktion bestimmt dann die der anderen Matrixelemente

http://www.mathematik.uni-dortmund.de/hm/hm1petii0203/Folien_105-110.pdf

also ich denke mal du solltest das verstehen
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 28 Okt 2005 - 15:26:00    Titel:

Zitat:
will ich diesen baum auf einen 3D landschaft so ausrichten , das er z.b. an einem hang auch schief steht


Was sind das für komische Bäume? Die Bäume wachsen normal nach oben.
Drager
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 28.10.2005
Beiträge: 9

BeitragVerfasst am: 28 Okt 2005 - 15:49:11    Titel:

brabe hat folgendes geschrieben:


also du bist ein spieleunwickler oder ist es wirklich eine aufgabe?


nein keine aufgabe, sondern ich programmieren gerne spiele...



brabe hat folgendes geschrieben:


Baum_neu = Martix*Baum_alt



ja das ist mir klar, aber was ich brauche ist,

z.b. ich hab vektor1(0,1,0) und vektor2(1,1,1):

wie muss ich jetzt vektor1 rotieren damit ich vektor2 bekomme?

also müsste ich nach Matrix auflösen , und da die winkel irgendwie ablesen...

also: vektor1 * Matrix = vektor2;

was ich also suche ist Matrix...

kannst du mir mal vorrechnen wie ich vektor1(0,1,0) um irgendwelche achsen(vektoren) rotieren muss und um welchen winkel, damit ich vektor2(1,1,1) bekomme? auf einem allgemeinen weg?


algebrafreak hat folgendes geschrieben:


Was sind das für komische Bäume? Die Bäume wachsen normal nach oben.



naja die sind ja von der 3d struktur fest, und wenn ich sie nicht drehe, schweben sie zum teil in der luft....
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 28 Okt 2005 - 15:55:25    Titel:

Du hast je nach API eine ganze Reihe von hardware bzw. software-emulierte Matrixoperationen. Musst nur im Handbuch deiner API nachschauen. Da wird so was ähnliches drinen stehen, wie

// Lädt einen 3D-Vektor in den API-Akkumulator
load(a,b,c,d)

// Rotiert den Vektor um die Achsen
rotate(a,b,c)

Es macht, außer API-Entwicklern, kein Mensch heute die Rotationsmatrizen per Hand.
Drager
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 28.10.2005
Beiträge: 9

BeitragVerfasst am: 28 Okt 2005 - 15:59:22    Titel:

algebrafreak hat folgendes geschrieben:
Du hast je nach API eine ganze Reihe von hardware bzw. software-emulierte Matrixoperationen. Musst nur im Handbuch deiner API nachschauen. Da wird so was ähnliches drinen stehen, wie

// Lädt einen 3D-Vektor in den API-Akkumulator
load(a,b,c,d)

// Rotiert den Vektor um die Achsen
rotate(a,b,c)

Es macht, außer API-Entwicklern, kein Mensch heute die Rotationsmatrizen per Hand.



ja klar, aber das brauch ich ja garnicht!!

was ich suche ist nicht rotate(a,b,c) sondern a und b und c!

ich habe 2 vektoren und will den einen so rotieren, dass er danach der andere ist.

was ich habe sind die koordinaten dieser beiden vektoren, was ich nicht habe, sind die winkel um die ich jeweil um die achsen rotieren muss, damit die vektoren aufeinander liegen (also gleich sind)
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 28 Okt 2005 - 16:04:50    Titel:

Das wird hässlich. Ich vermittle nur die Idee: Durch die Rotation um eine der Achsen entsteht eine Ebene, deren Normale die Rotationsachse ist. Wenn Du die Punkte auf diese Projezierst, dann ist die Steigung klar, denn es reduziert sich auf ein 2D-Problem (einfach die Winkeldifferenz). Das musst Du mit allen drei Rotationsebenen machen. Dabei ist weder die Rotation im 2D noch die in 3D eindeutig und hängt glaube ich von der Reihenfolge der Anwendung. Außerdem ist der Scheiß auch nicht kommutativ. D.h. die Reihenfolge ist entscheidend.
Drager
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 28.10.2005
Beiträge: 9

BeitragVerfasst am: 28 Okt 2005 - 16:17:54    Titel:

algebrafreak hat folgendes geschrieben:
Das wird hässlich. Ich vermittle nur die Idee: Durch die Rotation um eine der Achsen entsteht eine Ebene, deren Normale die Rotationsachse ist. Wenn Du die Punkte auf diese Projezierst, dann ist die Steigung klar, denn es reduziert sich auf ein 2D-Problem (einfach die Winkeldifferenz). Das musst Du mit allen drei Rotationsebenen machen. Dabei ist weder die Rotation im 2D noch die in 3D eindeutig und hängt glaube ich von der Reihenfolge der Anwendung. Außerdem ist der Scheiß auch nicht kommutativ. D.h. die Reihenfolge ist entscheidend.



ja genau das ist mein problem, ich hab wie du gesagt hast, das mit den 2D projektionen und den winkeln im 2D ausrechnen schon mal probiert..

und da es ja nicht kommutativ ist, alle kombinationen durchprobiert..
aber es kam trotzdem kein richtiges ergebnis heraus, da sich bei jeder rotations um eine achse, sich ja alles ändert...

ich hab mir dann überlegt immer wieder mit den zwischenergebnissen (nach einer rotation) , die winkel nochmal zu berechnen und dann wieder zu rotieren, bis es passt, weiss aber net ob das überhaupt nen sinn macht...
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Mathe-Forum -> vektoren-winkel-rotationen
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum