www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Topologie und Geometrie" - Umrechnung von Winkeln
Umrechnung von Winkeln < Topologie+Geometrie < Hochschule < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Topologie und Geometrie"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Umrechnung von Winkeln: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 08:05 Mi 24.11.2010
Autor: RobKobin

Hallo,

Zuerst einmal, da ich selbst nur einen Realschulabschluss habe, bitte ich um Verständnis, das richtige Forum dafür verfehlt zu haben ;) Dementsprechend versucht bitte eure Lösungsvorschläge etwas für mich... verständlicher zu halten.

Für ein Programm für ein Computerspiel stoße ich derzeit auf ein Problem.

Da sich mein Programm mit Objekten im dreidimensionalen Raum beschäftigt, muss dieses XZY und Rotationen entlang der XYZ Achsen berrechnen.

Berrechnungen für XYZ funktionieren.

Jedoch habe ich das Problem, das sich die Winkel der Rotationen, die ich bisher berrechnen kann, nicht auf das System des Spiels übertragen lassen können.
Hintergrund:

In meinem System rotieren (beispielsweise) die X Achsen und Y Achsen mit, wenn der Winkel entlang der Z Achse sich verändert.

Im Spiel allerdings sind alle Achsen starr.


Wie könnte ich von meinem System zum anderen System umrechnen?


Eine Lösungsidee von mir wäre folgende gewesen (welche aber nicht funktioniert hat):

Variablen:
XR'  = X-Rotation in meinem System
YR'  = Y-Rotation in meinem System
ZR'  = Z-Rotation in meinem System
XR'' = X-Rotation im Zielsystem
YR'' = Y-Rotation im Zielsystem
ZR'' = Z-Rotation im Zielsystem


Überlegungen:

- Je mehr der Winkel XR' 0° oder 180° entspricht, desto mehr entspricht ZR' dem Winkel ZR'' und der Winkel YR' dem Winkel YR''.
- je mehr der Winkel XR 90° oder 270° entspricht, desto mehr entspricht ZR' dem Winkel YR'' und der Winkel YR' dem Winkel ZR''.

- Je mehr der Winkel YR' 0° oder 180° entspricht, desto mehr entspricht XR' dem Winkel XR'' und der Winkel ZR' dem Winkel ZR'.
- je mehr der Winkel XR 90° oder 270° entspricht, desto mehr entspricht XR' dem Winkel ZR'' und der Winkel ZR' dem Winkel XR''.

- Je mehr der Winkel ZR' 0° oder 180° entspricht, desto mehr entspricht XR' dem Winkel XR'' und der Winkel YR' dem Winkel YR'.
- je mehr der Winkel XR 90° oder 270° entspricht, desto mehr entspricht XR' dem Winkel YR'' und der Winkel YR' dem Winkel XR''.


Daraus baute ich mir eine Funktion, die beim Winkel 0° und 180° = 1 ist, und bei 90° und bei 270° = 0 ist. Dieser Funktion gebe ich in Formeln das Kürzel "§".

Außerdem habe ich die genaue Gegenteilformel erstellt, die bei 90° und 270° = 1 ist, und bei 0° und 180° = 0 ist. Dieser gebe ich das Kürzel "#".


Der Verlauf ist geradlinig, also nicht kurvenförmig wie es bei einer Sinusfunktion der Fall ist. Dies liegt einfach daran, das es mir logischer erscheint, auch wenn ich es schwer begründen kann.



Meine Formeln lauten:


