Mengapa orang menggunakan angka empat?

15

Saya telah menggunakan mereka sebagai kotak hitam untuk sementara waktu, saya hanya belajar tentang matematika tetapi saya hanya ingin beberapa jawaban pasti untuk pertanyaan ini.

Sejauh ini, satu-satunya manfaat yang saya temui secara pribadi adalah kemampuan untuk SLERP antara dua sudut - untuk mencapai efek yang sama dengan vektor yang Anda butuhkan dengan pekerjaan yang sangat buruk (secara intrinsik menghubungkan 0 dan 2PI bersama-sama).

SirYakalot
sumber
SLERP bukan hanya interpolasi antara dua sudut: dapat dilakukan dengan mudah dengan matriks juga. Ini dapat interpolasi antara dua orientasi arbitrer yang jauh lebih kompleks ketika dilakukan dengan matriks.
Calmarius

Jawaban:

23

Quaternions memecahkan beberapa masalah dengan elegan:

  • Mereka kompak seperti representasi sumbu-sudut (4 nilai skalar)
  • Mereka mudah dikonversi ke dan dari representasi matriks
  • Interpolasi bekerja dari sudut awal hingga akhir tanpa casing khusus
  • Mereka tidak pernah menunjukkan kunci gimbal

Anda dapat mengatasi masalah ini dengan representasi lain, tetapi angka empat cocok untuk kesederhanaan dan kinerja algoritmik mereka.

Kai
sumber
1
ini PERSIS apa yang saya cari!
SirYakalot
@ Kai Interpolation works from any start to end angle without special casing, sebenarnya ada kasus khusus, ketika mereka tidak berada di belahan yang sama dari hypersphere, ini sebenarnya adalah kasus khusus yang harus Anda pertimbangkan, karena selalu ada 2 arah untuk menyisipkan ke target dan Anda ingin memilih yang benar
Maik Semder
2
@ Kai They never exhibit gimbal lock- itu tidak sepenuhnya benar. Mereka bisa, kalikan saja q(Xaxis, 0) * q(YAxis, 90) * q(Zaxis, 20). Benar, mereka dapat digunakan untuk menghindari kunci gimbal, tetapi demikian juga matriks, sudut sumbu dan lainnya. Jadi itu bukan properti unik angka empat. Sebenarnya Anda bisa melakukannya dengan sebagian besar representasi rotasi, tetapi sudut euler. Satu-satunya pesan yang benar di sini adalah "Engsel Euler menderita kunci gimbal", tetapi dapat dibalas oleh banyak representasi rotasi lainnya, tidak hanya angka empat.
Maik Semder
Baik kinerja angka empat umumnya lebih baik dalam semua kasus, misalnya lebih cepat untuk memutar vektor menggunakan matriks 3x3 daripada menggunakan angka empat. Berikut ini makalah yang menarik tentangnya.
Maik Semder
3

Penggunaan SLERP yang Anda sebutkan adalah kasus khusus dari atribut angka empat yang lebih umum: Anda dapat dengan lancar menyisipkan di antara berbagai nilai rotasi.

Ketika menginterpolasi nilai rotasi sudut euler Anda mendapatkan gerakan tampak aneh, dan tidak ada cara logis untuk menginterpolasi nilai-nilai rotasi sudut sumbu (baik, selain dari dua sudut berbeda di sekitar sumbu yang sama).

jhocking
sumber
+1. Seseorang dapat menginterpolasi antara (w1, alpha1) dan (w2, alpha2) dengan mengubah representasi sumbu sudut ini menjadi quat dan kemudian menggunakan SLERP. Tentu saja, seseorang dapat melakukan hal seperti itu melalui skema Bezier / de Casteljau / skema spline dan menggunakan "polygon / set" dari angka-angka penting sedemikian rupa dan menghasilkan rotasi yang rumit. Ini mungkin satu-satunya hal yang angka empat lakukan lebih alami daripada representasi lain sejak SLERP dan multiSLERP atau variasinya (NLERP, SQUAD) muncul dengan sumbu rotasi tengah / pasangan sudut yang terletak di jalur rotasi geodesik / terpendek. Pujian.
teodron