Quaternions



  • Hallo!

    Ich hab mal ein paar Fragen zu Quaternions.

    Ich hab gelesen, dass Quaternions schneller und stabiler als Matrizen sind und nicht diesen "gimbal Lock" haben, der ja bei Matrizen vorkommt. Warum benutzt man dann eigentlich noch Matrizen?

    Hat jemand von euch Quaternions eigentlich verstanden? Die meisten Texte, die ich gefunden habe fangen mit der Gleichung "i*i=-1" an. Da hörts dann meist schon auf mit meinem Mathe-Wissen. (Mal ne Fragen nebenbei: Bekommt man diese imaginären Zahlen eigentlich irgendwann in der Schule?)

    Am meisten würd ich mich natürlich freuen, wenn jemand mir Quaternions idiotengerecht erklären könnte 🙂 (wenn das überhaupt geht), aber ich wäre auch schon froh, wenn mir wer nen Link zu nem guten Tutorial geben würde, das nicht vorraussetzt, dass man Mathe studiert hat.

    MfG



  • Angeblich sind Quaternionen eine Verkomplizierung der Rotationsmatrizen. 😎

    Bye, TGGC \-/



  • Ich hab mal in einem Text gelesen, dass Quaternions (oder Quaternionen???) nicht in allen Fällen wirklich nützlich sind. Da stand aber nicht, in welchen.
    Mich interessiert eigentlich am meisten, ob es sich wirklich lohnt eine Quaternionklasse zu schreiben (und sich in die Materie einzuarbeiten) oder ob es unnötig ist und ich lieber bei den Matrizen bleiben sollte.
    BTW: Was benutzt Rapso eigentlich in seiner Engine und warum nicht das andere? 🙂



  • Wie gesagt, solange du keine Quaternionen brauchst... Man kann eben schön Rotationen damit interpolieren.

    Bye, TGGC \-/



  • Quaternions sollen schneller und stabiler als Matrizen sein. Daneben verhindert man diesen "gimbal lock" und man kann, wie du ja gesagt hast, rotationen interpolieren.
    Also, warum sollte man überhaupt Matrizen verwenden? Sind Quaternions nicht die generell bessere Lösung?



  • godlikebot schrieb:

    Sind Quaternions nicht die generell bessere Lösung?

    Wenn man sie nicht versteht und daher nicht programmieren kann eher nicht... 😉



  • Hmmm, sieht so aus, als wär ich nicht der einzige, der nicht so viel Ahnung von Quaternions hat. 🙂
    Wahrscheinlich bleib ich erstmal bei den Matrizen.



  • godlikebot schrieb:

    Hmmm, sieht so aus, als wär ich nicht der einzige, der nicht so viel Ahnung von Quaternions hat. 🙂

    Muahaha, mit Sicherheit nicht! 😃

    Siehe NeHe, die sind dort so schlecht erklärt, der hat die bestimmt auch net gerallt... 🙂

    An 'nem gemütlichen Nachmittag mal mit Laptop und Mathebuch auf'n Balkon setzen, dann klappt's auch mit den Quaternionen... 😃



  • godlikebot schrieb:

    Sind Quaternions nicht die generell bessere Lösung?

    Eine "generell bessere Lösung" gibt es wahrscheinlich überhaupt nicht.

    Bye, TGGC \-/



  • Wuehl dich mal hier durch, und dann entscheide, was du nimmst:
    http://gamedev.net/reference/list.asp?categoryid=28





  • Danke, ich werd mir die Links mal anschauen.
    Wenn mir aber noch irgendjemand sagen kann, warum man überhaupt Matrizen verwenden sollte, obwohl sie doch, im Vergleich zu Quaternionen, so viele Nachteile haben, würd ich mich natürlich immer noch freuen. 🙂



  • godlikebot schrieb:

    Wenn mir aber noch irgendjemand sagen kann, warum man überhaupt Matrizen verwenden sollte, obwohl sie doch, im Vergleich zu Quaternionen, so viele Nachteile haben, würd ich mich natürlich immer noch freuen. 🙂

    Vielleicht weil deine Grafikkarte und diverse API's damit arbeiten?
    Du kannst OpenGL oder DirectX nicht mitteilen, dass du ihr Quaternions schickst. Die will Matritzen 😉

    Schau dir die Gamedev.net Artikel genauer an, es gibt / gab da auch einen, wie man den Gimbal Lock umgehen kann mit Matritzen.



  • was ist eigentlich "Gimbal Lock" ?



  • Abbadon schrieb:

    was ist eigentlich "Gimbal Lock" ?

    Das Problem, daß Rotationen um die 3 Koordinatenachsen nacheinander ausgeführt werden, und u.U. die 2. oder 3. Achsenrotation bei geeigneter 1.-Achsen-Rotation überhaupt keine Auswirkungen mehr erzielt...



  • godlikebot schrieb:

    Danke, ich werd mir die Links mal anschauen.
    Wenn mir aber noch irgendjemand sagen kann, warum man überhaupt Matrizen verwenden sollte, obwohl sie doch, im Vergleich zu Quaternionen, so viele Nachteile haben, würd ich mich natürlich immer noch freuen. 🙂

    weil man mit den (einheits) quternionen und einen vector immer nur eine rotation und eine verschiebnung darstellen kann.
    Und mit einer matrix kann man noch skalierungen und andere affine abbildungen machen. Eine matrix ist daher eine allgemeinere lösung..



  • Man sollte eigentlich nicht Matrizen sondern die Eulerwinkel bzw. Yaw, Pitch, Roll zum Vergleich heranziehen. So wird eher deutlich, das die Quaternionen _keine_ Vereinfachung sind. Daher am besten nur benutzen, wenn nötig.

    Bye, TGGC \-/



  • TGGC schrieb:

    Man sollte eigentlich nicht Matrizen sondern die Eulerwinkel bzw. Yaw, Pitch, Roll zum Vergleich heranziehen. So wird eher deutlich, das die Quaternionen _keine_ Vereinfachung sind. Daher am besten nur benutzen, wenn nötig.

    Bye, TGGC \-/

    ansichts sache.
    da wo es auf performace ankommt ( und ich rede nicht von spielen) ist quaternions gefragt weil die halt ein paar multiplkationen sparen.
    und wenn man es einmal verstaden hat, .. warum sollte man die dann net nutzen?



  • xroads42 schrieb:

    da wo es auf performace ankommt ( und ich rede nicht von spielen) ist quaternions

    Das tun sie eben nicht. Einfach nur 3 Winkel zu verwalten ist einfacher. Zudem gibt es Fälle, wo sogar 2 oder nur einer der Winkel ausreicht, wenn man Objekte mit beschränkten Freiheitsgraden hat.

    Aber skizziere mal einen Anwendungsfall, wo dies tatsächlich schlimme Auswirkung auf die Geschwindigkeit hätte.

    Und zu guter letzt kann man sie auch benutzen ohne sie zu verstehen.

    Bye, TGGC \-/


Anmelden zum Antworten