Quaternionen?



  • Hallo.
    Ich habe davon keine Ahnung, könnt ihr mir sagen ab ich den Quelltext (von Meiner Kamera) so lassen soll, oder Quaternionen benutzen:

    //wir sind in Kamera::EveryFrameProc()
    
          Right.x	= fCosYaw  * fCosRoll + fSinYaw * fSinPitch * fSinRoll;
    	Right.y	= fSinRoll * fCosPitch;
    	Right.z	= fCosYaw  * fSinPitch * fSinRoll - fSinYaw * fCosRoll;
    
    	Up.x		= fSinYaw * fSinPitch * fCosRoll - fCosYaw * fSinRoll;
    	Up.y		= fCosRoll * fCosPitch;
    	Up.z		= fSinRoll * fSinYaw + fCosRoll * fCosYaw * fSinPitch;
    
    	Dir.x		= fCosPitch * fSinYaw;
    	Dir.y		= -fSinPitch;
    	Dir.z		= fCosPitch * fCosYaw;
    
        Mat.Mat4x4[0][0] = Right.x;
        Mat.Mat4x4[1][0] = Right.y;
        Mat.Mat4x4[2][0] = Right.z;
    	Mat.Mat4x4[3][0] = -DotProd(Pos, Right);
    	Mat.Mat4x4[0][1] = Up.x;
    	Mat.Mat4x4[1][1] = Up.y;
    	Mat.Mat4x4[2][1] = Up.z;
    	Mat.Mat4x4[3][1] = -DotProd(Pos, Up);
    	Mat.Mat4x4[0][2] = Dir.x;
    	Mat.Mat4x4[1][2] = Dir.y;
    	Mat.Mat4x4[2][2] = Dir.z;
    	Mat.Mat4x4[3][2] = -DotProd(Pos, Dir);
    	Mat.Mat4x4[0][3] = 0.0f;
    	Mat.Mat4x4[1][3] = 0.0f;
    	Mat.Mat4x4[2][3] = 0.0f;
    	Mat.Mat4x4[3][3] = 1.0f;
    
    	glLoadMatrixf (Mat.Mat16);
    

    Ich weiss nur, dass in Quake 2 keine Quaternionen benutzt werden, aber man trozdem im Internet viel liest, dass Quaternionen schneller und einfach besser seien.

    Danke euch allen.



  • Das kannste so lassen ...

    Nur wenn man Rotationsmatrizen oft miteinander multipliziert werden degenerieren diese wegen numerischen Schwierigkeiten ...

    ... Bei quaternionen nicht ...



  • Naja, vielleicht benutzte ich doch Quaternionen.
    Noch mal eine Frage: Kann so wie es in meinem Code steht, der "Gimbal Lock" auftreten?
    Aus dem was ich gefunden habe, werde ich nicht wirklich schlau.
    Danke



  • lies der den vorigen Beitrag nochmal durch, dass hast du die antwort...
    JA wenn viele Rotationsmatrix miteinander multipliziert werden



  • das hat nix mit der anzahl zu tun ~~


Anmelden zum Antworten