Dari seorang penerjemah: tepatnya 175 tahun dan 3 hari yang lalu angka empat ditemukan. Untuk menghormati tanggal putaran ini, saya memutuskan untuk mengambil materi yang menjelaskan konsep ini dalam bahasa yang jelas.Konsep angka empat ditemukan oleh ahli matematika Irlandia
Sir William Rowan Hamilton pada hari Senin, 16 Oktober 1843 di Dublin, Irlandia. Hamilton dan istrinya pergi ke
Royal Irish Academy , dan melintasi
Kanal Kerajaan di atas
Broome Bridge , ia membuat penemuan yang menakjubkan, yang segera ia garuk di atas batu jembatan.
i 2 = j 2 = k 2 = i j k = - 1
Sebuah plakat peringatan di Jembatan Broome di atas Kanal Kerajaan untuk menghormati penemuan formula dasar untuk penggandaan angka empat.Pada artikel ini, saya akan mencoba menjelaskan konsep angka empat dengan cara yang mudah dipahami. Saya akan menjelaskan bagaimana Anda dapat memvisualisasikan angka empat, dan juga berbicara tentang operasi yang berbeda yang dapat dilakukan dengan angka empat. Selain itu, saya akan membandingkan penggunaan matriks, sudut Euler dan angka empat, dan kemudian mencoba menjelaskan kapan harus menggunakan angka empat bukan sudut atau matriks Euler, dan ketika Anda tidak perlu.
Isi
- 1. Pendahuluan
- 2. Bilangan kompleks
- 2.1. Penambahan dan pengurangan bilangan kompleks
- 2.2. Perkalian bilangan kompleks dengan nilai skalar
- 2.3. Produk bilangan kompleks
- 2.4. Kuadrat bilangan kompleks
- 2.5. Konjugasi bilangan kompleks
- 2.6. Nilai absolut dari bilangan kompleks
- 2.7. Quotient dari dua bilangan kompleks
- 3. Derajat saya
- 4. Pesawat kompleks
- 5. Pertanyaan
- 5.1. Pertanyaan sebagai pasangan yang dipesan
- 5.2. Penambahan dan Pengurangan Quaternion
- 5.3. Produk Pertanyaan
- 5.4. Quaternion nyata
- 5.5. Penggandaan Qalernion Skalar
- 5.6. Pertanyaan murni
- 5.7. Bentuk angka empat aditif
- 5.8. Quaternion tunggal
- 5.9. Bentuk biner Quaternion
- 5.10. Angka empat terkonjugasi
- 5.11. Tingkat kuota
- 5.12. Normalisasi quaternion
- 5.13. Angka empat terbalik
- 5.14. Produk Skalar Quaternion
- 6. Ternyata
- 7. Interpolasi angka empat
- 7.1. SLERP
- 7.1.1. Perbedaan kuota
- 7.1.2. Meningkatkan angka empat ke kekuatan
- 7.1.3. Perbedaan pecahan angka empat
- 7.1.4. Faktor yang Perlu Dipertimbangkan
- 7.2. Pasukan
- 8. Kesimpulan
- 9. Unduh demo
- 10. Referensi
Tidak mungkin untuk memahami angka empat dalam 45 menit.
Artikel ini memiliki banyak matematika, jadi ini bukan untuk para pengecut.
Pendahuluan
Dalam grafik komputer, matriks digunakan untuk menggambarkan posisi dalam ruang (perpindahan), serta orientasi dalam ruang (rotasi). Anda juga dapat menggunakan matriks transformasi tunggal untuk menggambarkan skala objek. Matriks ini dapat dianggap sebagai "ruang dasar". Jika kita mengalikan vektor atau titik (atau bahkan matriks lain) dengan matriks transformasi, maka kita "mentransformasikan" vektor ini, sebuah titik atau matriks ke dalam ruang yang direpresentasikan oleh matriks ini.
Dalam artikel ini saya tidak akan berbicara secara rinci tentang matriks transformasi. Rincian tentang matriks transformasi dapat ditemukan di artikel
Matriks saya.
Pada artikel ini saya ingin berbicara tentang cara alternatif untuk menggambarkan orientasi suatu objek (rotasi) di ruang angkasa menggunakan angka empat.
Bilangan kompleks
Untuk memahami sepenuhnya angka empat, pertama-tama kita harus memahami dari mana asalnya. Prinsip angka empat didasarkan pada konsep sistem bilangan kompleks.
Seiring dengan set angka yang terkenal (
alami ,
bilangan bulat ,
nyata dan
rasional ), sistem bilangan kompleks menambahkan serangkaian angka baru yang disebut bilangan imajiner. Angka imajiner diciptakan untuk menyelesaikan persamaan tertentu yang tidak memiliki solusi, misalnya:
x 2 + 1 = 0
Untuk mengatasi ungkapan ini, kita perlu menyatakannya
x 2 = - 1 , dan ini, seperti yang Anda tahu, tidak mungkin, karena kuadrat dari angka berapa pun (positif atau negatif) selalu positif.
Matematikawan tidak dapat menerima kenyataan bahwa ungkapan tidak memiliki solusi, sehingga konsep baru ditemukan - angka
imajiner yang dapat digunakan untuk menyelesaikan persamaan tersebut.
Angka imajiner adalah sebagai berikut:
i 2 = - 1
Jangan mencoba memahami asumsi ini, karena tidak ada alasan logis untuk keberadaannya. Kami hanya perlu menerima itu
saya - Ini hanya jumlah tertentu yang berbentuk bujur sangkar
- 1 .
Himpunan angka imajiner dapat dilambangkan sebagai
m a t h b b I .
Himpunan bilangan kompleks (dilambangkan dengan
m a t h b b C Apakah jumlah angka nyata dan imajiner dalam bentuk berikut:
z=a+bi a,b in mathbbR, i2=β1
Dapat juga dinyatakan bahwa semua bilangan real adalah kompleks dengan
b=0 , dan semua bilangan imajiner rumit dengan
a=0 .
Penambahan dan pengurangan bilangan kompleks
Bilangan kompleks dapat ditambahkan dan dikurangi dengan menambahkan dan mengurangi bagian nyata dan imajiner.
Tambahan:
(a1+b1i)+(a2+b2i)=(a1+a2)+(b1+b2)i
Pengurangan:
(a1+b1i)β(a2+b2i)=(a1βa2)+(b1βb2)i
Perkalian bilangan kompleks dengan nilai skalar
Bilangan kompleks dikalikan dengan skalar dengan mengalikan setiap anggota bilangan kompleks dengan skalar:
lambda(a+bi)= lambdaa+ lambdabi
Produk bilangan kompleks
Selain itu, bilangan kompleks juga dapat dikalikan menggunakan aturan aljabar biasa.
\ begin {array} {rcl} z_1 & = & (a_1 + b_1i) \\ z_2 & = & (a_2 + b_2i) \\ z_1z_2 & = & (a_1 + b_1i) (a_2 + b_2i) \\ & = & a_1a_2 + a_1b_2i + b_1a_2i + b_1b_2i ^ 2 \\ & = & (a_1a_2-b_1b_2) + (a_1b_2 + b_1a_2) i \ end {array}
Kuadrat bilangan kompleks
Juga, bilangan kompleks dapat dikuadratkan dengan mengalikannya sendiri:
\ begin {array} {rcl} z & = & (a + bi) \\ z ^ 2 & = & (a + bi) (a + bi) \\ & = & (a ^ 2-b ^ 2) + 2abi \ end {array}
Konjugasi bilangan kompleks
Nilai konjugasi dari bilangan kompleks adalah bilangan kompleks dengan tanda yang berubah dari bagian imajiner, dilambangkan sebagai
barz atau bagaimana
zβ .
\ begin {array} {rcl} z & = & (a + bi) \\ z ^ * & = & (a-bi) \ end {array}
Penggandaan bilangan kompleks dengan nilai konjugatnya memberikan hasil yang menarik.
\ begin {array} {rcl} z & = & (a + bi) \\ z ^ * & = & (a-bi) \\ zz ^ * & = & (a + bi) (a-bi) \ \ & = & a ^ 2-abi + abi + b ^ 2 \\ & = & a ^ 2 + b ^ 2 \ end {array}
Nilai absolut dari bilangan kompleks
Kita dapat menggunakan
bilangan konjugat dari bilangan kompleks untuk menghitung nilai absolut (atau
norma , atau
besarnya ) bilangan kompleks. Nilai absolut dari bilangan kompleks adalah akar kuadrat dari bilangan kompleks dikali
konjugatnya . Ini dilambangkan sebagai
|z| :
\ begin {array} {rcl} z & = & (a + bi) \\ | z | & = & \ sqrt {zz ^ *} \\ & = & \ sqrt {(a + bi) (a-bi)} \\ & = & \ sqrt {a ^ 2 + b ^ 2} \ end {array}
Quotient dari dua bilangan kompleks
Untuk menghitung hasil bagi dari dua bilangan kompleks, kita mengalikan pembilang dan penyebut dengan bilangan konjugator penyebut.
\ begin {array} {rcl} z_1 & = & (a_1 + b_1i) \\ z_2 & = & (a_2 + b_2i) \\ \ cfrac {z_1} {z_2} & = & \ cfrac {a_1 + b_1i} { a_2 + b_2i} \\ & = & \ cfrac {(a_1 + b_1i) (a_2-b_2i)} {(a_2 + b_2i) (a_2-b_2i)} \\ & = & \ cfrac {a_1a_2-a_1b_2i + b_1a_2i-bi ^ 2} {a_2 ^ 2 + b_2 ^ 2} \\ & = & \ cfrac {a_1a_2 + b_1b_2} {a_2 ^ 2 + b_2 ^ 2} + \ cfrac {b_1a_2-a_1b_2} {a_2 ^ 2 + b_2 ^ 2} i \ end {array}
Derajat i
Jika kami mengklaim itu
i2=β1 maka harus ada kemungkinan ereksi
i dan ke tingkat lain.
\ begin {array} {rrrrrrrr} i ^ 0 & = & & & & & & & 1 \ i ^ 1 & = & & & & & i \ i ^ 2 & = & & & & & & -1 -1 i ^ 3 & = & ii ^ 2 & = & & & -i \\ i ^ 4 & = & i ^ {2} i ^ {2} & = & & 1 \\ i ^ 5 & = & ii ^ 4 & = & & & i \\ i ^ 6 & = & ii ^ 5 & = & i ^ 2 & = & -1 \ end {array}
Jika kami terus merekam seri ini, kami mencatat polanya
(1,i,β1,βi,1, dots) .
Pola serupa muncul dengan peningkatan derajat negatif.
\ begin {array} {rcr} i ^ 0 & = & 1 \\ i ^ {- 1} & = & -i \\ i ^ {- 2} & = & -1 \\ i ^ {- 3} & = & i \\ i ^ {- 4} & = & 1 \\ i ^ {- 5} & = & -i \\ i ^ {- 6} & = & -1 \ end {array}
Mungkin Anda sudah melihat pola seperti itu dalam matematika, tetapi dalam bentuk
(x,y,βx,βy,x, dots) , yang diperoleh dengan memutar titik 90 Β° berlawanan arah jarum jam pada bidang Kartesius dua dimensi; baris
(x,βy,βx,y,x, dots) dibuat dengan memutar titik 90 derajat pada pesawat kartesius dua dimensi.
Pesawat kartesiusPesawat kompleks
Kita dapat juga menerapkan bilangan kompleks ke kisi dua dimensi, yang disebut bidang
kompleks , menghubungkan bagian
nyata ke sumbu horizontal, dan
imajiner ke vertikal.
Pesawat kompleksSeperti yang dapat Anda lihat dari baris sebelumnya, kita dapat mengatakan bahwa jika kita mengalikan bilangan kompleks dengan
i , maka kita dapat memutar bilangan kompleks pada bidang kompleks dengan kelipatan 90 Β°.
Mari kita periksa apakah ini benar. Kami mengambil titik sewenang-wenang di pesawat kompleks
p :
p=2+i
dan kalikan dengan
i telah menerima
q :
\ begin {array} {rcl} p & = & 2 + i \\ q & = & pi \\ & = & (2 + i) i \\ & = & 2i + i ^ 2 \\ & = & - 1 + 2i \ end {array}
Mengalikan
q pada
i kita dapatkan
r :
\ begin {array} {rcl} q & = & -1 + 2i \\ r & = & qi \\ & = & (-1 + 2i) i \\ & = & -i + 2i ^ 2 \\ & = & -2-i \ end {array}
Dan mengalikan
r pada
i kita dapatkan
s :
\ begin {array} {rcl} r & = & -2-i \\ s & = & ri \\ & = & (-2-i) i \\ & = & -2i-i ^ 2 \\ & = & 1-2i \ end {array}
Dan mengalikan
s pada
i kita dapatkan
t :
\ begin {array} {rcl} s & = & 1-2i \\ t & = & si \\ & = & (1-2i) i \\ & = & i-2i ^ 2 \\ & = & 2 + i \ end {array}
Dan kami mendapatkan apa yang kami mulai dengan (
p ) Jika kita meletakkan bilangan kompleks ini di bidang kompleks, kita mendapatkan hasil sebagai berikut.
Bilangan kompleks pada bidang kompleksSekarang kita dapat memutar pada bidang kompleks dan searah jarum jam, mengalikan angka kompleks dengan
βi .
Rotor
Kami juga dapat melakukan belokan sewenang-wenang pada bidang kompleks, mengatur nomor kompleks dalam bentuk berikut:
q= cos theta+i sin theta
Saat mengalikan angka kompleks dengan rotor
q kami mendapatkan formula umum:
\ begin {array} {rcl} p & = & a + bi \\ q & = & \ cos \ theta + i \ sin \ theta \\ pq & = & (a + bi) (\ cos \ theta + i \ sin \ theta) \\ a ^ {\ prime} + b ^ {\ prime} i & = & a \ cos \ theta-b \ sin \ theta + (a \ sin \ theta + b \ cos \ theta) i \ end {array}
Apa yang juga bisa ditulis dalam bentuk matriks:
\ begin {bmatrix} a ^ {\ prime} & -b ^ {\ prime} \\ b ^ {\ prime} & a ^ {\ prime} \ end {bmatrix} = \ begin {bmatrix} \ cos \ theta & - \ sin \ theta \\ \ sin \ theta & \ cos \ theta \ end {bmatrix} \ begin {bmatrix} a & -b \\ b & a \ end {bmatrix}
Apa yang dimaksud dengan cara memutar berlawanan arah jarum jam titik acak pada bidang kompleks relatif terhadap asal.
Pertanyaan
Setelah mempelajari tentang sistem bilangan kompleks dan bidang kompleks, kita dapat membawanya ke ruang tiga dimensi, menambah sistem bilangan bersama dengan
i dua angka imajiner lagi.
Kuota memiliki bentuk umum berikut
q=s+xi+yj+zk s,x,y,z in mathbbR
Di mana menurut ungkapan terkenal Hamilton:
i2=j2=k2=ijk=β1
\ begin {array} {ccc} ij = k & jk = i & ki = j \\ ji = -k & kj = -i & ik = -j \ end {array}
Anda mungkin memperhatikan bahwa hubungan keduanya
i ,
j dan
k sangat mirip dengan aturan penggandaan vektor vektor satuan Cartesian:
\ begin {array} {ccc} \ mathbf {x} \ times \ mathbf {y} = \ mathbf {z} & \ mathbf {y} \ kali \ mathbf {z} = \ mathbf {x} & \ mathbf { z} \ times \ mathbf {x} = \ mathbf {y} \\ \ mathbf {y} \ times \ mathbf {x} = - \ mathbf {z} & \ mathbf {z} \ kali \ mathbf {y} = - \ mathbf {x} & \ mathbf {x} \ kali \ mathbf {z} = - \ mathbf {y} \ end {array}
Hamilton juga memperhatikan angka imajiner itu
i ,
j dan
k dapat digunakan untuk mewakili tiga vektor satuan Kartesius
mathbfi ,
mathbfj dan
mathbfk dengan sifat yang sama dari angka imajiner, jadi
mathbfi2= mathbfj2= mathbfk2=β1 .
Representasi grafis dari properti mathbfij , mathbfjk , mathbfkiGambar di atas secara grafis menunjukkan hubungan antara vektor satuan Cartesian dalam formulir
mathbfi ,
mathbfj dan
mathbfk .
Pertanyaan sebagai pasangan yang dipesan
Kami juga dapat mewakili angka empat sebagai pasangan yang dipesan:
q=[s, mathbfv] s in mathbbR, mathbfv in mathbbR3
Dimana
mathbfv juga dapat direpresentasikan sebagai komponen individualnya:
q=[s,x mathbfi+y mathbfj+z mathbfk] s,x,y,z dalam mathbbR
Dengan menggunakan entri ini, kita dapat lebih mudah mewakili fitur umum angka empat dan bilangan kompleks.
Penambahan dan Pengurangan Quaternion
Kuota dapat ditambahkan dan dikurangi dengan cara yang sama dengan bilangan kompleks:
\ begin {array} {rcl} q_a & = & [s_a, \ mathbf {a}] \\ q_b & = & [s_b, \ mathbf {b}] \\ q_a + q_b & = & [s_a + s_b, \ mathbf {a} + \ mathbf {b}] \\ q_a-q_b & = & [s_a-s_b, \ mathbf {a} - \ mathbf {b}] \ end {array}
Quaternion bekerja
Kami juga dapat mengekspresikan produk dari dua angka empat:
\ begin {array} {rcl} q_a & = & [s_a, \ mathbf {a}] \\ q_b & = & [s_b, \ mathbf {b}] \\ q_ {a} q_ {b} & = & [s_ {a}, \ mathbf {a}] [s_ {b}, \ mathbf {b}] \\ & = & (s_ {a} + x_ {a} i + y_ {a} j + z_ {a } k) (s_ {b} + x_ {b} i + y_ {b} j + z_ {b} k) \\ & = & (s_ {a} s_ {b} -x_ {a} x_ {b} -y_ {a} y_ {b} -z_ {a} z_ {b}) \\ & & (s_ {a} x_ {b} + s_ {b} x {a} + y_ {a} z_ {b} } -y_ {b} z_ {a}) i \\ & & + (s_ {a} y_ {b} + s_ {b} y_ {a} + z_ {a} x_ {b} -z_ {b} x_ {a}) j \\ & & + (s_ {a} z_ {b} + s_ {b} z_ {a} + x_ {a} y_ {b} -x_ {b} y_ {a}) k \ end {array}
Yang memberi kita angka empat lagi. Jika kita mengganti angka imajiner dalam ekspresi sebelumnya
i ,
j dan
k pasangan dipesan (juga dikenal sebagai unit angka empat), maka kita dapatkan
i=[0, mathbfi] j=[0, mathbfj] k=[0, mathbfk]
Dan mengganti kembali ke ekspresi aslinya dengan
[1, mathbf0]=1 kami mendapatkan:
\ begin {array} {rcl} [s_ {a}, \ mathbf {a}] [s_ {b}, \ mathbf {b}] & = & (s_ {a} s_ {b} -x_ {a} x_ {b} -y_ {a} y_ {b} -z_ {a} z_ {b}) [1, \ mathbf {0}] \\ & & + (s_ {a} x_ {b} + s_ {b } x {a} + y_ {a} z_ {b} -y_ {b} z_ {a}) [0, \ mathbf {i}] \\ & & + (s_ {a} y_ {b} + s_ { b} y_ {a} + z_ {a} x_ {b} -z_ {b} x_ {a}) [0, \ mathbf {j}] \\ & & + (s_ {a} z_ {b} + s_ {b} z_ {a} + x_ {a} y_ {b} -x_ {b} y_ {a}) [0, \ mathbf {k}] \ end {array}
Dengan memperluas ekspresi ini ke jumlah pasangan yang dipesan, kita mendapatkan:
\ begin {array} {rcl} [s_ {a}, \ mathbf {a}] [s_ {b}, \ mathbf {b}] & = & [s_ {a} s_ {b} -x_ {a} x_ {b} -y_ {a} y_ {b} -z_ {a} z_ {b}, \ mathbf {0}] \\ & & + [0, (s_ {a} x_ {b} + s_ {b } x {a} + y_ {a} z_ {b} -y_ {b} z_ {a}) \ mathbf {i}] \\ & & + [0, (s_ {a} y_ {b} + s_ { b} y_ {a} + z_ {a} x_ {b} -z_ {b} x_ {a}) \ mathbf {j}] \\ & & + [0, (s_ {a} z_ {b} + s_ {b} z_ {a} + x_ {a} y_ {b} -x_ {b} y_ {a}) \ mathbf {k}] \ end {array}
Jika kita mengalikan dengan unit angka empat dan mengekstrak komponen vektor yang umum, kita dapat menulis ulang persamaan ini sebagai berikut:
\ begin {array} {rcl} [s_ {a}, \ mathbf {a}] [s_ {b}, \ mathbf {b}] & = & [s_ {a} s_ {b} -x_ {a} x_ {b} -y_ {a} y_ {b} -z_ {a} z_ {b}, \ mathbf {0}] \\ & & + [0, s_ {a} (x_ {b} \ mathbf {i} } + y_ {b} \ mathbf {j} + z_ {b} \ mathbf {k}) + s_ {b} (x_ {a} \ mathbf {i} + y_ {a} \ mathbf {j} + z_ { a} \ mathbf {k}) \\ & & (y_ {a} z_ {b} -y_ {b} z_ {a}) \ mathbf {i} + (z_ {a} x_ {b} -z_ { b} x_ {a}) \ mathbf {j} + (x_ {a} y_ {b} -x_ {b} y_ {a}) \ mathbf {k}] \ end {array}
Persamaan ini memberi kita jumlah dari dua pasangan yang dipesan. Pasangan yang dipesan pertama adalah
angka empat material , dan yang kedua adalah angka empat
murni . Dua pasangan berurutan ini dapat digabungkan menjadi satu pasangan berurutan:
\ begin {array} {rcl} [s_ {a}, \ mathbf {a}] [s_ {b}, \ mathbf {b}] & = & [s_ {a} s_ {b} -x_ {a} x_ {b} -y_ {a} y_ {b} -z_ {a} z_ {b}, \\ & & s_ {a} (x_ {b} \ mathbf {i} + y_ {b} \ mathbf {j} } + z_ {b} \ mathbf {k}) + s_ {b} (x_ {a} \ mathbf {i} + y_ {a} \ mathbf {j} + z_ {a} \ mathbf {k}) \\ & & + (y_ {a} z_ {b} -y_ {b} z_ {a}) \ mathbf {i} + (z_ {a} x_ {b} -z_ {b} x_ {a}) \ mathbf { j} + (x_ {a} y_ {b} -x_ {b} y_ {a}) \ mathbf {k}] \ end {array}
Jika kita gantikan, maka kita dapatkan
\ begin {array} {rcl} \ mathbf {a} & = & x_ {a} \ mathbf {i} + y_ {a} \ mathbf {j} + z_ {a} \ mathbf {k} \\ \ mathbf {b} & = & x_ {b} \ mathbf {i} + y_ {b} \ mathbf {j} + z_ {b} \ mathbf {k} \\ \ mathbf {a} \ cdot \ mathbf {b} & = & x_ {a} x_ {b} + y_ {a} y_ {b} + z_ {a} z_ {b} \\ \ mathbf {a} \ kali \ mathbf {b} & = & (y_ {a} z_ {b} -y_ {b} z_ {a}) \ mathbf {i} + (z_ {a} x_ {b} -z_ {b} x_ {a}) \ mathbf {j} + (x_ {a} y_ {b} -x_ {b} y_ {a}) \ mathbf {k} \ end {array}
Kami mendapatkan:
[sa, mathbfa][sb, mathbfb]=[sasbβ mathbfa cdot mathbfb,sa mathbfb+sb mathbfa+ mathbfa kali mathbfb]
Ini adalah persamaan umum untuk produk angka empat.
Quaternion nyata
Angka empat yang
nyata adalah angka empat yang menjadi vektor
mathbf0 :
q=[s, mathbf0]
Dan produk dari dua angka kuat
bahan adalah angka empat
bahan lain:
\ begin {array} {rcl} q_a & = & [s_a, \ mathbf {0}] \\ q_b & = & [s_b, \ mathbf {0}] \\ q_ {a} q_ {b} & = & [s_a, \ mathbf {0}] [s_b, \ mathbf {0}] \\ & = & [s_ {a} s_ {b}, \ mathbf {0}] \ end {array}
Yang mirip dengan produk dari dua bilangan kompleks yang mengandung istilah nol imajiner.
\ begin {array} {rcl} z_1 & = & a_1 + 0i \\ z_2 & = & a_2 + 0i \\ z_ {1} z_ {2} & = & (a_1 + 0i) (a_2 + 0i) \\ & = & a_ {1} a_ {2} \ end {array}
Penggandaan Qalernion Skalar
Kami juga dapat mengalikan angka empat dengan skalar, sambil mematuhi aturan berikut:
\ begin {array} {rcl} q & = & [s, \ mathbf {v}] \\ \ lambda {q} & = & \ lambda [s, \ mathbf {v}] \\ & = & [\ lambda {s}, \ lambda \ mathbf {v}] \ end {array}
Kami dapat memverifikasi ini menggunakan produk angka empat
nyata yang ditunjukkan di atas dengan mengalikan angka empat dengan skalar sebagai angka empat
nyata :
\ begin {array} {rcl} q & = & [s, \ mathbf {v}] \\ \ lambda & = & [\ lambda, \ mathbf {0}] \\ \ lambda {q} & = & [ \ lambda, \ mathbf {0}] [s, \ mathbf {v}] \\ & = & [\ lambda {s}, \ lambda \ mathbf {v}] \ end {array}
Pertanyaan murni
Selain angka empat
material , Hamilton juga mendefinisikan angka empat
murni sebagai angka empat dengan istilah skalar nol:
q=[0, mathbfv]
Atau jika Anda menuliskan komponen:
q=xi+yj+zk
Dan sekali lagi kita dapat mengambil produk dari dua angka empat:
\ begin {array} {rcl} q_a & = & [0, \ mathbf {a}] \\ q_b & = & [0, \ mathbf {b}] \\ q_ {a} q_ {b} & = & [0, \ mathbf {a}] [0, \ mathbf {b}] \\ & = & [- \ mathbf {a} \ cdot \ mathbf {b}, \ mathbf {a} \ kali \ mathbf {b} ] \ end {array}
sesuai dengan aturan produk angka empat yang disajikan di atas.
Bentuk angka empat aditif
Selain itu, kita dapat mengekspresikan angka empat sebagai jumlah dari bagian
nyata dan
murni angka empat:
\ begin {array} {rcl} q & = & [s, \ mathbf {v}] \\ & = & [s, \ mathbf {0}] + [0, \ mathbf {v}] \ end {array }
Quaternion tunggal
Mengambil vektor sewenang-wenang
mathbfv , vektor ini dapat diekspresikan baik dari segi nilai skalar dan ke arah sebagai berikut:
mathbfv=v mathbf hatv textwhere v=| mathbfv| textdan | mathbf hatv|=1
Menggabungkan definisi ini dengan definisi angka empat murni, kita memperoleh:
\ begin {array} {rcl} q & = & [0, \ mathbf {v}] \\ & = & [0, v \ mathbf {\ hat {v}}] \\ & = & v [0, \ mathbf {\ hat {v}}] \ end {array}
Kami juga dapat menggambarkan unit angka empat yang memiliki skalar nol dan vektor satuan:
hatq=[0, mathbf hatv]
Bentuk biner Quaternion
Sekarang kita dapat menggabungkan definisi angka empat tunggal dan bentuk aditif angka empat, memperoleh bentuk angka empat yang mirip dengan notasi yang digunakan dalam deskripsi bilangan kompleks:
\ begin {array} {rcl} q & = & [s, \ mathbf {v}] \\ & = & [s, \ mathbf {0}] + [0, \ mathbf {v}] \\ & = & [s, \ mathbf {0}] + v [0, \ mathbf {\ hat {v}}] \\ & = & s + v \ hat {q} \ end {array}
Yang memberi kita cara untuk merepresentasikan angka empat dalam bentuk yang sangat mirip dengan bilangan kompleks:
\ begin {array} {rcl} z & = & a + bi \\ q & = & s + v \ topi {q} \ end {array}
Angka konjugasi dari angka empat
Angka konjugat dari angka empat dapat dihitung dengan mengambil bagian vektor angka empat yang berlawanan dalam tanda:
\ begin {array} {rcl} q & = & [s, \ mathbf {v}] \\ q ^ * & = & [s, - \ mathbf {v}] \ end {array}
Produk angka empat dan nomor konjugatnya memberi kita yang berikut:
\ begin {array} {rcl} qq ^ * & = & [s, \ mathbf {v}] [s, - \ mathbf {v}] \\ & = & [s ^ 2- \ mathbf {v} \ cdot- \ mathbf {v}, - s \ mathbf {v} + s \ mathbf {v} + \ mathbf {v} \ times- \ mathbf {v}] \\ & = & [s ^ 2 + \ mathbf { v} \ cdot \ mathbf {v}, \ mathbf {0}] \\ & = & [s ^ 2 + v ^ 2, \ mathbf {0}] \ end {array}
Tingkat kuota
Ingat definisi norma bilangan kompleks:
\ begin {array} {rcl} | z | & = & \ sqrt {a ^ 2 + b ^ 2} \\ zz ^ * & = & | z | ^ 2 \ end {array}
Demikian pula, norma (atau besarnya) angka empat didefinisikan sebagai:
\ begin {array} {rcl} q & = & [s, \ mathbf {v}] \\ | q | & = & \ sqrt {s ^ 2 + v ^ 2} \ end {array}
Yang memungkinkan kita untuk mengekspresikan norma angka empat sebagai berikut:
qqβ=|q|2
Normalisasi quaternion
Memiliki definisi norma angka empat, kita dapat menggunakannya untuk menormalkan angka empat. Quaternion dinormalisasi dengan membaginya dengan
|q| :
q prime= fracq sqrts2+v2
Misalnya, mari kita menormalkan angka empat:
q=[1,4 mathbfi+4 mathbfjβ4 mathbfk]
Pertama kita perlu menghitung angka empat
angka :
\ begin {array} {rcl} | q | & = & \ sqrt {1 ^ 2 + 4 ^ 2 + 4 ^ 2 + (- 4) ^ 2} \\ & = & \ sqrt {49} \\ & = & 7 \ end {array}
Maka kita harus membagi angka empat dengan norma angka empat untuk menghitung angka empat yang dinormalisasi:
\ begin {array} {rcl} q ^ {\ prime} & = & \ cfrac {q} {| q |} \\ [1.0em] & = & \ cfrac {(1 + 4 \ mathbf {i} + 4 \ mathbf {j} -4 \ mathbf {k})} {7} \\ [1.0em] & = & \ cfrac {1} {7} + \ cfrac {4} {7} \ mathbf {i} + \ cfrac {4} {7} \ mathbf {j} - \ cfrac {4} {7} \ mathbf {k} \ end {array}
Angka empat terbalik
Angka empat terbalik dilambangkan sebagai
qβ1 . Untuk menghitung angka empat terbalik, kita mengambil angka konjugasi angka empat dan membaginya dengan kuadrat dari norma:
qβ1= fracqβ|q|2
Untuk menunjukkan ini, kita dapat menggunakan definisi terbalik:
qqβ1=[1, mathbf0]=1
Dan gandakan kedua sisi dengan angka konjugasi angka empat, yang akan memberi kita:
qβqqβ1=qβ
Dengan substitusi kita mendapatkan:
\ begin {array} {rcl} | q | ^ {2} q ^ {- 1} & = & q ^ {*} \\ q ^ {- 1} & = & \ cfrac {q ^ {*}} {| q | ^ {2}} \ end {array}
Untuk norma angka empat tunggal yang normanya 1, kita dapat menulis:
qβ1=qβ
Produk Skalar Quaternion
Demikian pula dengan produk skalar vektor, kita dapat menghitung produk skalar dari dua angka empat dengan mengalikan bagian skalar yang sesuai dan merangkum hasilnya:
\ begin {array} {rcl} q_1 & = & [s_1, x_1 \ mathbf {i} + y_1 \ mathbf {j} + z_1 \ mathbf {k}] \\ q_2 & = & [s_2, x_2 \ mathbf { i} + y_2 \ mathbf {j} + z_2 \ mathbf {k}] \\ q_1 {\ cdot} q_2 & = & s_ {1} s_ {2} + x_ {1} x_ {2} + y_ {1} y_ {2} + z_ {1} z_ {2} \ end {array}
Kami juga dapat menggunakan produk skalar angka empat untuk menghitung perbedaan sudut antara angka empat:
cos theta= fracs1s2+x1x2+y1y2+z1z2|q1||q2|
Untuk norma angka empat, kita dapat menyederhanakan persamaan:
cos theta=s1s2+x1x2+y1y2+z1z2
Ternyata
Biarkan saya mengingatkan Anda bahwa kami telah mengidentifikasi bentuk khusus dari bilangan kompleks yang disebut
rotor , yang dapat digunakan untuk memutar titik pada bidang dua dimensi sebagai berikut:
q= cos theta+i sin theta
Karena kesamaan bilangan kompleks dengan angka empat, seharusnya dimungkinkan untuk menyatakan angka empat yang dapat digunakan untuk memutar titik dalam ruang tiga dimensi:
q=[ cos theta, sin theta mathbfv]
Mari kita periksa apakah teori ini benar dengan menghitung produk angka empat
q dan vektor
mathbfp . Pertama, kita bisa ungkapkan
mathbfp angka empat murni sebagai berikut:
p=[0, mathbfp]
A
q Adalah norma angka tunggal dalam bentuk:
q=[s, lambda mathbf hatv]
Lalu
\ begin {array} {rcl} p ^ {\ prime} & = & qp \\ & = & [s, \ lambda \ mathbf {\ hat {v}}] [0, \ mathbf {p}] \\ & = & [- \ lambda \ mathbf {\ hat {v}} \ cdot \ mathbf {p}, s \ mathbf {p} + \ lambda \ mathbf {\ hat {v}} \ kali \ mathbf {p}] \ end {array}
Kita melihat bahwa hasilnya adalah angka empat umum dengan skalar dan bagian vektor.
Pertama-tama mari kita lihat kasus "khusus" di mana
mathbfp tegak lurus
mathbf hatv . Dalam hal ini, anggota produk skalar
β lambda mathbf hatv cdot mathbfp=0 dan hasilnya menjadi angka empat
murni :
p prime=[0,s mathbfp+ lambda mathbf hatv kali mathbfp]
Dalam hal ini, untuk berbelok
mathbfp tentang
mathbf hatv kami hanya mengganti
s= cos theta dan
lambda= sin theta .
p prime=[0, cos theta mathbfp+ sin theta mathbf hatv kali mathbfp]
Sebagai contoh, mari kita putar vektor
mathbfp 45 Β° relatif terhadap sumbu Z; lalu angka empat kami
q akan sama dengan:
\ begin {array} {rcl} q & = & [\ cos \ theta, \ sin \ theta \ mathbf {k}] \\ & = & \ kiri [\ frac {\ sqrt {2}} {2}, \ frac {\ sqrt {2}} {2} \ mathbf {k} \ kanan] \ end {array}
Dan mari kita ambil vektor
mathbfp yang berkaitan dengan kasus khusus di mana
mathbfp tegak lurus
mathbfk :
p=[0,2 mathbfi]
Sekarang mari kita cari bagian
qp
:
\ begin {array} {rcl} p ^ {\ prime} & = & qp \\ & = & \ kiri [\ frac {\ sqrt {2}} {2}, \ frac {\ sqrt {2}} { 2} \ mathbf {k} \ kanan] [0,2 \ mathbf {i}] \\ & = & \ kiri [0,2 \ frac {\ sqrt {2}} {2} \ mathbf {i} +2 \ frac {\ sqrt {2}} {2} \ mathbf {k} \ times \ mathbf {i} \ right] \\ & = & [0, \ sqrt {2} \ mathbf {i} + \ sqrt {2 } \ mathbf {j}] \ end {array}
Apa yang memberi kita angka empat
bersih diputar 45 Β° tentang sumbu
mathbfk . Kami juga dapat memastikan bahwa nilai vektor akhir dipertahankan:
\ begin {array} {rcl} | \ mathbf {p} ^ {\ prime} | & = & \ sqrt {\ sqrt {2} ^ {2} + \ sqrt {2} ^ {2}} \\ & = & 2 \ end {array}
Persis seperti yang kami harapkan!
Kami dapat menampilkan ini secara grafis dengan gambar berikut:
Putar Quaternion (1)Sekarang mari kita lihat angka empat yang tidak ortogonal
mathbfp . Jika kita ambil untuk bagian vektor angka empat offset dari 45 Β° dari
mathbfp lalu kita dapatkan:
\ begin {array} {rcl} \ mathbf {\ hat {v}} & = & \ frac {\ sqrt {2}} {2} \ mathbf {i} + \ frac {\ sqrt {2}} {2 } \ mathbf {k} \\ \ mathbf {p} & = & 2 \ mathbf {i} \\ q & = & [\ cos \ theta, \ sin \ theta \ mathbf {\ hat {v}}] \\ p & = & [0, \ mathbf {p}] \ end {array}
Dan mengalikan vektor kita
mathbfp pada
q kami mendapatkan:
\ begin {array} {rcl} p ^ {\ prime} & = & qp \\ & = & [\ cos \ theta, sin \ theta \ mathbf {\ hat {v}}] [0, \ mathbf {p }] \\ & = & [- \ sin \ theta \ mathbf {\ hat {v}} \ cdot \ mathbf {p}, \ cos \ theta \ mathbf {p} + \ sin \ theta \ mathbf {\ hat { v}} \ times \ mathbf {p}] \ end {array}
Setelah substitusi
mathbf hatv ,
mathbfp dan
theta=45 circ kami mendapatkan:
\ begin {array} {rcl} p ^ {\ prime} & = & \ kiri [- \ frac {\ sqrt {2}} {2} \ kiri (\ frac {\ sqrt {2}} {2} \ mathbf {i} + \ frac {\ sqrt {2}} {2} \ mathbf {k} \ kanan) \ cdot (2 \ mathbf {i}), \ frac {\ sqrt {2}} {2} 2 \ mathbf {i} + \ frac {\ sqrt {2}} {2} \ kiri (\ frac {\ sqrt {2}} {2} \ mathbf {i} + \ frac {\ sqrt {2}} {2} \ mathbf {k} \ kanan) \ times2 \ mathbf {i} \ kanan] \\ & = & [-1, \ sqrt {2} \ mathbf {i} + \ mathbf {j}] \ end {array}
Artinya, tidak lagi angka empat
murni , tidak diputar 45 Β° dan norma vektor tidak lagi sama dengan 2 (turun menjadi
sqrt3 )
Hasil ini dapat ditampilkan secara grafis.
Putaran Quaternion (2)Sebenarnya, itu tidak benar untuk mewakili angka empat p prime dalam ruang tiga dimensi, karena sebenarnya itu adalah vektor empat dimensi! Demi kesederhanaan, saya hanya akan menampilkan komponen vektor angka empat.
Namun, tidak semuanya hilang. Hamilton menemukan (tetapi tidak mempublikasikan ini) bahwa jika kita kemudian gandakan hasilnya
qp ke nilai sebaliknya
q , maka hasilnya akan menjadi angka empat
murni , dan norma komponen vektor akan dipertahankan. Mari kita lihat apakah ini bisa diterapkan dalam contoh kita.
Pertama, mari kita hitung
qβ1 :
\ begin {array} {rcl} q & = & \ kiri [\ cos \ theta, \ sin \ theta \ kiri (\ frac {\ sqrt {2}} {2} \ mathbf {i} + \ frac {\ sqrt {2}} {2} \ mathbf {k} \ kanan) \ kanan] \\ q ^ {- 1} & = & \ kiri [\ cos \ theta, - \ sin \ theta \ kiri (\ frac {\ sqrt {2}} {2} \ mathbf {i} + \ frac {\ sqrt {2}} {2} \ mathbf {k} \ kanan) \ kanan] \ end {array}
Di
theta=45 circ kami mendapatkan:
\ begin {array} {rcl} q ^ {- 1} & = & \ kiri [\ frac {\ sqrt {2}} {2}, - \ frac {\ sqrt {2}} {2} \ kiri ( \ frac {\ sqrt {2}} {2} \ mathbf {i} + \ frac {\ sqrt {2}} {2} \ mathbf {k} \ kanan) \ kanan] \\ & = & \ frac {1 } {2} \ kiri [\ sqrt {2}, - \ mathbf {i} - \ mathbf {k} \ kanan] \ end {array}
Menggabungkan nilai sebelumnya
qp dan
qβ1 kami mendapatkan:
\ begin {array} {rcl} qp & = & \ kiri [-1, \ sqrt {2} \ mathbf {i} + \ mathbf {j} \ kanan] \\ qpq ^ {- 1} & = & \ kiri [-1, \ sqrt {2} \ mathbf {i} + \ mathbf {j} \ kanan] \ frac {1} {2} \ kiri [\ sqrt {2}, - \ mathbf {i} - \ mathbf {k} \ kanan] \\ & = & \ frac {1} {2} \ kiri [- \ sqrt {2} - \ kiri (\ sqrt {2} \ mathbf {i} + \ mathbf {j} \ kanan ) \ cdot (- \ mathbf {i} - \ mathbf {k}), \ mathbf {i} + \ mathbf {k} + \ sqrt {2} \ kiri (\ sqrt {2} \ mathbf {i} + \ mathbf {j} \ kanan) - \ mathbf {i} + \ sqrt {2} \ mathbf {j} + \ mathbf {k} \ kanan] \\ & = & \ frac {1} {2} \ kiri [- \ sqrt {2} + \ sqrt {2}, \ mathbf {i} + \ mathbf {k} +2 \ mathbf {i} + \ sqrt {2} \ mathbf {j} - \ mathbf {i} + \ sqrt {2} \ mathbf {j} + \ mathbf {k} \ kanan] \\ & = & \ kiri [0, \ mathbf {i} + \ sqrt {2} \ mathbf {j} + \ mathbf {k} \ kanan] \ end {array}
Yang merupakan angka empat
murni , dan norma hasilnya adalah:
\ begin {array} {rcl} | p ^ {\ prime} | & = & \ sqrt {1 ^ 2 + \ sqrt {2} ^ 2 + 1 ^ 2} \\ & = & \ sqrt {4} \\ & = & 2 \ end {array}
yang sama
mathbfp , yaitu, norma vektor dipertahankan.
Gambar di bawah ini menunjukkan hasil rotasi.
Putaran Quaternion (3)Kita melihat bahwa hasilnya adalah angka empat murni, dan norma dari vektor asli dipertahankan, tetapi vektor diputar 90 Β°, bukan 45 Β°, yang dua kali lebih banyak dari yang diperlukan! Oleh karena itu, untuk rotasi vektor yang benar
mathbfp di sudut
theta relatif terhadap sumbu sewenang-wenang
mathbf hatv kita perlu mengambil setengah sudut dan membuat angka empat berikut:
q= kiri[ cos frac12 theta, sin frac12 theta mathbf hatv kanan]
Apa pandangan umum dari angka empat berputar!
Interpolasi Quaternion
Salah satu alasan paling penting untuk menggunakan angka empat dalam grafik komputer adalah angka empat menggambarkan rotasi dalam ruang dengan sangat baik. Quaternion menghilangkan beban cara lain untuk memutar titik dalam ruang 3D, seperti
bingkai lipat , di mana masalahnya mewakili rotasi di sudut Euler.
Dengan menggunakan angka empat, kita dapat mendefinisikan beberapa metode yang mewakili interpolasi rotasi dalam ruang 3D. Metode pertama yang saya pertimbangkan disebut
SLERP . Ini digunakan untuk menginterpolasi titik antara dua orientasi dengan lancar. Metode kedua adalah pengembangan
SLERP dan disebut
SQUAD . Ini digunakan untuk interpolasi sepanjang serangkaian orientasi yang menentukan jalur.
SLERP
SLERP adalah kependekan dari Spherical
L inear Interpolasi (interpolasi linier berbentuk bola).
SLERP menyediakan kemampuan untuk menginterpolasi titik antara dua orientasi dengan lancar.
Saya akan menunjuk orientasi pertama sebagai
q1 , dan yang kedua sebagai
q2 . Titik interpolasi dilambangkan dengan
mathbfp , titik interpolasi dilambangkan dengan
mathbfp prime . Parameter interpolasi
t akan interpolasi
mathbfp dari
q1 di
t=0 sebelumnya
q2 di
t=1 .
Formula interpolasi linier standar adalah:
mathbfp prime= mathbfp1+t( mathbfp2β mathbfp1)
Berikut adalah langkah-langkah dasar untuk menerapkan persamaan ini:
- Kami menghitung perbedaan antara mathbfp1 dan mathbfp2 .
- Ambil bagian pecahan dari perbedaan ini.
- Perbaiki nilai awal dengan perbedaan fraksional antara dua poin.
Kita dapat menggunakan prinsip dasar yang sama untuk menginterpolasi antara dua orientasi angka empat.
Perbedaan kuota
Langkah pertama berarti kita perlu menghitung selisihnya
q1 dan
q2 . Dalam konteks angka empat, ini mirip dengan menghitung perbedaan sudut antara dua angka empat.
Deltaq=qβ11q2
Meningkatkan angka empat ke kekuatan
Langkah selanjutnya adalah mengambil bagian fraksional dari perbedaan ini. Kita bisa menghitung bagian pecahan angka empat dengan menaikkannya ke kekuatan yang nilainya berada dalam kisaran
[0...1] .
Rumus umum untuk menaikkan angka empat ke kekuatan memiliki bentuk berikut:
qt= exp(t logq)
Di mana fungsi eksponensial untuk angka empat terlihat seperti ini:
\ begin {array} {rcl} \ exp (q) & = & \ exp \ kiri ([0, \ theta \ mathbf {\ hat {v}}] \ kanan) \\ & = & [\ cos \ theta , \ sin \ theta \ mathbf {\ hat {v}}] \ end {array}
Dan logaritma angka empat memiliki bentuk:
\ begin {array} {rcl} \ log {q} & = & \ log (\ cos \ theta {+} \ sin \ theta \ mathbf {\ hat {v}}) \\ & = & \ log \ kiri (\ exp (\ theta \ mathbf {\ hat {v}}) \ kanan) \\ & = & \ theta \ mathbf {\ hat {v}} \\ & = & [0, \ theta \ mathbf {\ hat {v}}] \ end {array}
Di
t=0 kami memiliki yang berikut:
\ begin {array} {rcl} q ^ 0 & = & \ exp (0 \ log {q}) \\ & = & \ exp ([\ cos (0), \ sin (0) \ mathbf {\ hat {v}}]) \\ & = & \ exp ([1, \ mathbf {0}]) \\ & = & [1, \ mathbf {0}] \ end {array}
Dan kapan
t=1 kami punya
\ begin {array} {rcl} q ^ 1 & = & \ exp (\ log {q}) \\ & = & q \ end {array}
Perbedaan pecahan angka empat
Untuk menghitung rotasi sudut interpolasi, kami mengubah orientasi awal
q1 ke bagian pecahan dari perbedaan antara
q1 dan
q2 .
q prime=q1 kiri(qβ11q2 kanan)t
Apa pandangan umum interpolasi linear bola untuk angka empat. Namun, ini bukan jenis persamaan
SLERP yang biasa digunakan dalam praktik.
Kita dapat menerapkan rumus yang sama untuk melakukan interpolasi bola vektor ke angka empat. Bentuk umum interpolasi bola untuk vektor didefinisikan sebagai berikut:
mathbfvt= frac sin(1βt) theta sin theta mathbfv1+ frac sint theta sin theta mathbfv2
Secara grafis, ini dapat ditunjukkan pada gambar berikut.
Interpolasi QuaternionFormula ini dapat diterapkan ke angka empat tanpa perubahan:
qt= frac sin(1βt) theta sin thetaq1+ frac sint theta sin thetaq2
Dan kita bisa mendapatkan sudutnya
theta menghitung produk skalar
q1 dan
q2 .
\ begin {array} {rcl} \ cos \ theta & = & \ cfrac {q_1 {\ cdot} q_2} {| q_1 || q_2 |} \\ & = & \ cfrac {s_ {1} s_ {2} + x_ {1} x_ {2} + y_ {1} y_ {2} + z_ {1} z_ {2}} {| q_1 || q_2 |} \\ \ theta & = & \ cos ^ {- 1} \ kiri (\ cfrac {s_ {1} s_ {2} + x_ {1} x_ {2} + y_ {1} y_ {2} + z_ {1} z_ {2}} {| q_1 || q_2 |} \ kanan) \ end {array}
Faktor yang Perlu Dipertimbangkan
Implementasi ini memiliki dua masalah untuk dipertimbangkan saat menggunakannya.
Pertama, jika produk skalar dari angka empat ternyata menjadi nilai negatif, maka interpolasi akan berjalan jauh pada bola empat dimensi, dan ini tidak selalu diinginkan.
Untuk mengatasi masalah ini, kita dapat memeriksa hasil produk skalar dan jika negatif, maka kita dapat mengambil nilai yang berlawanan dengan salah satu orientasi. Melawan skalar dan bagian vektor angka empat tidak mengubah orientasi yang diwakilinya, tetapi dengan melakukan ini, kami menjamin bahwa rotasi akan terjadi di sepanjang jalur "terpendek".Masalah lain muncul jika perbedaan sudut antaraq1 dan
q2 sangat kecil, sementara sinΞΈ menjadi 0. Jika ini terjadi, maka bagi dengan sinΞΈkita bisa mendapatkan hasil yang tidak pasti. Dalam hal ini, Anda dapat kembali menggunakan interpolasi linierq1 dan
q2 .
Pasukan
Sama seperti SLERP dapat digunakan untuk interpolasi antara dua angka empat, SQUAD ( S pherical dan Quad rangle - spherical dan quadrangular) dapat digunakan untuk interpolasi yang mulus di sepanjang jalur rotasi.Jika kami memiliki sejumlah angka:q1,q2,q3,β―,qnβ2,qnβ1,qn
Dan kami mendefinisikan angka empat "pembantu" ( si ), yang dapat kita pertimbangkan sebagai titik kontrol menengah:si=exp(βlog(qi+1qβ1i)+log(qiβ1qβ1i)4)qi
Orientasi sepanjang bagian kurva didefinisikan sebagai:qiβ1,qi,qi+1,qi+2
pada saat t memberikan kita:squad(qi,qi+1,si,si+1,t)=slerp(slerp(qi,qi+1,t),slerp(si,si+1,t),2t(1βt))
Kesimpulan
Meskipun sulit untuk dipahami, ketika bekerja dengan belokan, angka empat memberikan beberapa keuntungan yang jelas dibandingkan dengan matriks dan sudut Euler.- SLERP SQUAD .
- , , .
- - . , ( , ).
- , .
- 4 (3, . ), 9 .
Namun, bersama dengan semua keuntungan menggunakan angka empat, ada juga beberapa kelemahan.- Kuuat bisa menjadi tidak valid karena kesalahan pembulatan angka floating point; Namun, "crept in error" ini dapat dihilangkan dengan melakukan renormalisasi angka empat.
- Mungkin hambatan yang paling signifikan untuk penggunaan angka empat adalah kompleksitas tinggi dari pemahaman mereka. Saya harap Anda menyelesaikan masalah ini dengan membaca artikel saya.
Ada banyak perpustakaan matematika yang mengimplementasikan angka empat, dan hanya beberapa dari mereka yang mengimplementasikan angka empat dengan benar. Dalam pengalaman saya sendiri, perpustakaan matematika yang baik dengan implementasi quaternions berkualitas tinggi adalah GLM (OpenGL Math Library). Jika Anda ingin menggunakan angka empat dalam aplikasi Anda sendiri, maka saya merekomendasikan perpustakaan ini.Unduh demo
, .
Unity 3.5.2,
. zip Windows, Unity Mac.
Understanding Quaternions.zip
Vince, J (2011). Quaternions for Computer Graphics. 1st. ed. London: Springer.
| 
Dunn, F. and Parberry, I. (2002). 3D Math Primer for Graphics and Game Development. 1st. ed. Plano, Texas: Wordware Publishing, Inc. |