Pemrogram grafik menggunakan
angka empat untuk merekam putaran tiga dimensi. Namun,
angka empat sulit untuk dipahami karena mereka dipelajari secara dangkal . Kami hanya mengambil tabel perkalian yang aneh dan definisi samar lainnya tentang iman, dan menggunakannya sebagai "kotak hitam" yang memutar vektor sesuai kebutuhan. Mengapa
m a t h b f i 2 = m a t h b f j 2 = m a t h b f k 2 = - 1 dan
m a t h b f i m a t h b f j = m a t h b f k ? Mengapa kita mengambil vektor dan mengubahnya menjadi vektor "imajiner" untuk mengubahnya, misalnya
mathbfq(x mathbfi+y mathbfj+z mathbfk) mathbfq∗ ? Tapi siapa yang peduli jika semuanya bekerja, kan?
Ada cara untuk menggambarkan rotasi yang disebut
rotor , yang mengacu pada bidang bilangan kompleks (dalam 2D) dan angka empat (dalam 3D), dan bahkan digeneralisasikan ke sejumlah dimensi.
Kita dapat membuat rotor
hampir sepenuhnya dari awal , alih-alih menentukan angka empat dari nol dan mencoba menjelaskan bagaimana mereka bekerja
secara surut . Butuh lebih banyak waktu, tetapi bagi saya itu sepadan, karena mereka jauh lebih mudah dipahami!
Selain itu, untuk visualisasi dan pemahaman rotor tiga dimensi, tidak perlu menggunakan dimensi spasial keempat.
Akan lebih bagus jika mereka mulai menggantikan penggunaan dan studi angka empat, menggantinya dengan rotor. Menggantinya sangat sederhana, tetapi
kodenya akan tetap hampir sama . Segala sesuatu yang dapat dilakukan dengan angka empat, misalnya, menyisipkan dan melepas kunci gandar (kunci Gimbal), dapat dilakukan dengan rotor.
Tetapi kita mulai mengerti lebih banyak.(Dalam artikel asli, semua bagan bersifat interaktif, dan artikel diikuti oleh video. Dengan mengeklik tombol putar, Anda dapat memulai bagian yang sesuai dari video. Anda juga dapat mengklik tombol transisi di bawah video untuk pergi ke bagian yang sesuai dari artikel. Anda dapat memperluas jendela sehingga ada lebih banyak ruang untuk video , atau atur ukuran konstan untuk itu.)
1. Mengubah pesawat
1.1. Giliran dilakukan pada pesawat dua dimensi.
Dalam ruang tiga dimensi, kita biasanya melihat belokan terjadi di sekitar sumbu, seperti roda yang berputar pada sumbu, tetapi sebaliknya akan lebih tepat untuk mewakili bidang di mana roda berada. Bidang ini tegak lurus terhadap sumbu.
Wanita tua ini memutar roda di pesawat mathbfxz tegak lurus terhadap sumbu mathbfy .Ini terjadi karena jika kita membagi vektor menjadi dua bagian, salah satunya terletak pada bidang (
mathbfv parallel ), dan yang lainnya di luar (
mathbfv pelaku ), maka rotasi memutar bagian dalam, dan bagian luar tetap tidak berubah.
Rotasi di pesawat yx [ dalam artikel asli, animasi ini dan kamera bisa dipindahkan ]Dalam ruang dua dimensi hanya ada satu bidang di mana rotasi dimungkinkan (
tidak ada bagian eksternal ). Oleh karena itu, untuk mengasumsikan bahwa rotasi yang terjadi di sekitar sumbu ketiga (tegak lurus terhadap bidang 2D) adalah benar-benar salah, karena untuk menyelesaikan rotasi kita tidak boleh menambahkan dimensi lain.
Jika kita memberi tahu "pemilik tanah datar" dua dimensi (yang tinggal di dalam bidang 2D dan tidak pernah keluar dari ruang dua dimensi) tentang sumbu rotasi tegak lurus, dia akan bertanya: "Di mana arah titik sumbu ini? Saya tidak bisa membayangkannya! "
CatatanDan dalam dimensi yang lebih tinggi (4D dan lebih tinggi) tidak mungkin untuk menentukan satu vektor normal ke bidang 2D (misalnya, dalam 4D bidang 2D memiliki dua arah normal, di 5D ada tiga arah normal, dan dalam n D. mereka n - 2 )
1.2. Arah belokan yang tepat
Selain itu, ketika kita berpikir tentang rotasi di sekitar sumbu, arah rotasi tidak ditentukan, dan karena itu harus ditentukan oleh aturan (yang disebut "aturan tangan kanan").
Namun, jika kita mengasumsikan bahwa belokan terjadi di dalam pesawat, maka arahnya menjadi jelas: rotasi di pesawat
mathbfxy berarti rotasi yang menggerakkan vektor (unit)
mathbfx ke vektor (unit)
mathbfy di dalam pesawat mereka bersama-sama terbentuk. Rotasi di pesawat
mathbfyx Adalah rotasi ke arah yang berlawanan: ia menggerakkan vektor
mathbfy ke vektor
mathbfx .
CatatanSaya ingat bahwa ketika saya pertama kali belajar tentang tiga matriks rotasi 3D di sepanjang pesawat ortogonal, saya pertama kali berpikir: apa itu matriks m a t h b f R y memiliki tanda kebalikannya? Ini karena aturan tangan kanan, yang menurutnya kita harus menentukan rotasi di sekitar sumbu m a t h b f y sehingga berjalan dari m a t h b f z untuk mathbfx bukan dari mathbfx untuk mathbfz untuk mempertahankan arah rotasi "tangan kanan" yang konstan. Ketika kita mulai berbicara langsung tentang pesawat itu sendiri, aturan ini menjadi tidak perlu.
R_X (\ theta) = \ begin {bmatrix} 1 & 0 & 0 \\ 0 & cos (\ theta) & -sin (\ theta) \\ 0 & sin (\ theta) & cos (\ theta) \ end {bmatrix} \: \: \: R_Y (\ theta) = \ begin {bmatrix} cos (\ theta) & 0 & \ bbox [5px, batas bawah: 2px merah solid] {\ \} sin (\ theta) \\ 0 & 1 & 0 \\ \ bbox [5px, batas-bawah: 2px merah solid] {-} sin (\ theta) & 0 & cos (\ theta) \ end {bmatrix} \: \: \: R_Z (\ theta) = \ begin {bmatrix} cos (\ theta) & -sin (\ theta) & 0 \\ sin (\ theta) & cos (\ theta) & 0 \\ 0 & 0 & 1 \ end {bmatrix }
2. Bivektor
2.1. Pekerjaan eksternal
Untuk menghitung sumbu rotasi ketika memutar satu vektor
mathbfa ke vektor lain
mathbfb kami mengambil produk vektor dari dua vektor untuk mendapatkan vektor yang tegak lurus terhadap keduanya. Tetapi mengapa kita perlu "meninggalkan" pesawat jika rotasi pada dasarnya adalah operasi dua dimensi?
Sebagai gantinya, kami mengambil apa yang disebut
produk eksternal (juga dikenal sebagai produk vektor dua dimensi), dua vektor, menciptakan elemen baru yang disebut "bivector" (atau 2-vektor)
mathbfB mewakili bidang yang membentuk dua vektor bersama. Jika produk vektor membuat
vektor normal ke bidang, maka produk eksternal membuat
bidang itu sendiri . Perhitungan normal ke pesawat tidak relevan.
mathbfB= mathbfa wedge mathbfb
mathbfB dapat direpresentasikan sebagai jajaran genjang yang dibangun dari vektor
mathbfa dan
mathbfb di pesawat yang mereka bersama membentuk.
Pada awalnya, gagasan bivektor mungkin tampak aneh, tetapi segera kita akan melihat bahwa mereka hampir sama
mendasarnya dengan vektor itu sendiri . Jika vektor dapat dibandingkan dengan garis lurus, maka bivektornya mirip dengan bidang ... Sifat-sifat produk eksternal menangkap sifat-sifat penting pesawat.
2.2. Dasar untuk bivektor
Bivektor, seperti vektor, memiliki komponen. Tetapi mereka ditentukan berdasarkan
pesawat , dan bukan
garis lurus , seperti vektor.
Tiga bidang dasar ortogonal adalah
mathbfx wedge mathbfy ,
mathbfx wedge mathbfz dan
mathbfy wedge mathbfz seperti yang kita lihat dari gambar.
Tapi pertama-tama, mari kita lihat kasus dua dimensi yang lebih sederhana ...
2.3. Bivektor dua dimensi
Dalam 2D, hanya ada satu bidang, yaitu
mathbfxy . Artinya, bivektor dua dimensi hanya memiliki satu komponen. Untuk bivektor terdiri dari vektor
mathbfa dan
mathbfb adalah nomornya
Bxy sama dengan luas (dengan tanda) dari jajar genjang yang dibentuk oleh dua vektor.
mathbfB= mathbfa wedge mathbfb=Bxy( mathbfx wedge mathbfy)
Dalam artikel asli dengan bivektor 2D, Anda dapat bereksperimen pada grafik interaktif dengan mengubah vektor (tunggal) yang terdiri dari:
Anda dapat melihat bahwa ketika sudut antara vektor berubah, area jajaran genjang berubah (sesuai dengan sinus sudut).
Jika vektor-vektornya sama atau paralel, maka vektor-vektor itu tidak membentuk bidang biasa dan hasilnya akan nol. Properti sederhana ini mendefinisikan apa yang dimaksud bivektor:
mathbfa wedge mathbfa=0
Melihat jumlah dari dua vektor, Anda dapat melihat bahwa properti mengikuti:
\ begin {eqnarray} (\ mathbf {a} + \ mathbf {b}) \ wedge (\ mathbf {a} + \ mathbf {b}) & = & 0 \\ \ mathbf {a} \ wedge \ mathbf { a} + \ mathbf {b} \ wedge \ mathbf {a} + \ mathbf {a} \ wedge \ mathbf {b} + \ mathbf {b} \ wedge \ mathbf {b} & = & 0 \\ \ mathbf { b} \ wedge \ mathbf {a} + \ mathbf {a} \ wedge \ mathbf {b} & = & 0 \ end {eqnarray}
Oleh karena itu:
mathbfa wedge mathbfb=− mathbfb wedge mathbfa
Sama seperti
arah rotasi , urutan argumen dalam karya eksternal juga penting. Menyusun ulang argumen mengubah tanda hasil (ini disebut "antisimetri").
Pada bagan, tanda ditandai dengan warna yang berubah dari biru menjadi hijau. Tanda berubah saat pergantian
mathbfa masuk
mathbfb bergerak dari searah jarum jam ke berlawanan arah jarum jam (mis., jika cocok dengan arah (dari
mathbfx untuk
mathbfy ) atau arah (dari
mathbfy untuk
mathbfx )).
Anda dapat melihat bahwa sifat-sifat produk eksternal diatur sehingga mereka menyampaikan sifat-sifat pesawat dan belokan.
2.4. Bivektor dua dimensi vektor nonunit
Jelas, vektor tidak harus memiliki panjang satuan, dan batasan ini telah dihapus pada grafik ini:
Luas jajaran genjang dengan tanda sebanding dengan panjang kedua vektor:
Bxy=sin( alpha) |a | |b | dimana
alpha Apakah sudut antara
mathbfa dan
mathbfb . Misalnya, ketika menggandakan panjang satu vektor, area tersebut berlipat ganda.
Kita bisa mendapatkan nilai sebenarnya dengan mengganti vektor sebagai komponen:
\ begin {eqnarray} \ mathbf {a} \ wedge \ mathbf {b} & = & (a_x \ mathbf {x} + a_y \ mathbf {y}) \ wedge (b_x \ mathbf {x} + b_y \ mathbf { y}) \\ & = & a_x b_x (\ mathbf {x} \ wedge \ mathbf {x}) + a_x b_y (\ mathbf {x} \ wedge \ mathbf {y}) + a_y b_x (\ mathbf {y} \ wedge \ mathbf {x}) + a_y b_y (\ mathbf {y} \ wedge \ mathbf {y}) \\ & = & a_x b_y (\ mathbf {x} \ wedge \ mathbf {y}) + a_y b_x ( \ mathbf {y} \ wedge \ mathbf {x}) \\ & = & a_x b_y (\ mathbf {x} \ wedge \ mathbf {y}) - a_y b_x (\ mathbf {x} \ wedge \ mathbf {y} ) \\ & = & (a_x b_y - a_y b_x) (\ mathbf {x} \ wedge \ mathbf {y}) \ end {eqnarray}
Bxy=axby−bxay
2.5. Bivektor 3D
Sama seperti koordinat vektor
mathbfv dapat dianggap
proyeksi vektor pada tiga sumbu dasar ortogonal (
mathbfx ,
mathbfy ,
mathbfz ), koordinat bivector
mathbfB dapat dianggap
proyeksi lebih kecil dari pesawat pada tiga bidang dasar ortogonal.
Proyeksi vektor adalah
panjang vektor ini di sepanjang setiap vektor basis, dan proyeksi bivektor adalah
area bidang pada setiap bidang basis.
Untuk vektor:
mathbfv= bbox[5px,batas−bawah:2pxmerahsolid]vx mathbfx+ bbox[5px,batas−bawah:hijausolid2px]vy mathbfy+ bbox[5px,batasbawah:2pxbirusolid]vz mathbfz
Untuk bivector:
mathbfB= bbox[5px,batas−bawah:2pxsolidcoral]Bxy( mathbfx wedge mathbfy)+ bbox[5px,batas−bawah:2pxemasmurni]Bxz( mathbfx wedge mathbfz)+ bbox[5px,batasbawah:2pxsolidDarkViolet]Byz( mathbfy wedge mathbfz)
Dimana
Bxy ,
Bxz ,
Byz Seperti angka saja
vx ,
vy ,
vz (mereka digarisbawahi oleh warna yang sesuai dengan warna pada grafik).
Komponen bivektor 3D hanyalah tiga proyeksi 2D dari bivektor ke bidang 2D dasar.
Dengan menggunakan metode yang sama seperti sebelumnya, kami menemukan bahwa nilai sebenarnya dari komponen sangat mirip dengan komponen XY dari kasus dua dimensi, tetapi diterapkan pada ketiga bidang:
Bxy=axby−bxay
Bxz=axbz−bxaz
Byz=aybz−byaz
Anda dapat bereksperimen dengan bivektor 3D pada bagan interaktif di artikel asli:
CatatanNorma bivektor | mathbfB |= | mathbfa wedge mathbfb | ditentukan mirip dengan norma vektor (akar kuadrat dari jumlah kuadrat komponen). Ini sama dengan luas jajaran genjang yang terbentuk mathbfa dan mathbfb , yaitu | mathbfa wedge mathbfb |= midsin( alpha) mid | mathbfa | | mathbfb | dimana alpha - sudut antara mathbfa dan mathbfb .
Jika kita membagi bivektor berdasarkan normanya, maka kita mengurangi dua panjang vektor dan nilai (absolut) dari sinus sudut, yaitu, kita akan memiliki bivektor
hat mathbfB , yang akan dibangun seolah-olah kedua vektor awalnya tegak lurus dan memiliki panjang satuan. Ini adalah representasi yang sangat bersih dari bidang yang mengandung kedua vektor. Jadi:
mathbfB=| mathbfa | ||mathbfb | midsin( alpha) mid hat mathbfB
Apakah sesuatu mengingatkan Anda pada pekerjaan eksternal? Dalam 3D, definisi karya eksternal sangat mirip dengan definisi karya vektor. Bahkan, vektor dalam 3D yang diperoleh dari produk vektor (misalnya, vektor normal) akan memiliki tiga komponen yang sama dengan komponen bivektor (angkanya akan sama, tetapi dasarnya berbeda).
$$ menampilkan $$ \ begin {eqnarray} \ mathbf {a} \ wedge \ mathbf {b} & = & & (a_x b_y - b_x a_y) (\ mathbf {x} \ wedge \ mathbf {y}) \\ & & + & (a_x b_z - b_x a_z) (\ mathbf {x} \ wedge \ mathbf {z}) \\ & & & & (a_y b_z - b_y a_z) (\ mathbf {y} \ wedge \ mathbf {z} ) \\ \\ \ mathbf {a} \ kali \ mathbf {b} & = & & (a_x b_y - b_x a_y) \ \ mathbf {z} \\ & & - & (a_x b_z - b_x a_z) \ \ mathbf {y} \\ & & + & (a_y b_z - b_y a_z) \ \ mathbf {x} \ end {eqnarray} $$ tampilkan $$
Definisi bivector memiliki arti geometris, dan tidak muncul entah dari mana. Saya ingat ketika saya mempelajari produk-produk vektor, saya berpikir: “Apa-apaan ini mengembalikan vektor yang panjangnya sama dengan area jajaran genjang yang dibentuk oleh dua vektor ini? Sepertinya acak. Dan mengapa kita bisa mengubah
area jajaran genjang menjadi
panjang vektor? "
2.6. Semantik vektor dan bivektor
Dalam 3D, bivector memiliki tiga koordinat, satu per pesawat: (
mathbfxy ,
mathbfxz dan
mathbfyz ) Vektor juga memiliki tiga koordinat, satu per sumbu (
mathbfx ,
mathbfy dan
mathbfz ) Setiap bidang tegak lurus terhadap satu sumbu. Kebetulan ini hanya muncul dalam tiga dimensi
(*) dan itulah sebabnya
kami terus-menerus mengacaukan bivektor dengan vektor .
(*)Dalam 2D, hanya ada satu bivektor dasar ( mathbfxy ), dan dalam 3D ada 3 bivektor dasar ( mathbfxy , mathbfxz , mathbfyz ), dalam 4D ada 6 basis bivektor ( mathbfxy , mathbfxz , mathbfxw , mathbfyz , mathbfyw , mathbfzw ) dan seterusnya ...
Dalam pemrograman, mereka berdua memiliki tata letak memori yang sama, tetapi operasi yang berbeda. Menggunakan vektor 3D alih-alih bivektor 3D mirip dengan "konversi tipe" bivektor.
Berikut ini sebuah contoh: Anda dapat melihat bahwa vektor normal ditransformasikan berbeda dari vektor biasa menggunakan matriks "transfer terbalik"
( mathbfMT)−1 , bukannya matriks itu sendiri. Ini karena, pada kenyataannya, mereka sebenarnya bukan vektor, tetapi bivektor, yang diubah menjadi vektor oleh "konversi tipe". Dalam fisika, ada retasan yang disebut "vektor aksial," yang diperkenalkan untuk membedakan vektor yang diperoleh oleh produk vektor dari vektor biasa. Bivector adalah "tipe" sebenarnya dari suatu objek dan harus dirasakan dan diproses sesuai.
Trivectors
Kami dapat terus mengambil produk eksternal untuk mendapatkan tidak hanya area 2D yang berorientasi, tetapi juga volume 3D yang berorientasi. Trivector T dapat diperoleh dengan melakukan produk eksternal dua kali:
mathbfT= mathbfa wedge mathbfb wedge mathbfc
Dalam ruang tiga dimensi, semuanya berakhir di sana. Seperti dalam 2D, di mana hanya ada satu bidang yang mengisi seluruh ruang 2D, dalam 3D hanya ada satu volume yang mengisi seluruh ruang 3D.
[Tetapi dalam nD, kami dapat terus membuat vektor produk eksternal yang lebih besar hingga kami mencapai dimensi ke-n. Sebagai contoh, dalam 4D, kami memiliki empat basis trivctors (3-vektor) ( mathbfxyz , mathbfxyw , mathbfxwz , mathbfyzw ) dan satu dasar 4-vektor mathbfxyzw ]
Dalam 3D, trivector hanya memiliki satu komponen dasar ( Txyz ) sama dengan volume parallelepiped yang dibentuk oleh tiga vektor. Produk luar tiga adalah versi yang ditingkatkan dari produk skalar tiga ( ( mathbfa kali mathbfb) cdot mathbfc ), karena hanya melibatkan satu jenis operasi, ia mengembalikan jenis yang benar (volume bukan skalar) dan bekerja di sejumlah dimensi.
mathbfT=Txyz mathbfx wedge mathbfy wedge mathbfz
3. Produk geometris
3.1. Multiplikasi vektor satu sama lain
Produk geometris
mathbfab (dilambangkan tanpa simbol) adalah operasi lain yang dapat dilakukan dengan vektor. Produk geometrik didefinisikan sehingga vektor adalah jumlah terbalik (mis.
mathbfa mathbfa−1=1 , di mana 1 hanya nomor 1!) dan memiliki sifat yang nyaman, misalnya, asosiatif
mathbfa( mathbfb mathbfc)=( mathbfa mathbfb) mathbfc ) Tujuan dari ini adalah untuk dapat melipatgandakan vektor sehingga (seperti halnya dengan matriks) perkalian sesuai dengan operasi geometris.
CatatanMemiliki nilai invers berguna karena apapun objeknya mathbfa mathbfa−1 , itu tidak akan mempengaruhi vektor, yaitu, ia akan berperilaku sama seperti ketika mengalikan angka dengan 1.
Untuk mendefinisikan suatu produk, pertama-tama kita perhatikan bahwa mungkin untuk membagi produk (atau fungsi apa pun yang menggunakan dua argumen) menjadi jumlah bagian yang tidak berubah jika kita menukar argumen dan bagian yang berubah sebagai berikut:
\ begin {eqnarray} \ mathbf {a} \ mathbf {b} & = & \ frac {1} {2} (\ mathbf {a} \ mathbf {b} + \ mathbf {a} \ mathbf {b} + \ mathbf {b} \ mathbf {a} - \ mathbf {b} \ mathbf {a}) \\ & = & \ frac {1} {2} (\ mathbf {a} \ mathbf {b} + \ mathbf { b} \ mathbf {a}) + \ frac {1} {2} (\ mathbf {a} \ mathbf {b} - \ mathbf {b} \ mathbf {a}) \ end {eqnarray}
Istilah pertama tidak lagi tergantung pada urutan argumen
mathbfa dan
mathbfb (disebut bagian "simetris"), dan istilah kedua berubah tanda ketika mengubah tempat argumen (disebut bagian "antisimetrik").
Produk skalar dari dua vektor (juga disebut produk dalam) simetris dan merupakan ukuran jarak (
mathbfa cdot mathbfa= | mathbfa |2 ), oleh karena itu, dari sudut pandang geometris, tampaknya berguna bahwa kita membuatnya sama dengan bagian simetris:
frac12( mathbfa mathbfb+ mathbfb mathbfa)= mathbfa cdot mathbfb
Demikian pula, produk luar dari dua vektor adalah antisimetri, sehingga akan berguna untuk menyamakannya dengan bagian antisimetrik:
frac12( mathbfa mathbfb− mathbfb mathbfa)= mathbfa wedge mathbfb
Selain itu, produk skalar mengandung
kosinus sudut antara dua vektor (
mathbfa cdot mathbfb= | mathbfa | | mathbfb |cos( alpha) ), sedangkan produk eksternal mengandung
sinus sudut. Bersama-sama, mereka sepenuhnya menggambarkan sudut antara vektor, serta bidang yang mereka bentuk.
CatatanKelengkapan uraian inilah yang membuat karya tersebut dapat dibalik, karena kita dapat beralih dari satu vektor ke vektor lainnya dengan bantuan informasi yang terkandung dalam karya mereka. Jika aku memberimu mathbfa dan mathbfa mathbfb maka kamu bisa mendapatkan mathbfb . Ini tidak mungkin dilakukan, hanya mengetahui cosinus atau hanya sinus / bidang.
Artinya, produk geometris sama dengan:
mathbfa mathbfb= mathbfa cdot mathbfb+ mathbfa wedge mathbfb
Ini aneh karena mengalikan dua vektor memberikan jumlah dua hal yang berbeda: skalar dan bivektor. Namun, ini mirip dengan bagaimana bilangan kompleks adalah jumlah dari skalar dan angka "imajiner", sehingga Anda sudah terbiasa dengannya. Di sini, bagian bivektor sesuai dengan bagian "imajiner" dari bilangan kompleks.
Hanya ini bukan nilai "imajiner", itu hanya bivektor yang benar-benar dapat kami tunjukkan secara grafis!Bahkan, mengalikan dua vektor, kami menghitung sifat berguna mereka ("panjang proyeksi mereka satu sama lain" / "cosinus sudut" (
mathbfa cdot mathbfb ) dan "bidang yang mereka bentuk bersama" / "sinus sudut" (
mathbfa wedge mathbfb )), yang kita hubungkan bersama dengan tanda plus. Produk geometrik juga memberikan operasi "grup properti" yang dapat diterapkan padanya, dan operasi ini memiliki interpretasi geometris (misalnya: rotasi dan refleksi vektor). Ini akan kita lihat segera.
Anda dapat mengekspresikan produk geometris dalam bentuk sinus dan kosinus:
mathbfa mathbfb= | mathbfa | | mathbfb |(cos( alpha)+sin( alpha) mathbfB) dimana
mathbfB Adalah bivektor dari kedua vektor pada bidang, terdiri dari dua unit vektor tegak lurus.
3.2. Tabel perkalian
Tabel multiplikasi memungkinkan kita untuk membuat produk lebih spesifik: mari kita lihat apa yang terjadi jika kita mendapatkan produk vektor basis (
mathbfx ,
mathbfy ,
mathbfz )
Untuk setiap vektor basis, misalnya sumbu
mathbfx , hasilnya akan sama
1 :
mathbfx mathbfx= mathbfx cdot mathbfx+ mathbfx wedge mathbfx=1
Untuk setiap pasangan vektor basis, misalnya, sumbu
mathbfx dan
mathbfy , hasilnya akan menjadi bivektor, yang bersama-sama mereka bentuk:
mathbfx mathbfy= mathbfx cdot mathbfy+ mathbfx wedge mathbfy= mathbfx wedge mathbfy
(mis. kita bisa memberi nama
mathbfx wedge mathbfy adil
mathbfx mathbfy , karena ini satu dan sama!)
Ini memberi kita tabel berikut:
mathbfa mathbfb | mathbfb |
mathbfx | mathbfy | mathbfz |
mathbfa | mathbfx | 1 | mathbfx mathbfy | mathbfx mathbfz |
mathbfy | − mathbfx mathbfy | 1 | mathbfy mathbfz |
mathbfz | − mathbfx mathbfz | − mathbfy mathbfz | 1 |
Bahkan, tabel ini sepele, dibandingkan, misalnya, dengan tabel angka empat.
CatatanSebagai contoh, ini adalah perkalian dua vektor (5,3,0) dan (2,0,1) :
\ begin {eqnarray} (5 \ mathbf {x} + 3 \ mathbf {y}) (2 \ mathbf {x} + 1 \ mathbf {z}) & = & 5 \ 2 \ \ mathbf {x} \ mathbf {x} + 5 \ 1 \ \ mathbf {x} \ mathbf {z} + 3 \ 2 \ \ mathbf {y} \ mathbf {x} + 3 \ 1 \ \ mathbf {y} \ mathbf {z} \\ & = & 10 + 5 \ \ mathbf {x} \ mathbf {z} - 6 \ \ mathbf {x} \ mathbf {y} + 3 \ \ mathbf {y} \ mathbf {z} \ end {eqnarray}
3.3. Formula refleksi (tampilan tradisional)
Refleksi pada vektor [dalam artikel asli, setiap vektor dapat dipindahkan]Jika kita memiliki vektor satuan
mathbfa dan vektor
mathbfv kita bisa bercermin
mathbfv melalui pesawat tegak lurus
mathbfa .
Ini dilakukan dengan cara biasa: kami berbagi
mathbfv pada bagian tegak lurus ke pesawat:
mathbfv perp=( mathbfv cdot mathbfa) mathbfa , dan bagian yang sejajar dengan pesawat:
mathbfv parallel= mathbfv− mathbfv perp= mathbfv−( mathbfv cdot mathbfa) mathbfa .
Kemudian, untuk mencerminkan vektor, kita membalik bagian tegak lurus, dan membiarkan bagian paralelnya tidak berubah:
\ begin {eqnarray} R _ {\ mathbf {a}} (\ mathbf {v}) & = & \ mathbf {v} _ \ parallel - \ mathbf {v} _ \ pel \\ & = & (\ mathbf { v} - (\ mathbf {v} \ cdot \ mathbf {a}) \ mathbf {a}) - ((\ mathbf {v} \ cdot \ mathbf {a}) \ mathbf {a}) \\ & = & & & \ mathbf {v} - 2 (\ mathbf {v} \ cdot \ mathbf {a}) \ mathbf {a} \ end {eqnarray}
3.4. Formula refleksi (tampilan untuk produk geometris)
Pada tahap ini, kita dapat mengganti produk skalar
mathbfv cdot mathbfa pada versinya dalam bentuk produk geometris
frac12( mathbfv mathbfa+ mathbfa mathbfv) , dan dapatkan yang berikut ini:
\ begin {eqnarray} R _ {\ mathbf {a}} (\ mathbf {v}) & = & \ mathbf {v} - 2 (\ frac {1} {2} (\ mathbf {v} \ mathbf {a} } + \ mathbf {a} \ mathbf {v})) \ mathbf {a} \\ & = & \ mathbf {v} - \ mathbf {v} \ mathbf {a} ^ 2 - \ mathbf {a} \ mathbf {v} \ mathbf {a} \\ & = & - \ mathbf {a} \ mathbf {v} \ mathbf {a} \ end {eqnarray}
(
mathbfa2= mathbfa cdot mathbfa=1 sejak itu
mathbfa adalah vektor satuan)
Ini memberi kita hal yang persis sama, tetapi dalam entri yang berbeda. Menggunakan catatan dalam bentuk produk sederhana alih-alih formula untuk penyandian operasi fundamental seperti refleksi akan sangat berguna!
Bagaimana cara kerja beberapa produk geometrik?Jika Anda tidak mengerti bagaimana pengambilan berganda dari produk geometrik bekerja, maka lihat saja vektor basis. Hanya ada tiga kemungkinan kasus:
\ begin {eqnarray} \ mathbf {x} (\ mathbf {x} \ mathbf {x}) & = & \ mathbf {x} 1 = \ mathbf {x} \\ \ mathbf {x} (\ mathbf {x } \ mathbf {y}) & = & \ mathbf {x} (\ mathbf {x} \ cdot \ mathbf {y} + \ mathbf {x} \ wedge \ mathbf {y}) = \ mathbf {x} (\ mathbf {x} \ cdot \ mathbf {y}) + \ mathbf {x} \ mathbf {x} \ mathbf {y} = \ mathbf {x} (\ mathbf {x} \ cdot \ mathbf {y}) + \ mathbf {y} \\ \ mathbf {x} (\ mathbf {y} \ mathbf {z}) & = & \ mathbf {x} (\ mathbf {y} \ cdot \ mathbf {z}) + \ mathbf {x } \ mathbf {y} \ mathbf {z} \ end {eqnarray}
Hasilnya akan menjadi: vektor, vektor, vektor + trivektor. Namun, kasus terakhir hanya dapat terjadi ketika ketiga vektor independen, yang tidak pernah benar − mathbfava
DetailOrang-orang yang ingin tahu dapat melihat apa yang terjadi pada setiap tahap. − mathbfa mathbfv mathbfa dalam hal produk geometris.
- Tahap pertama:
mathbfv mathbfa= mathbfv cdot mathbfa+ mathbfv wedge mathbfa
Jika, seperti sebelumnya, kita membelah mathbfv ke bagian tegak lurus ke pesawat ( mathbfv pelaku ), dan bagian yang sejajar dengannya ( mathbfv parallel ), lalu kita dapatkan:
\ begin {eqnarray} (\ mathbf {v} _ \ pel + \ mathbf {v} _ \ parallel) \ mathbf {a} & = & (\ mathbf {v} _ \ pel + \ mathbf {v} _ \ paralel) \ cdot \ mathbf {a} + (\ mathbf {v} _ \ pel + \ mathbf {v} _ \ parallel) \ wedge \ mathbf {a} \\ & = & \ mathbf {v} _ \ pel \ cdot \ mathbf {a} + \ mathbf {v} _ \ parallel \ cdot \ mathbf {a} + \ mathbf {v} _ \ perp \ wedge \ mathbf {a} + \ mathbf {v} _ \ parallel \ wedge \ mathbf {a} \ end {eqnarray}
mathbfv parallel cdot mathbfa=0 , karena vektor-vektor ini tegak lurus, dan mathbfv pel wedge mathbfa=0 karena vektor-vektor ini paralel.
mathbfv mathbfa= mathbfv perp cdot mathbfa+ mathbfv parallel wedge mathbfa
Istilah pertama hanya panjang proyeksi mathbfv pada mathbfa , yaitu istilah pertama hanya panjangnya mathbfv pelaku .
Mari kita panggil hat mathbfv parallel versi dinormalisasi mathbfv parallel itu adalah mathbfv parallel= hat mathbfv parallel | mathbfv parallel | . Maka istilah kedua hanyalah bivektor mathbfB= hat mathbfv parallel wedge mathbfa kali panjangnya mathbfv parallel .
Bivector ini mathbfB terdiri dari dua vektor satuan tegak lurus, yaitu ini adalah representasi bidang vektor yang sangat bersih mathbfa dan mathbfv . Itu tidak mengandung informasi tentang sudut relatif atau panjangnya, hanya orientasi bidang.
Artinya, kedua istilah itu hanyalah pembusukan mathbfv pada dua proyeksi orthogonal ( mathbfv parallel dan mathbfv pelaku ), serta bidang yang mereka bentuk ( mathbfB ):
| mathbfv pel |+ | mathbfv parallel | mathbfB
Sebelum beralih ke langkah berikutnya, kita dapat mengganti produk eksternal dengan yang geometris, karena mathbfa dan mathbfv parallel adalah tegak lurus, dan karena itu produk eksternal dan geometrik mereka akan setara (karena bagian dengan produk skalar dari produk geometriknya sama dengan nol).
mathbfv pelaku cdot mathbfa+ mathbfv parallel wedge mathbfa= mathbfv pelaku cdot mathbfa+ mathbfv parallel mathbfa
- Tahap kedua adalah sebagai berikut:
mathbfa mathbfv mathbfa= mathbfa( mathbfv perp cdot mathbfa)+ mathbfa mathbfv parallel mathbfa
Anggota pertama hanyalah sebuah komponen mathbfv sepanjang mathbfa , yaitu komponen mathbfv tegak lurus ke pesawat. Dengan kata lain, istilah pertama itu adil mathbfv pelaku .
mathbfa mathbfv mathbfa= mathbfv pel+ mathbfa mathbfv parallel mathbfa
Sejak mathbfa dan (lagi) tegak lurus, produk geometris mereka hanyalah produk eksternal mereka, yaitu, Anda dapat menukar mereka dan mengubah tanda.
- Akhirnya, langkah terakhir membalik tanda:
Artinya, kita melihat komponen itu tegak lurus terhadap pesawat, terbalik, tetapi bagian paralelnya tetap sama!
CatatanPanjangnya tidak terlalu penting, jadi di bawah ini kita abaikan, tetapi jika bukan vektor satuan, maka kita harus membaginya dengan panjangnya dan rumusnya berubah menjadi , yang lebih seperti "produk berlapis", yang seharusnya Anda terbiasa.
3.5. Dua refleksi adalah giliran: situasi dalam 2D
Ternyata jika kita melamar
dua refleksi berturut-turut (pertama dengan vektor)
dan kemudian dengan vektor
), lalu kita dapatkan
rotasi dua kali sudut antara vektor dan .Kami dapat menunjukkan setiap tahap refleksi selanjutnya dalam grafik di bawah ini:
Anda juga dapat mengubah vektor di artikel asli.
,
dan
, tetapi konfigurasi awal vektor pada grafik (klik pada tombol "Reset Vector Positions") terutama dengan jelas menunjukkan mengapa rotasi sebagai akibatnya terjadi pada sudut
ganda . Konfigurasi bagus lainnya adalah pengaturan sebagai
dan
kapak
dan
.
3.6. Dua refleksi adalah giliran: situasi dalam 3D
Dalam kasus vektor 3D
dapat dibagi menjadi dua bagian, salah satunya terletak pada bidang yang diberikan
dan
, dan yang lainnya terletak di luar bidang (tegak lurus terhadapnya). Seperti yang ditunjukkan pada grafik di bawah ini, ketika vektor dipantulkan oleh masing-masing bidang, bagian luarnya tetap sama. Sedangkan untuk bagian dalam, kami kembali dalam 2D, dan hanya berputar dua kali sudutnya!
3.7. Rotor
Dari sudut pandang produk geometris, dua refleksi cukup sesuai dengan yang berikut:
Kami memanggil
rotor karena dikalikan dengan
di kedua sisi vektor, kami melakukan rotasi (
Apakah sama dengan
, hanya di bagian-bivector terbalik).
Aplikasi rotor
untuk kedua sisi vektor memutar vektor ini di bidang vektor
dan
dua kali sudut antara
dan
.
Dan itu saja!Perbandingan rotor 3D dan angka empat
Anda dapat melihat bahwa rotor 3D sangat mirip dengan angka empat:
Bahkan, kode / matematika hampir sama! Perbedaan utamanya adalah itu
,
dan
diganti oleh
,
dan
tetapi pada dasarnya mereka bekerja sama. Perbandingan kode dapat ditemukan di
sini . Saya tidak mengimplementasikan semuanya, misalnya log / exp untuk interpolasi, tetapi mereka cukup sederhana untuk dibuat.
Namun, seperti yang telah kita lihat, rotor 3D adalah konsep tiga dimensi yang tidak memerlukan penggunaan "putaran ganda empat dimensi" atau "proyeksi stereografi" untuk visualisasi. Mencoba memvisualisasikan angka empat yang berjalan dalam 4D untuk menjelaskan rotasi 3D agak mirip dengan mencoba memahami gerakan planet dari sudut pandang geosentris. Yaitu pendekatan ini terlalu rumit karena kita melihatnya dari sudut pandang yang salah.
Seperti yang kita lihat, pemodelan rotasi seperti yang terjadi di dalam pesawat, bukan di sekitar vektor, banyak membantu kita. Sebagai contoh, kuadrat dari bivektor basis memberi
, seperti angka empat dasar (
):
Mengalikan dua bivektor satu sama lain memberikan bivektor ketiga, tetapi sebenarnya sepele, dan kita tidak perlu mengingat bahwa
:
(Perhatikan bahwa kami menggunakan
)
Properti ini adalah hasil dari produk geometris, dan tidak muncul dari mana pun!
Bacaan tambahan
(Omong-omong, dalam aljabar geometris tidak hanya ada rotor, tetapi juga hal-hal keren lainnya!)
- Aljabar Linier dan Geometris oleh Macdonald [ tautan ke Amazon ]
Sumber yang sangat baik, sangat jelas dan dapat dimengerti, karena tersirat bahwa itu akan menggantikan buku teks aljabar linier untuk siswa. - Aljabar Geometris Untuk Ilmu Komputer oleh Dorst et al. [ tautan ke Amazon ]
Sumber yang bagus, karena pemrograman terkadang memungkinkan Anda untuk lebih memahami subjek.Catatan: dalam buku ini, penulis memperjelas bahwa aljabar geometris lebih lambat dari angka empat (dan sejenisnya ...). Bahkan, ia harus memiliki kira-kira kode yang sama (mis., Anda tidak boleh menulis kode untuk aljabar geometris, membuat struct umum yang dapat berisi semua jenis vektor k yang mungkin, cukup tulis, jika perlu, satu struct untuk setiap jenis k-vektor Artinya, untuk mengganti angka empat, Anda dapat menulis satu struktur Bivector dan satu struktur Rotor, yaitu Scalar + Bivector).