Forum: PC-Programmierung 3d-Vektor durch zwei Winkel definieren zur Achse definieren


von olli23 (Gast)


Lesenswert?

Hallo,

ich stehe gerade etwas auf dem Schlauch.
Ich möchte einen Vektor über 2 Winkel definieren.

wenn beide Winkel 0° sind zeigt der Vektor genau in z-Richtung

v = [0 0 1];

wenn er z.b. um 45° in x-Richtung gekippt wird erhalte ich

v = [1/sqrt(2) 0 1/sqrt(2)]

oder allgemein

v = [sin(alpha) 0 cos(alpha)]

aber wie kann ich die 2. Kippung (Winkel beta) dazurechnen (ohne dass 
sich der erste Winkle (wenn man den Vektor auf die jeweilige Ebene 
projeziert) ändert?

von Possetitjel (Gast)


Lesenswert?

olli23 schrieb:

> aber wie kann ich die 2. Kippung (Winkel beta)
> dazurechnen (ohne dass sich der erste Winkle (wenn
> man den Vektor auf die jeweilige Ebene projeziert)
> ändert?

???

Meiner Meinung nach verwechselst Du den (Raum-)Winkel,
den der Vektor gegen die Z-Achse hat, mit den Winkeln,
die die Projektionen des Vektors (auf die X-Z-Ebene
bzw. die Y-Z-Ebene) mit der Z-Achse haben.

Die Winkel der Projektionen sind unabhängig (weil die
Achsen orthogonal sind), aber der Winkel im Raum hängt
natürlich von beiden Winkeln in der Ebene ab.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

x' = x*cos(a) + y*sin(a)
y' = y*cos(a) - x*sin(a)

Wobei sich das Vorzeichen von sin ändert, wenn a einen anderen 
Rotationsinn haben soll (d.h. einfach a durch -a ersetzen).

x'² + y'² = x² + y² ist auch einfach nachzurechnen wegen sin² + cos² = 
1, d.h. die Projektion auf xy-Ebene hat unabhängig von a immer gleiche 
Länge.

: Bearbeitet durch User
von Daniel A. (daniel-a)


Lesenswert?

Ich verwende für sowas gerne Rotationsmatrizen: 
https://en.m.wikipedia.org/wiki/Rotation_matrix#In_three_dimensions

Einfach den Vektor mit dem Matrixen für die Rotation multiplizieren. 
Oder in diesem fall einfach die Matrizen für eine Rotation um X achse 
und die um Y achse multiplizieren, und die 3te Spalte der resultierenden 
Matrix nehmen.

: Bearbeitet durch User
von Timm R. (Firma: privatfrickler.de) (treinisch)


Lesenswert?

aus z in x-Richtung kippen nennt man auch Drehung um die y-Achse, das 
wäre dein alpha, das naheliegende beta wäre dann die Drehung um die 
x-Achse.

Meinst Du so?

1. So kannst Du aber nicht jeden beliebigen Vektor eindeutig 
beschreiben, willst Du ja vielleicht auch nicht. Sags ja nur.

2.

olli23 schrieb:

> aber wie kann ich die 2. Kippung (Winkel beta) dazurechnen (ohne dass
> sich der erste Winkle (wenn man den Vektor auf die jeweilige Ebene
> projeziert) ändert?

natürlich gar nicht, wenn alpha und beta so gemeint sind, wie ich denke. 
Begründe doch mal, warum das gehen sollte?

vlg
 Timm

von Daniel A. (daniel-a)


Lesenswert?

olli23 schrieb:
> aber wie kann ich die 2. Kippung (Winkel beta) dazurechnen (ohne dass
> sich der erste Winkle (wenn man den Vektor auf die jeweilige Ebene
> projeziert) ändert?

Oh sorry, das habe ich überlesen. Um das ganze nochmal anders zu 
Formulieren, du willst, dass die Projektion der Linie auf die XZ und YZ 
ebene einen gewissen Winkel zu Z hat, und das die Linie im Raum 
normalisiert ist?

Ungetestet:
1
x1=cos(a)
2
z1=sin(a)
3
y2=cos(b)
4
z2=sin(b)
5
x3=x1
6
y3=z1/z2*y2
7
z3=z1
8
d=sqrt(x3*x3+y3*y3+z3*z3)
9
x=x3/d
10
y=y3/d
11
z=z3/d
Die Formel wird aber bei 90 grad winkeln nicht gehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.