C# Winkel zwischen (windschiefen) Vektoren, nicht im Ursprung (WPF)

knappenboy

Mitglied
Guten Tag,

für meine Projektarbeit werde ich den Rotationswinkel des Unterarms bestimmen. Mein Problem ist die Vektorprojektion (Hoffentlich das richtige Forum). Mittels der Kinect2 soll diese Aufgabe gelöst werden. Diese kann 25 fest definierte Körperpunkte aufnehmen.

Für meine Aufgabe benötige ich den Schultervektor S, den Ellenbogenvektor E, den Handgelenksvektor H und den Daumenspitze-vektor DS. Wie ich die Programmierung zur Berechnung durchziehe, ist mir bekannt, es fehlt allerdings die passende Formel.

Zur Rechnung (Vektor 3D: x,y,z):

Oberarmrichtungsvektor O = E - S
Unterarmrichtungsvektor U = H - E
Daumenrichtungsvektor D = DS - H

Winkel zwischen zwei Vektoren ist:

Winkel = arc cos (Skalarprodukt(Vektor 1 und 2)/ (Länge Vektor 1 * Länge Vektor 2))

Für die Rotation möchte ich die Y-Komponente vom O und D miteinander vergleichen. Sprich die Dy-Komponente (bzw. den Vektor) auf die Oy Komponente projizieren und mit der angegebenen Formel den Rotationswinkel berechnen. Liegen beide Komponenten aufeinander ist der Winkel theoretisch Null, nach Drehung des Unterarms wird ein Winkel entstehen. Der Daumen ist stets gestreckt.


Leider fehlt mir ein Ansatz. Für Hilfe wäre ich sehr dankbar.


Falls das Problem noch nicht ersichtlich definiert wurde, kann ich es gern nochmal probieren.^^