Winkel aus einem normalsierten kartesischem Vector?



  • Hallo,

    ich komme einfach nicht auf die dritte Formel 😞
    Input ist ein Einheitsvector mit xyz, rauskommen sollen die Winkel.

    void TestDlg::vector3ToDegree(float *degree, float cartesianvector[3]) //Roll, Pitch, yaw
    {
    	//Kreiszahl von -3.14 bis 3.14
    	degree[0] = ??;   //roll
    	degree[1] = atan2(long double(cartesianvector[1]),long double(sqrt(cartesianvector[0]*cartesianvector[0] + cartesianvector[2]*cartesianvector[2] )));   //pitch
    	degree[2] = atan2(cartesianvector[0], cartesianvector[2]);	  //yaw
    	//Convert to degree	*57.29577951
    	degree[0]*=57.29577951;
    	degree[1]*=57.29577951;
    	degree[2]*=57.29577951;
    }
    

    Wie errechnet man sich den roll Winkel?

    Grüße
    TheNoName



  • Keine Ahnung, was in deinem Code-Beispiel berechnet wird oder werden soll. Roll-Nick-Gier-Winkel beschreiben die Drehung zweier Koordinatensysteme zueinander, sind also allenfalls durch eine 3x3-Matrix beschrieben, nicht durch einen einfachen Vektor.
    http://de.wikipedia.org/wiki/Roll-Nick-Gier-Winkel

    Solltest du wirklich einen Vektor in Winkel "umrechnen" wollen, würde ich mal ein Skalarprodukt mit Einheitsvektoren versuchen.

    MfG


Anmelden zum Antworten