XR'' = ( ZR' * #YR' * §XR' ) + ( YR' * §XR' * #ZR' ) + ( XR' * §XR' * §ZR' )

YR'' = ( ZR' * §ZR' * #XR' ) + ( YR' * §ZR' * §XR' ) + ( XR' * #ZR' * §XR' )

ZR'' = ( ZR' * §YR' * §XR' ) + ( YR' * §YR' * #XR' ) + ( XR' * #YR' * §XR' )


Die Klammern dienen zur Übersichtlichkeit ;)


Da kommt allerdings nichts (annähernd) gescheites bei raus. Hat jemand eine Idee?

Übrigens die Position der Singularität stimmt von meinem System mit dem des Spiels überein.

PS: Im Feld "Exakt wiedergegebene Aufgabenstellung, inklusive aller Teilaufgaben:" kann ich natürlich nichts eingeben, da es keine Aufgabenstellung von jemanden anders gibt, sondern ein eigenes projekt ist.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

        
Bezug
Umrechnung von Winkeln: Antwort
Status: (Antwort) fertig Status 
Datum: 15:30 Mi 24.11.2010
Autor: meili

Hallo RobKobin,

[willkommenmr]

ich bin mir nicht sicher, ob ich Dein Problem richtig verstanden habe.
Wenn ich Dir also eine Lösung zu etwas ganz anderm anbiete, bitte "laut schreien", d.h. auf diesen Beitrag mit einer Frage reagieren, so dass jemand anderes etwas Sinnvolleres antworten kann.

Wenn man ein xyz-Koordinatensystem hat, und darin einen Punkt $(x,y,z)$  (größere Objekte können aus vielen Punkten bestehen, aber mit jedem Punkt wird gleich verfahren).

Dieser Punkt soll nun um den Winkel [mm] $\alpha$ [/mm] um die x-Achse rotieren und geht damit in den Punkt [mm] $(x_R, y_R, z_R)$ [/mm] über. Dann berechnen sich die Koordinaten folgendermaßen:
[mm] $x_R$ [/mm] = $x$
[mm] $y_R$ [/mm] = [mm] $y*\cos \alpha [/mm] - [mm] z*\sin \alpha$ [/mm]
[mm] $z_R$ [/mm] = [mm] $y*\sin \alpha [/mm] + [mm] z*\cos \alpha$ [/mm]

Rotiert der Punkt $(x,y,z)$ um den Winkel [mm] $\alpha$ [/mm] um die y-Achse:
[mm] $x_R$ [/mm] = [mm] $x*\cos \alpha [/mm] + [mm] z*\sin \alpha$ [/mm]
[mm] $y_R$ [/mm] = $y$
[mm] $z_R$ [/mm] = [mm] $-x*\sin \alpha [/mm] + [mm] z*\cos \alpha$ [/mm]

Rotiert der Punkt $(x,y,z)$ um den Winkel [mm] $\alpha$ [/mm] um die z-Achse:
[mm] $x_R$ [/mm] = [mm] $x*\cos \alpha [/mm] - [mm] y*\sin \alpha$ [/mm]
[mm] $y_R$ [/mm] = [mm] $x*\sin \alpha [/mm] + [mm] y*\cos \alpha$ [/mm]
[mm] $z_R$ [/mm] = $z$

Wenn's um Winkel geht, sind Winkelfunktionen immer noch am besten, - besser als lineare Funktionen.

Falls Dich näher interessiert, was ich hier gemacht habe, siehe []Rotationsmatrix

Gruß
meili




Bezug
                
Bezug
Umrechnung von Winkeln: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:42 Mi 24.11.2010
Autor: RobKobin

Hallo, danke für die Antwort.

Ich befürchte das ist nicht so richtig was ich suche. Es geht mir darum, das die Objekte um die eigene Achse drehen, nicht um eine allgemeine im System.
Zur veranschaulichung ein Bild:

[Externes Bild http://img832.imageshack.us/img832/3292/objektratio.png]

Mein Programm dreht an der roten Achse, an der blauen und an der grünen.
Allerdings sobald es an der (als Beispiel) roten dreht, drehen sich die grüne und blaue dementsprechend mit.
Das Spiel wofür ich das programmiere allerdings hat keine mitrotierenden achsen. Dreht man dort an der roten Achse, so rotiert das Objekt ebenso, allerdings rotiert die grüne und blaue nicht mit. Demnach würden meine Winkel garnicht funktionieren.

Ich muss es also irgendwie umrechnen, sodass dies korrigiert wird.

Dateianhänge:
Anhang Nr. 1 (Typ: png) [nicht öffentlich]
Bezug
                        
Bezug
Umrechnung von Winkeln: Antwort
Status: (Antwort) fertig Status 
Datum: 11:06 Do 25.11.2010
Autor: meili

Hallo RobKobin,

also nächster Versuch.

Die Achse,  um die gedrecht werden soll,  sei gegeben durch [mm] $\vektor{x_{A_1} \\ y_{A_1} \\ z_{A_1}}$ [/mm] = [mm] \vektor{x_{P_1} \\ y_{P_1} \\ z_{P_1}} [/mm] + [mm] a$*\vektor{x_{R_1} \\ y_{R_1} \\ z_{R_1}}$. [/mm]

Dabei sind [mm] $\vektor{x_{A_1} \\ y_{A_1} \\ z_{A_1}}$ [/mm] die Punkte der Achse.
Für jede Achse brauchst Du 2 Vektoren (Punkte). [mm] $\vektor{x_{P_1} \\ y_{P_1} \\ z_{P_1}}$ [/mm] den Aufpunkt (kann auch (0,0,0) sein, wenn die Achse durch den Ursprung (0,0,0) des Koordinatensystems geht und dann weggelassen werden) und einen Richtungsvektor [mm] $\vektor{x_{R_1} \\ y_{R_1} \\ z_{R_1}}$, [/mm] der die Länge 1 haben soll, also [mm] $x_{R_1}^2 [/mm] + [mm] y_{R_1}^2 [/mm] + [mm] z_{R_1}^2$ [/mm] = 1. (Falls Du einen Richtungsvektor gegeben hast, bei dem nicht [mm] $x_{R_1}^2 [/mm] + [mm] y_{R_1}^2 [/mm] + [mm] z_{R_1}^2$ [/mm] = 1, dann einfach normieren, indem man
[mm] $\tilde x_{R_1} [/mm] = [mm] \bruch{x_{R_1} }{\wurzel{x_{R_1}^2 + y_R_1^2 + z_R_1^2}} [/mm]
[mm] $\tilde y_R_1 [/mm] = [mm] \bruch{y_R_1 }{\wurzel{x_R_1^2 + y_R_1^2 + z_{R_1}^2}} [/mm]
[mm] $\tilde z_{R_1} [/mm] = [mm] \bruch{z_{R_1} }{\wurzel{x_{R_1}^2 + y_{R_1}^2 + z_{R_1}^2}} [/mm]
setzt.)
a durchläuft alle Zahlen, die in Deinem Koordinatensystem vorkommen, also z.B. von -100 bis 100 oder von 0 bis 1000 oder andere.


Werde nun der Punkt (x,y,z) um eine Achse mit dem Richtungsvektor [mm] $\vektor{x_{R_1} \\ y_{R_1} \\ z_{R_1}}$ [/mm] um den Winkel [mm] $\alpha$ [/mm] gedreht und geht damit in den Punkt [mm] $(x_D, y_D, z_D)$ [/mm] über, so sind:

[mm] $x_D$ [/mm] = [mm] $x*(x_R^2*(1-\cos \alpha) [/mm] + [mm] \cos \alpha) [/mm] + [mm] y*(x_R*y_R*(1-\cos \alpha)-z_R*\sin \alpha) [/mm] + [mm] z*(x_R*z_R*(1-\cos \alpha) +y_R* \sin \alpha)$ [/mm]
[mm] $y_D$ [/mm] = [mm] $x*(x_R*y_R*(1-\cos \alpha) [/mm] + [mm] z_R*\sin \alpha) [/mm] + [mm] y*(y_R^2*(1-\cos \alpha) [/mm] + [mm] \cos \alpha) [/mm] + [mm] z*(y_R*z_R*(1-\cos \alpha) [/mm] + [mm] x_R* \sin \alpha)$ [/mm]
[mm] $z_D$ [/mm] = [mm] $x*(x_R*z_R*(1-\cos \alpha) -y_R \sin \alpha) [/mm] + [mm] y*(y_R*z_R*(1-\cos \alpha) [/mm] + [mm] x_R*\sin \alpha) [/mm] + [mm] z*(z_R^2*(1-\cos \alpha) [/mm] + [mm] \cos \alpha)$ [/mm]

Soll nun hintereinander um mehrere Achsen gedreht werden, musst Du nicht nur Deine Objektpunkte rotieren, sondern auch die Achsenpunkte, derjenigen Achsen, um die bei dieser Drehung nicht rotiert wird. Und die nächste Drehung um die so erhaltene Achse ausführen.

Viel Glück.

Ich hoffe, ich habe mich bei den Formeln nicht irgendwo vertippt.

Gruß
meili

Bezug
                                
Bezug
Umrechnung von Winkeln: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:01 Do 25.11.2010
Autor: RobKobin

Ich befürchte da steige ich nicht ganz durch. Besonders der Teil mit den Richtungsvektoren. Das sind doch Daten zur verschiebung von Punkten? Mir geht es ja nicht darum dieses Objekt zu verschieben, sondern es 3 Dimensional rotieren zu lassen, ohne das es sich bewegt.

Könntest du mir deinen Weg nicht an einem Beispiel demonstrieren?

zB

X'=10°
Y'=20°
Z'=30°

X''=?
Y''=?
Z''=?

Bezug
                                        
Bezug
Umrechnung von Winkeln: Antwort
Status: (Antwort) fertig Status 
Datum: 11:18 Fr 26.11.2010
Autor: meili

Hallo RobKobin,

> Ich befürchte da steige ich nicht ganz durch. Besonders
> der Teil mit den Richtungsvektoren. Das sind doch Daten zur
> verschiebung von Punkten? Mir geht es ja nicht darum dieses
> Objekt zu verschieben, sondern es 3 Dimensional rotieren zu
> lassen, ohne das es sich bewegt.
>  
> Könntest du mir deinen Weg nicht an einem Beispiel
> demonstrieren?
>  
> zB
>  
> X'=10°
>  Y'=20°
>  Z'=30°
>  
> X''=?
>  Y''=?
>  Z''=?

Also das verstehe ich nicht so ganz.

Aber ich kann Rotationen an Deinem Beispiel [Externes Bild http://img832.imageshack.us/img832/3292/objektratio.png] zeigen.

Also in meinem Koordinatensystem nehmen x, y und z Werte zwischen -10 und 10 an.

Die acht Eckpunkte des Quaders haben folgende Koordinaten:
(3;-2;1), (3;2;1), (-3;2;1), (-3;-2;1), (3;-2;2), (3;2;2), (-3;2;2), (-3;-2;2).

rote Achse = z-Achse: [mm] $\vektor{x_{rot} \\ y_{rot} \\ z_{rot}}$ [/mm] = [mm] $r*\vektor{0 \\ 0 \\ 1}$ [/mm]

blaue Achse (paralell zur y-Achse): [mm] $\vektor{x_{blau} \\ y_{blau} \\ z_{blau}}$ [/mm] = [mm] $\vektor{0 \\ 0 \\ 1,5} [/mm] + [mm] b*\vektor{0 \\ 1 \\ 0}$ [/mm]

grüne Achse (paralell zur x-Achse): [mm] $\vektor{x_{gruen} \\ y_{gruen} \\ z_{gruen}}$ [/mm] = [mm] $\vektor{0 \\ 0 \\ 1,5} [/mm] + [mm] g*\vektor{1 \\ 0 \\ 0}$ [/mm]

Die Achsengleichungen sind Geradengleichungen. b, g und r nehmen alle die Werte an, so dass [mm] $x_{xxx}$, $y_{xxx}$ [/mm] und [mm] $z_{xxx}$ [/mm]
Werte im Intervall [-10, 10] annehmen.

Nun wird der Quader um
1. [mm] $\alpha$ [/mm] = 10° um die grüne Achse gedreht
dann
2. [mm] $\alpha$ [/mm] = 20° um die blaue Achse gedreht
und
3. [mm] $\alpha$ [/mm] = 30° um die rote Achse gedreht.


Da die grüne Achse nicht durch den Ursprung (0;0;0) geht, verschiebe ich sie, den Quader und die andern Achsen so, dass die grüne Achse durch (0;0;0) geht, rotiere dann um  [mm] $\alpha$ [/mm] = 10° und verschiebe danach wieder zurück, so dass es ist, wie wenn der Quader an der Stelle gedreht wird.

Verschieben um 1,5 nach unten (jeden z-Wert durch z-1,5 ersetzen, aber nicht bei den Richtungsvektoren der Achsen):

Quadereckpunkte: (3;-2;-0,5), (3;2;-0,5), (-3;2;-0,5), (-3;-2;-0,5), (3;-2;0,5), (3;2;0,5), (-3;2;0,5), (-3;-2;0,5).

grüne Achse: [mm] $\vektor{x_{gruen} \\ y_{gruen} \\ z_{gruen}}$ [/mm] = [mm] g*\vektor{1 \\ 0 \\ 0}$ [/mm]

blaue Achse: [mm] $\vektor{x_{blau} \\ y_{blau} \\ z_{blau}}$ [/mm] = [mm] b*\vektor{0 \\ 1 \\ 0}$ [/mm]

rote Achse = z-Achse: [mm] $\vektor{x_{rot} \\ y_{rot} \\ z_{rot}}$ [/mm] = [mm] $r*\vektor{0 \\ 0 \\ 1}$ [/mm]
(eigentlich [mm] $\vektor{x_{rot} \\ y_{rot} \\ z_{rot}}$ [/mm] = [mm] $\vektor{0 \\ 0 \\ -1,5} [/mm] + [mm] r*\vektor{0 \\ 0 \\ 1}$, [/mm] aber da entlang der z-Achse verschoben wird, kann man die Gleichung der roten Achse unter der Verschiebung einfach beibehalten.)

1. Rotieren des Punktes (3;-2;-0,5) um [mm] $\alpha$ [/mm] = 10° um die grüne Achse, [mm] $\vektor{x_{R} \\ y_{R} \\ z_{R}} [/mm] $ = [mm] $\vektor{1 \\ 0 \\ 0}$: [/mm]

[mm] $x_D$ [/mm] = [mm] $x*(x_R^2*(1-\cos \alpha) [/mm] + [mm] \cos \alpha) [/mm] + [mm] y*(x_R*y_R*(1-\cos \alpha)-z_R*\sin \alpha) [/mm] + [mm] z*(x_R*z_R*(1-\cos \alpha) +y_R* \sin \alpha) [/mm] $ =
[mm] $3*1^2*(1-\cos 10^{\circ}) [/mm] +  [mm] \cos 10^{\circ} [/mm] + [mm] (-2)*(1*0*(1-\cos 10^{\circ}) -0*\sin 10^{\circ}) [/mm] + [mm] (-0,5)*(1*0*(1-\cos 10^{\circ}) [/mm] +0* [mm] \sin 10^{\circ}) [/mm] $ = $3*(1-0,98) + 0,98$ = 1,04

$ [mm] y_D [/mm] $ = $ [mm] x\cdot{}(x_R\cdot{}y_R\cdot{}(1-\cos \alpha) [/mm] + [mm] z_R\cdot{}\sin \alpha) [/mm] + [mm] y\cdot{}(y_R^2\cdot{}(1-\cos \alpha) [/mm] + [mm] \cos \alpha) [/mm] + [mm] z\cdot{}(y_R\cdot{}z_R\cdot{}(1-\cos \alpha) [/mm] + [mm] x_R\cdot{} \sin \alpha) [/mm] $ =
$ [mm] 3\cdot{}(1\cdot{}0\cdot{}(1-\cos 10^{\circ}) [/mm] + [mm] 0\cdot{}\sin 10^{\circ}) [/mm] + [mm] (-2)\cdot{}(0^2\cdot{}(1-\cos 10^{\circ}) [/mm] + [mm] \cos 10^{\circ}) [/mm] + [mm] (-0,5)\cdot{}(0\cdot{}0\cdot{}(1-\cos 10^{\circ}) [/mm] + [mm] 1\cdot{} \sin 10^{\circ}) [/mm] $ = $(-2)*0,98 + (-0,5)*0,17$ = -2,045

$ [mm] z_D [/mm] $ = $ [mm] x\cdot{}(x_R\cdot{}z_R\cdot{}(1-\cos \alpha) -y_R \sin \alpha) [/mm] + [mm] y\cdot{}(y_R\cdot{}z_R\cdot{}(1-\cos \alpha) [/mm] + [mm] x_R\cdot{}\sin \alpha) [/mm] + [mm] z\cdot{}(z_R^2\cdot{}(1-\cos \alpha) [/mm] + [mm] \cos \alpha) [/mm] $ =
$ [mm] 3\cdot{}(1\cdot{}0\cdot{}(1-\cos 10^{\circ}) [/mm] -0 [mm] \sin 10^{\circ}) [/mm] + [mm] (-2)\cdot{}(0\cdot{}0\cdot{}(1-\cos 10^{\circ}) [/mm] + [mm] 1\cdot{}\sin 10^{\circ}) [/mm] + [mm] (-0,5)\cdot{}(0^2\cdot{}(1-\cos 10^{\circ}) [/mm] + [mm] \cos 10^{\circ}) [/mm] $ = $-2*0,17-0,5*0,98$ = 0,83

Gerundet auf eine Stelle nach dem Komma: [mm] $\vektor{x_{D} \\ y_{D} \\ z_{D}} [/mm] $ = [mm] $\vektor{1,0 \\ -2,0 \\ 0,8}$ [/mm]

Die übrigen Punkte des Quaders kannst Du selber rechnen, oder besser vom Computer rechnen lassen.

Um die blaue Achse um [mm] $\alpha$ [/mm] = 10° um die grüne Achse zu rotieren,
rotiert man den Richtungsvektor der blauen Achse [mm] $\vektor{x_{R_{blau}} \\ y_{R_{blau}} \\ z_{R_{blau}}}$ [/mm] = [mm] $\vektor{0 \\ 1\\ 0}$ [/mm] um [mm] $\alpha$ [/mm] = 10° um die grüne Achse:
[mm] $x_{D_{R_{blau}}}$ [/mm] = 0
[mm] $y_{D_{R_{blau}}}$ [/mm] = [mm] $1*\cos 10^{\circ}$ [/mm] = 0,98
[mm] $z_{D_{R_{blau}}}$ [/mm] = [mm] $1*1*\sin 10^{\circ}$ [/mm] = 0,17

Um die rote Achse um [mm] $\alpha$ [/mm] = 10° um die grüne Achse zu rotieren,
rotiert man den Richtungsvektor der roten Achse [mm] $\vektor{x_{R_{rot}} \\ y_{R_{rot}} \\ z_{R_{rot}}} [/mm] $ = [mm] $\vektor{0 \\ 0\\ 1}$ [/mm] um [mm] $\alpha$ [/mm] = 10° um die grüne Achse:
[mm] $x_{D_{R_{rot}}}$ [/mm] = 0
[mm] $y_{D_{R_{rot}}}$ [/mm] = [mm] $1*1*\sin 10^{\circ}$ [/mm] = 0,17
[mm] $z_{D_{R_{rot}}}$ [/mm] = [mm] $1*\cos 10^{\circ}$ [/mm] = 0,98


Nun wieder zurück verschieben um 1,5 nach oben (jeden z-Wert durch z+1,5 ersetzen, aber nicht bei den Richtungsvektoren der Achsen):

[mm] $\vektor{x_{D} \\ y_{D} \\ z_{D}} [/mm] $ = [mm] $\vektor{1,0 \\ -2,0 \\ 0,8}$: $\vektor{1,0 \\ -2,0 \\ 2,3}$ [/mm]

blaue Achse: [mm] $\vektor{x_{blau} \\ y_{blau} \\ z_{blau}}$ [/mm] = [mm] $\vektor{0 \\ 0 \\ 1,5} [/mm] + [mm] b*\vektor{0 \\ 1 \\ 0,2}$ [/mm]

grüne Achse: [mm] $\vektor{x_{gruen} \\ y_{gruen} \\ z_{gruen}}$ [/mm] = [mm] $\vektor{0 \\ 0 \\ 1,5} [/mm] + [mm] g*\vektor{1 \\ 0 \\ 0}$ [/mm]

rote Achse: [mm] $\vektor{x_{rot} \\ y_{rot} \\ z_{rot}}$ [/mm] = [mm] $\vektor{0 \\ 0 \\ 1,5} [/mm] + [mm] r*\vektor{0 \\ 0,2 \\ 1}$ [/mm]

(gerundet auf eine Nachkommastelle)

Die Drehungen bei 2. und 3. führe ich jetzt nicht weiter durch, aber wenn Du dabei auf Schwierigkeiten stößt, kannst Du nochmal nachfragen.

Bei allen Drehungen bleibt der Schnittpunkt der 3 Achsen (0;0;1,5) fest und kann als Aufpunkt für alle 3 Geradengleichungen der Achsen benutzt werden.

Gruß
meili


Bezug
                                                
Bezug
Umrechnung von Winkeln: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 11:53 Fr 26.11.2010
Autor: RobKobin

Es Tut mir Leid, das du dich jetzt für die Antwort so angestrengt hast. Gerade wo ich die ungenaue letzte Frage von mir besser formulieren wollte, hattest du schon reserviert. :-(

Ich muss wohl nochmal erklären, wie das ganze System eigendlich arbeitet.

Na klar, im Normalfall wird ein Körper im 3D Raum durch Polygone beschrieben, dessen Ecken sich durch XYZ beschreiben lassen.
Die Winkel ergeben sich durch die Stellung der punkte zueinander.

ALLERDINGS ist das für das Spiel wofür ich das mache anders. Da sieht das folgenermaßen aus:

Die Spielewelt ist aus Objekten aufgebaut. Diese Objekte haben ein 3D Modell, mit Texturen etc.

Wenn das Objekt in der Spielewelt geladen werden soll, dann werden nicht die Punkte der Objektpolygone in dieser Welt ein eingeordnet, sondern das Objekt wird als Punkt angesehen.

Dieser Punkt wird nur durch X Y und Z beschrieben.
Da man allerdings wenn man ein ganzes Objekt mit Modell nur so darstellt, kann man aus diesen X Y und Z Koordinaten ja keine Rotation ablesen.

Daher werden zusätzlich zu der Position X Y und Z noch Rotationen angegeben. Diese heißen dann XR, YR und ZR.

Wenn das Spiel also einen Baum laden will, welcher aufrecht steht, so sind die Daten zB
X=10, Y=20, Z=30, XR=0°, YR=0°, ZR=0°.

Wenn der Baum aber schief stehen soll, so lädt das Spiel diesen Baum mit diesen Daten:
X=10, Y=20, Z=30, XR=5°, YR=0° ZR=0°

So würde er so stehen, dass das ganze 3D Mordell entlang der (!!EIGENEN!!, nicht allgemeinen) X Achse 5° geneigt ist.

So ein System ist einfach weniger Rechenintensiv.


Und nach solchen Daten arbeitet mein Programm.
Das Objekt wird nur als Punkt mit Rotationen beschrieben.

Und nun tritt das oben genannte Problem mit den Rotationen auf.

Bei meinem System rotiert nichtnur das Objekt entlang zB der Z Achse, sondern auch die anderen beiden Achsen. Das passt aber nicht ins System, da das Spiel die Rotationsachsen selbst nicht mitdreht.





Wenn das ganze zu schwer vorzustellen ist, können wir das auch in ein einfacheres, gängigeres Modell übertragen:


Betrachten wir eine Kugel. auf dieser Kugel befinden sich 3 Punkte (XR'', YR'' und ZR''). Jeder Punkt steht für den Austrittspunkt einer Achse aus der Kugel.

Der Abstand der Punkte auf dieser Kugel zueinander sind 90° (Man kann Distanzen auf einer Kugel ja in Grad angeben). Würde man die Punkte verbinden hätte man ein Kugeldreieck mit den Gesammtinnenwinkel 270° und jede Kantenlänge wäre 90°.

Diese Punkte repräsentieren die Achsen des Spiels.

Nun kommt mein System hinzu. Da sich bei mir die Achsen ja mitdrehen, und demnach von den Spielachsen abweichen, fügen wir weitere 3 Punkte hinzu. (XR', YR' und ZR')

Ich gehe mal auf den Punkt YR'' ein:
Die horizontale Abweichung vom Punkt YR' zu Punkt YR'' wird durch ZR' beeinfluss. ist ZR' = 180°, so befindet sich YR' genau gegenüber von Y'' auf der Kugel.
Die Vertikale Abweichung von  XR' beeinflusst. Ist dieser 180°, befindet sich der Punkt YR' auch genau gegenüber YR'' auf der Kugel.

Je weiter Weg YR' zu YR'' ist, desto weniger entspricht YR' auch YR''.

Um nun zu berechnen, wie groß dieser Anteil ist, will ich den Kosinus benutzen.

YR'' = cosXR' * cosZR' * YR'
YR'' = YR' wenn XR' = 0° und ZR' = 0°
YR'' = -YR' wenn XR' = 180° und YR' = 0°
YR'' = -YR' wenn XR' = 0° und YR' = 100°

Da nun aber mit wachsenen Abstand der Anteil von YR' zu YR'' sinkt, steigen die Anteile von XR' und ZR' an YR''.

Wie ich das allerdings mit in der Formel unterbringe, das ist das große Problem.



Ich hoffe du hast mein Problem nun wirklich verstanden und kannst mir Helfen :)

Bezug
                                                        
Bezug
Umrechnung von Winkeln: Rückfrage und Anmerkung
Status: (Antwort) fertig Status 
Datum: 04:47 So 28.11.2010
Autor: meili

Hallo RobKobin,

langsam nähere ich mich dem Problem.

?
Ist folgendes richtig:
Ein Objekt wird durch einen Punkt (x,y,z) und seine Drehung (XR,YR,ZR) beschrieben. Ist XR = 0°, YR = 0°, ZR = 0° so stimmen die x-, y- und z-Achse des Objektes mit den x-, y- und z-Achsen des Gesamtbilds überein.
?

Welche Werte können XR, YR und ZR annehmen? 0° bis 360° oder -180° bis 180°?

Eigentlich würden 2 Werte reichen um die Drehung des Objekts anzugeben. Denn stellt man sich um den Punkt (x,y,z) des Objekts eine Kugel mit Radius 1 vor, und beschreibt die Drehung des Objektes dadurch, dass man angibt, wo sich der "Nordpol" dieser Kugel auf der Kugel nach einer Rotation befindet. (Wie die Längen- und Breitenangabe auf der Erde, oder die beiden Winkel, wenn man Kugelkoordinaten benutzt.)

Natürlich ist diese Darstellung nicht ganz so anschaulich, und man weis nicht immer gleich wie viel gegen jede der x-, y- und z-Achse gedreht wurde.
Benutzt man 3 Werte muss man dann nicht den 3. aus den anderen 2 bestimmen?

Gruß
meili

Bezug
                                                                
Bezug
Umrechnung von Winkeln: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 11:09 So 28.11.2010
Autor: RobKobin

Die XYZ Koordinaten entsprechen bei jeder Rotation denen des Gesammtsystems.

Wenn der Baum bei X=10, Y=20 und Z=30 steht, wird er da auch stehen, wenn er andere Rotationen hat. er ist nur um seinen eigenen Mittelpunkt anders geneigt.

Die Rotationen gehen eigendlich von 0° bis 360°, allerdings ist das Spiel was das angeht sehr tollerant, und aktzeptiert auch jeden anderen Wert. Zur Not kann mans ja umrechnen, das es wieder in den 0-360° Berreich fällt.

Und 2 Werte reichen eigendlich nicht aus, da man ja ansonsten nicht 3 Rotationswerte einprogrammiert hätte.
Denn es geht nichtnur darum, wo der Nordpol sich auf dieser Kugel befindet, sondern auch, in wieweit er um sich selbst gedreht ist.
Sprich, wenn da eine besonders große Eisscholle beim Nordpol in Richtung des X-ten Breitengrades liegt, will man auch diese nach Belieben ausrichten können.



Bezug
                                                                        
Bezug
Umrechnung von Winkeln: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:20 Fr 03.12.2010
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
                                                        
Bezug
Umrechnung von Winkeln: Antwort
Status: (Antwort) fertig Status 
Datum: 10:27 Di 30.11.2010
Autor: meili

Hallo RobKobin,

> Und 2 Werte reichen eigendlich nicht aus, da man ja ansonsten nicht 3
> Rotationswerte einprogrammiert hätte.
> Denn es geht nicht nur darum, wo der Nordpol sich auf dieser Kugel
> befindet, sondern auch, in wieweit er um sich selbst gedreht ist.
> Sprich, wenn da eine besonders große Eisscholle beim Nordpol in
> Richtung des X-ten Breitengrades liegt, will man auch diese nach
> Belieben ausrichten können.

Ja, da hast Du recht; soweit habe ich nicht gedacht.

Für eine Lösung brauche ich noch etwas länger Zeit, aber vergessen ist das Problem noch nicht.

Gruß
meili

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Topologie und Geometrie"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.mathebank.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]