Transformasi koordinat persegi panjang kartesius pada bidang dan ruang. Transformasi di luar angkasa

Saat bekerja dengan objek tiga dimensi, sering kali perlu melakukan berbagai transformasi yang berkaitan dengannya: memindahkan, memutar, mengompres, meregangkan, memiringkan, dll. Namun, dalam banyak kasus, properti tertentu harus dipertahankan setelah menerapkan transformasi ini.

Definisi. Transformasi bidang disebut dekat(dari bahasa Inggris . afinitas – kekerabatan), Jika

  • itu satu-ke-satu;
  • bayangan suatu garis lurus adalah garis lurus.

Transformasi tersebut disebut satu lawan satu, Jika

  • poin yang berbeda menuju ke poin yang berbeda;
  • beberapa titik menuju ke setiap titik.

Properti transformasi affine dalam ruang tiga dimensi:

  • memetakan objek berdimensi n ke objek berdimensi n: titik ke titik, garis ke garis, permukaan ke permukaan;
  • mempertahankan paralelisme garis dan bidang;
  • mempertahankan proporsi objek paralel - panjang segmen pada garis paralel dan luas pada bidang paralel.

Setiap transformasi affine diberikan oleh matriks 3x3 dengan determinan bukan nol dan vektor translasi:

Mari kita lihat ini dari sudut pandang matematika. R mewakili matriks operator linier pada ruang vektor tiga dimensi. Vektor T diperlukan untuk melakukan transfer paralel: jika kita mengalikan (000) dengan matriks 3x 3, kita kembali memperoleh (000) - asal sistem koordinat, relatif terhadap transformasi R, adalah titik tetap. Persyaratan bahwa determinan bukan nol ditentukan oleh definisi. Intinya, jika determinan matriks R sama dengan nol, maka seluruh ruang berubah menjadi bidang, garis, atau titik. Oleh karena itu, hal itu tidak dihormati satu lawan satu.

Dalam praktiknya, lebih mudah untuk menentukan transformasi affine dengan matriks tunggal. Dalam hal ini, koordinat homogen yang diperkenalkan pada artikel sebelumnya digunakan. Transformasi affine akan diberikan oleh matriks 4x4 berikut:

Perhatikan bahwa tiga nilai pertama baris terakhir sama dengan 0. Ini diperlukan kondisi bahwa transformasi akan berjalan dengan baik. DI DALAM kasus umum didefinisikan matriks sembarang berukuran 4x 4 transformasi proyektif. Transformasi seperti itu, seperti namanya, digunakan untuk memproyeksikan pemandangan tiga dimensi. Hal ini akan dibahas lebih detail pada artikel berikutnya.

Mari kita perhatikan kasus khusus transformasi affine.

Catatan Di sini dan selanjutnya, sistem koordinat yang diperkenalkan sebagai berikut akan digunakan:

  • sistem koordinat yang benar;
  • sumbu z diarahkan ke pengamat, tegak lurus terhadap bidang layar;
  • sumbu y berada pada bidang layar dan mengarah ke atas;
  • Sumbu x berada pada bidang layar dan mengarah ke kanan.

Kami akan membahas hal ini secara lebih rinci ketika mempertimbangkan pipa geometris.

Matriks transformasi ini terlihat seperti ini:

DI DALAM dalam hal ini matriks R = E, matriks identitas.

Transformasi yang dibahas di bawah ini hanya mempengaruhi matriks R, sehingga hanya matriks R yang akan dilaporkan.

Rotasi (rotasi)



Jika pada suatu bidang rotasi dilakukan pada suatu titik tertentu, maka pada ruang tiga dimensi rotasi dilakukan pada suatu vektor tertentu. Sebelum melanjutkan membuat matriks rotasi di sekitar vektor sembarang, mari kita pertimbangkan kasus khusus rotasi sumbu koordinat.

Catatan Putar di sekitar vektor sembarang tidak sama rotasi di sekitar garis berarah sembarang.



Perhatikan bahwa ketika berputar mengelilingi sumbu y, ordinat titik (koordinat y) tidak berubah. Perlu juga dicatat bahwa koordinat x dan z suatu titik dikonversi secara independen dari koordinat y. Artinya sembarang titik p (x, y, z) akan menuju ke titik p’(x’(x, z), y, z’(x, y)). Sekarang tinggal memahami bagaimana koordinat x dan z ditransformasikan: pada bidang Oxz ini akan menjadi rotasi searah jarum jam di sekitar titik asal koordinat (karena x z y adalah kiri tiga), yaitu. V arah negatif. Matriks transformasi tersebut diketahui (lihat Memutar bidang):



Matriks transformasi R y (φ y ):

Putar di sekitar sumbu x dan z



Dengan menggunakan alasan serupa, kita dapat memperoleh matriks rotasi R x (φ x) dan R z (φ z) masing-masing di sekitar sumbu x dan z.

Berikut hasil akhirnya:

Sangat mudah untuk melihat bahwa determinan matriks R x , R y , R z sama dengan 1. Selain itu, matriks rotasi R rot memiliki sifat ortogonalitas: R T R = RR T = E . Dari sini, pada gilirannya, berikut ini properti yang berguna, bahwa inversi matriks rotasi dapat digantikan dengan transposisi: R -1 (φ) = R T (φ).

Penskalaan (menyusut/meregangkan, membalik)



Koefisien kompresi/ekspansi, dengan analogi dengan ruang dua dimensi, ditentukan oleh suku diagonal matriks R:

Hasil:



Kombinasi koefisien s x = -1, s y = 1, s z = 1 akan menentukan pantulan dari bidang Oyz (x = 0). Dengan s x = s y = s z = -1 kita peroleh simetri pusat relatif terhadap asal usulnya.

Interpretasi matriks R

Mari kita perhatikan matriks R dari sudut pandang aljabar linier. Ternyata matriks R mengandung basis sistem baru koordinat

Memang, matriksnya

(R 11 R 12 R 13 )

(R 21 R 22 R 33)

(R 31 R 32 R 33 )

menerjemahkan vektor basis Cartesian:

(100) → (R 11 R 21 R 31 )

(010) → (R 12 R 22 R 32 )

(001) → (R 13 R 23 R 33 )



Sekarang mudah untuk mendapatkan transformasi bevel. Misalnya:

Catatan Jika kita menganut terminologi yang berlaku umum, transformasi di atas disebut pergeseran. Menggeser (mencukur) adalah transformasi apa pun yang diagonal utamanya pada matriks R adalah satuan. Jika determinan matriks R sama dengan nol, maka transformasinya tidak affine.

Transformasi affine yang kompleks

Transformasi affine kompleks dapat diperoleh sebagai kombinasi transformasi sederhana (dasar). Dalam hal ini, transformasi affine sederhana dapat dipilih dengan berbagai cara. Misalnya, rotasi dapat dianggap sebagai kombinasi penskalaan dan pergeseran. Namun untuk kenyamanan, rotasi juga dipertimbangkan transformasi dasar. Rotasi di sekitar vektor sembarang direpresentasikan sebagai kombinasi rotasi di sekitar sumbu koordinat. Hal ini akan dibahas secara detail pada artikel selanjutnya.

Transformasi di pesawat dan di luar angkasa

Dalam grafik komputer, segala sesuatu yang berhubungan dengan kasus datar biasanya disebut 2D (2 dimensi), dua dimensi, dan segala sesuatu yang berhubungan dengan kasus spasial disebut 3D.

Affine transformasi di pesawat

Affinis – terkait (Latin). Karena angka-angka tersebut dipertahankan dalam transformasi affine.

Misalkan ada sistem koordinat bujursangkar (OXY). Kemudian setiap titik M dapat dihubungkan dengan sepasang koordinat (x,y). Dengan memperkenalkan sistem koordinat lain O * X * Y *, Anda dapat menetapkan pasangan koordinat lain (x *,y *) ke titik M yang sama. Transisi dari satu sistem ke sistem lainnya:

x * =ax+by+c, dengan syarat |a b|¹0

kamu * =dx+ey+f |d e|

Rumus ini dapat dipertimbangkan dengan dua cara, yaitu titik dipertahankan dan sistem koordinat diubah, atau sistem koordinat dipertahankan dan titik diubah. Nantinya, rumus-rumus ini akan dianggap sebagai transformasi titik-titik dalam sistem koordinat tertentu. Selain itu, semua sistem yang dipertimbangkan akan berbentuk persegi panjang (rumusnya memungkinkan Anda bekerja dengan sistem non-persegi panjang).


Perlu diperhatikan bahwa koordinat titik M dapat direpresentasikan sebagai vektor dari titik asal dengan koordinat Mx, My.

Maka transformasinya dapat ditulis sebagai bentuk vektor(ini hanya berlaku untuk sistem koordinat persegi panjang).

M*=((M-O*)X*,(M-O*)Y*)

Dimana koordinat O* asal sistem kedua pada koordinat sistem pertama. X*,Y* - vektor (vektor vektor) dari sistem koordinat kedua dalam koordinat yang pertama.

a=(Xx*), b=(Xy*),c=-O*X*

d=(Yx*), e=(Yy*),f=-O*Y*

Transformasi ini juga dapat dituliskan bentuk matriks

, atau , dimana vektor dianggap dalam bentuk matriks berbentuk 1´2.

Elemen Cij matriks C=AB merupakan jumlah hasil kali elemen-elemen baris ke-i matriks A dengan elemen-elemen kolom ke-j matriks B.

Transformasi terbalik - menyelesaikan sistem persamaan linier, atau menggunakan matriks terbalik , tetapi untuk kasus ketika sistem diwakili oleh ort, hal ini bisa lebih sederhana. Dalam hal ini matriks terbalik sama dengan yang dialihkan.

Transformasi afin – transformasi geometris bidang atau ruang ĸᴏᴛᴏᴩᴏᴇ dapat diperoleh dengan menggabungkan rotasi, translasi, refleksi spekuler dan penskalaan ke arah sumbu koordinat.

Rotasi (R - rotasi). Di sekitar titik asal dengan sudut a.

x * =x*cosa-y*sina

y * =x*sina+y*cosa

Ketegangan, kompresi sepanjang sumbu koordinat (D – dilatasi).

Refleksi (M – cermin). Relatif terhadap sumbu absis.

Transfer (T – terjemahan).

Perpindahan tidak dapat direpresentasikan sebagai hasil kali suatu vektor dengan matriks, tetapi dapat direpresentasikan sebagai jumlah vektor.

Diketahui geometri analitik terbukti bahwa setiap transformasi dapat direpresentasikan sebagai eksekusi berurutan (superposisi) dari transformasi paling sederhana ini.

Terkadang lebih mudah untuk merepresentasikan semua transformasi dalam satu bentuk matriks; untuk tujuan ini, koordinat homogen digunakan.

Koordinat homogen

Untuk titik M dengan koordinat x,y pada bidang koordinat homogen adalah rangkap tiga bilangan x1, x2, x3 yang sekaligus tidak sama dengan nol dan dihubungkan oleh relasi x1/x3=x, x2/x3=y. Suatu titik dengan koordinat x,y pada bidang dikaitkan dengan titik xh,y,h,h dalam ruang homogen, biasanya h=1 (x,y,1).

Konversi umum poin masuk koordinat homogen ah bisa ditulis dalam bentuk.

Dan matriks transformasi dasar akan terlihat seperti ini:

Kombinasi transformasi.

Misalkan Anda perlu memutar suatu titik dengan sudut di sekitar titik A.

Pertama, pindahkan titik A ke titik asal (-Ax,-Ay). Giliran selanjutnya. Selanjutnya transfer kembali ke titik A. (Ax,Ay). Transformasi tunggal dapat diperoleh

Affine transformasi dalam ruang

Dalam ruang 3D, sebuah titik (vektor) diwakili oleh tiga koordinat (x,y,z), atau empat koordinat homogen (x,y,z,1).

Konsep rangkap tiga vektor kiri dan kanan harus diperkenalkan. Tiga vektor a,b,c membentuk tripel bertangan kanan jika, setelah menggabungkan titik awal vektor-vektornya, belokan terpendek dari a ke b terlihat oleh pengamat yang melihat dari ujung vektor c berlawanan arah jarum jam. Aturan tangan kanan– vektor a sejajar dengan siku, vektor b termasuk dalam telapak tangan, vektor c berimpit dengan ibu jari. Suatu sistem koordinat biasanya disebut sistem koordinat kanan jika vektor arahnya membentuk tripel kanan.

Karya seni vektor c=a´b, c adalah sebuah vektor yang tegak lurus terhadap kedua vektor tersebut, sehingga membentuk tripel kanan dengan kedua vektor tersebut.

Cx=Ay*Bz-Az*Oleh, Cy=Az*Bx-Ax*Bz, C z=Kapak*Oleh- Ay*Bx

Transformasinya tetap sama: rotasi (hanya sekarang mengelilingi tiga sumbu), peregangan, refleksi (relatif terhadap tiga bidang), transfer.

Rotasi berlawanan arah jarum jam jika dilihat dari titik asal untuk sistem koordinat kiri (untuk sistem koordinat kanan sebaliknya).

, ,

,

, ,

Misalnya, Anda perlu membuat matriks rotasi terhadap garis lurus dengan vektor arah L yang melalui titik A.

1. Pindahkan A ke titik asal

2. Sejajarkan garis lurus dengan sumbu X.

Pertama putar di sekitar sumbu X

dengan sudut a, cosa=Lz/d, sina=Lx/d, dimana d=

Jika d=0, maka garis lurus tersebut berimpit dengan sumbu X.

Kemudian putar mengelilingi sumbu Y dengan sudut b.

Vektor yang diputar adalah (Lx,Ly,Lz,1)=(Lx,0,d,1).

cosb=Lx, sinb=d

3. Putar di sekitar sumbu X ke sudut yang diinginkan

4. Kembali ke sumbu L,

5. Transfer ke titik A

Matriks umumnya adalah

Konversi ke sistem koordinat yang ditentukan oleh ort

Jika sistem diberikan oleh tripel vektor satuan yang saling tegak lurus X*,Y*,Z*.

, konversi terbalik– matriks yang ditransposisikan [R] T

Desain

Desain sangat penting, pertama-tama, untuk menampilkan benda tiga dimensi di layar datar, tapi ada aplikasi lain, seperti bayangan.

Ada dua jenis desain yang paling umum digunakan: paralel dan sentral (perspektif).

Saat memproyeksikan suatu benda ke bidang, Anda perlu menggambar garis lurus dari sinar proyeksi tertentu melalui setiap titik benda dan mencari perpotongan garis lurus tersebut dengan bidang.

Pada desain paralel balok terdiri dari garis-garis sejajar, dengan garis tengah melewati suatu titik tertentu.

Proyeksi paralel dapat dibagi menjadi dua jenis, bila garis sinar tegak lurus terhadap bidang proyeksi - proyeksinya disebut aksonometri, dan bila tidak, miring (kami tidak akan mempertimbangkan proyeksi seperti itu).

Namun, untuk mendapatkan proyeksi paralel aksonometri suatu objek di layar, Anda perlu menggabungkan arah sinar dengan salah satu sumbu (biasanya Z). Sumbu X dan Y akan berimpit sumbu X,Y di layar, dan sumbu Z akan diarahkan jauh ke dalam layar.

Untuk memperoleh proyeksi perspektif suatu titik, sangat penting untuk menempatkan titik hilang berkas pada titik asal koordinat, menyelaraskan arah ke layar (tegak lurus dari titik hilang ke bidang proyeksi) dengan sumbu Z, lalu Xp=X*d/Z, Yp=Y*d/Z, dengan d adalah jarak dari titik asal ke bidang proyeksi.

Transformasi ini dapat ditulis sebagai matriks. ,

Satu-satunya hal adalah bahwa dalam transformasi seperti itu kedalaman (z) hilang, tetapi dapat dihitung dari koordinat terakhir vektor.

Selain transformasi desain ini, sangat penting untuk melakukan beberapa perubahan lagi untuk memastikan gambar terlihat benar di layar. Pertama-tama, perlu diregangkan sesuai ukuran jendela, kedua, perlu dicerminkan di sekitar sumbu X (karena sumbu Y biasanya mengarah ke bawah), ketiga, perlu dipindahkan ke tengah jendela. jendela.

Matriks transformasi umumnya adalah sebagai berikut.

Cx,Cy – koordinat pusat layar.

rasio – rasio ukuran Y dan ukuran X, berbeda untuk resolusi layar berbeda. Resolusi adalah jumlah piksel per satuan permukaan, dalam hal ini satuannya adalah keseluruhan layar monitor. Layar monitor memiliki rasio ukuran horisontal ke vertikal 4/3, oleh karena itu untuk resolusi dengan jumlah piksel horizontal dan vertikal yang merupakan kelipatan dari angka ini rasio=1 (misalnya 640/480). Jika tidak, rasio=(4*ukuran)/(3*ukuran) (320x200 =0,83).

S – faktor skala, untuk proyeksi paralel dipilih secara manual untuk proyeksi perspektif S sama dengan satu, tetapi d (jarak ke bidang desain) dihitung berdasarkan FOV (bidang pandang). FOV adalah sudut maksimum yang dibentuk oleh garis lurus pada sinar, sudut pandang.

FOV biasanya bervariasi dari 50° hingga 100°, FOV mata manusia adalah 90°.

Sistem koordinat dunia, model dan layar

Dunia adalah sistem koordinat utama di mana semua objek pemandangan ditentukan.

Model – sistem koordinat di mana struktur internal objek.

Layar – sistem koordinat pengamat, disebut juga sistem koordinat kamera.

Model biasanya ditempatkan dalam sistem model sedemikian rupa sehingga pusat sistem berimpit dengan geometri atau pusat massa model, sumbu X berimpit dengan arah depan, sumbu Y berimpit dengan arah kanan. , dan sumbu Z berimpit dengan arah ke atas.

Model ditentukan dalam sistem koordinat dunia dengan koordinat pusat model M (vektor) dan orientasi (tiga ort atau tiga sudut roll (X), pitch (Y), course (Z), matriksnya adalah ​​dibentuk sebagai rangkaian rotasi). Untuk mentransformasikan dari koordinat model, Anda harus terlebih dahulu memutar sesuai dengan matriks orientasi dan kemudian menerjemahkannya ke .

Lapangan Roll Pitch

Posisi dan orientasi kamera dapat diatur persis sama dengan posisi model. Namun seringkali, arah pandangan kamera saja sudah cukup. Biasanya (di kehidupan nyata) kamera tidak ada rollnya, ᴛ.ᴇ. Sumbu X (ke kanan) selalu horizontal, sehingga bidang YZ selalu vertikal.

Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, jika kita asumsikan sumbu Z kamera (arah pandang) tidak vertikal, maka kita dapat mencari sumbu X=Norm(Z´Up), dimana Up(0,0,1) adalah vektor vertikal ( X akan tegak lurus terhadap vektor vertikal Up , yang artinya horizontal). Akhirnya sumbu Y=X´Z (atas). Pastikan sistem tetap berada di kiri.

Untuk mengkonversi titik dari sistem dunia ke titik layar, pertama-tama penting untuk menerapkan terjemahan dan kemudian memutar dengan matriks orientasi kamera T yang dialihkan.

Namun, untuk mengubah suatu titik dari koordinat model ke koordinat layar, sangat penting untuk melakukan transformasi berikut T . Setelah transformasi tersebut, sumbu Z akan diarahkan sepanjang arah pandang dan desain dapat dilakukan.

Kuliah 6-7-8

Transformasi di bidang dan ruang - konsep dan tipe. Klasifikasi dan ciri-ciri kategori “Transformasi pada bidang datar dan luar angkasa” 2017, 2018.

Bab 1. Tambahan. Transformasi koordinat persegi panjang kartesius pada bidang dan ruang. Sistem koordinat khusus di pesawat dan di luar angkasa.

Aturan untuk membangun sistem koordinat pada bidang dan ruang dibahas pada bagian utama Bab 1. Kemudahan penggunaan telah diperhatikan sistem persegi panjang koordinat Pada penggunaan praktis sarana geometri analitik, seringkali ada kebutuhan untuk mengubah sistem koordinat yang diadopsi. Hal ini biasanya ditentukan oleh pertimbangan kenyamanan: gambar geometris disederhanakan, model analitik dan ekspresi aljabar yang digunakan dalam perhitungan menjadi lebih jelas.

Konstruksi dan penggunaan sistem khusus koordinat: kutub, silinder dan bola ditentukan oleh makna geometris dari masalah yang sedang dipecahkan. Pemodelan dengan menggunakan sistem koordinat khusus seringkali memudahkan pengembangan dan penggunaan model analitis dalam memecahkan masalah praktis.

Hasil yang diperoleh dalam Lampiran Bab 1 akan digunakan aljabar linier, paling- V analisis matematis dan dalam fisika.

Transformasi koordinat persegi panjang kartesius pada bidang dan ruang.

Ketika mempertimbangkan masalah membangun sistem koordinat pada bidang dan ruang, diketahui bahwa sistem koordinat dibentuk dengan berpotongan di satu titik. sumbu angka: diperlukan dua sumbu pada sebuah bidang, tiga sumbu di luar angkasa. Sehubungan dengan konstruksi model analitik vektor, pengenalan operasi produk titik vektor dan memecahkan masalah konten geometri, ditunjukkan bahwa penggunaan sistem koordinat persegi panjang adalah yang paling disukai.

Jika kita mempertimbangkan masalah transformasi sistem tertentu koordinat secara abstrak, maka dalam kasus umum dimungkinkan untuk memungkinkan pergerakan sewenang-wenang masuk ruang yang diberikan mengoordinasikan sumbu dengan hak untuk mengganti nama sumbu secara sewenang-wenang.

Kita akan mulai dari konsep utama sistem referensi , diterima dalam fisika. Mengamati gerak benda, diketahui bahwa gerak tubuh terisolasi tidak dapat ditentukan dengan sendirinya. Anda perlu memiliki setidaknya satu benda lagi yang relatif terhadap pergerakan yang diamati, yaitu perubahan di dalamnya relatif ketentuan. Untuk memperoleh model analisis, hukum, dan gerak, suatu sistem koordinat dikaitkan dengan benda kedua ini, sebagai sistem acuan, dan sedemikian rupa sehingga sistem koordinat tersebut dapat berfungsi dengan baik. padat !

Sejak gerakan sewenang-wenang padat dari satu titik dalam ruang ke titik lainnya dapat diwakili oleh dua gerakan independen: translasi dan rotasi, maka pilihan untuk mengubah sistem koordinat dibatasi pada dua gerakan:

1). Transfer paralel: kita hanya mengikuti satu titik – titik.

2). Rotasi sumbu sistem koordinat relatif terhadap suatu titik: sebagai benda tegar.

Mengubah koordinat persegi panjang kartesius pada bidang.

Mari kita punya sistem koordinat pada bidang: , dan . Sistem koordinat diperoleh dengan terjemahan paralel sistem. Sistem koordinat diperoleh dengan memutar sistem melalui sudut , dan arah putaran positif diambil sebagai putaran sumbu berlawanan arah jarum jam.

Mari kita tentukan vektor basis untuk sistem koordinat yang diadopsi. Karena sistem diperoleh dengan transfer paralel sistem, maka untuk kedua sistem ini kita menerima vektor basis: , dan satuan dan searah dengan sumbu koordinat , , masing-masing. Untuk sistem, kami mengambil vektor basis vektor satuan, searah dengan sumbu , .

Biarkan sistem koordinat diberikan dan sebuah titik = didefinisikan di dalamnya. Kita asumsikan bahwa sebelum transformasi kita mempunyai sistem koordinat yang bertepatan dan . Terapkan ke sistem koordinat transfer paralel, ditentukan oleh vektor. Diperlukan untuk mendefinisikan transformasi koordinat suatu titik. Mari kita gunakan persamaan vektor: = + , atau:

Mari kita ilustrasikan transformasi terjemahan paralel dengan contoh yang dikenal dalam aljabar dasar.

Contoh D1 : Persamaan parabola diberikan: = = . Kurangi persamaan parabola ini ke bentuk paling sederhana.

Larutan:

1). Mari kita gunakan tekniknya memulangkan persegi penuh : = , yang dapat dengan mudah direpresentasikan sebagai: –3 = .

2). Mari kita terapkan transformasi koordinat - transfer paralel := . Setelah itu, persamaan parabola berbentuk: . Transformasi dalam aljabar ini didefinisikan sebagai berikut: parabola = diperoleh dengan perpindahan parabola paling sederhana ke kanan sebanyak 2, dan ke atas sebanyak 3 satuan.

Menjawab: bentuk paling sederhana parabola: .

Biarkan sistem koordinat diberikan dan sebuah titik = didefinisikan di dalamnya. Kita asumsikan bahwa sebelum transformasi kita mempunyai sistem koordinat yang bertepatan dan . Mari kita terapkan transformasi rotasi pada sistem koordinat sehingga relatif terhadap posisi semula, yaitu relatif terhadap sistem, ternyata diputar dengan sudut . Diperlukan untuk mendefinisikan transformasi koordinat titik = . Mari kita tuliskan vektor dalam sistem koordinat dan : = .

Pada saat yang sama, untuk sudut mana pun yang kita miliki: yang cukup sederhana diamati dari gambar. Maka: = . Yang terakhir dapat ditulis sebagai: = . Dari persamaan vektor tersebut diperoleh transformasi koordinat titik: .Pelanggaran hak cipta dan

Topik permasalahan kali ini adalah penugasan transformasi affine dalam bentuk matriks. Topik ini pada dasarnya adalah ringkasan dari semua yang telah dikatakan sebelumnya.

Definisi.Transformasi bidang disebut dekat, Jika

  • itu satu-ke-satu;
  • bayangan suatu garis lurus adalah garis lurus.

Transformasi tersebut disebut satu lawan satu, Jika

  • poin yang berbeda menuju ke poin yang berbeda;
  • beberapa titik menuju ke setiap titik.

Koordinat homogen

Jika kita perhatikan transfer paralel, ternyata matriks 2x2 tidak lagi cukup untuk mendefinisikannya. Namun dapat ditentukan dengan menggunakan matriks 3x3. Timbul pertanyaan, dari manakah mendapatkan koordinat ketiga suatu titik dua dimensi?

Definisi.Koordinat homogen - koordinat yang memiliki sifat bahwa objek yang didefinisikannya tidak berubah jika semua koordinat dikalikan dengan angka yang sama.

Koordinat vektor homogen(x, kamu) adalah tiga kali lipat angka(x", y", h), dimana x = x"/h, y = y"/h, dan h - beberapa bilangan real(kasus ketika jam = 0 istimewa).

CatatanKoordinat ini tidak memungkinkan Anda menentukan secara unik suatu titik pada bidang. Misalnya,(1, 1, 1) dan (2, 2, 2) tetapkan titik yang sama(1, 1) . Disarankan untuk mengambil satu set(x, y, 1) , yang akan mendeskripsikan semua titik pada bidang.

Matriks transformasi koordinat homogen berukuran 3x3. Mari kita perhatikan beberapa transformasi dalam koordinat homogen.

Kompresi/ketegangan

Transformasi ini mengalikan koordinat titik yang bersangkutan dengan faktor skala aksial:(x, y) -> (a x * x, a y * y) . Matriks transformasinya akan ditulis sebagai berikut:

[a x 0 0]

Dimana x – regangan aksial X,

ya – regangan aksial kamu.

CatatanDapat dicatat bahwa dengan nilai negatif dari koefisien kompresi/ekstensi, refleksi terjadi relatif terhadap sumbu yang bersesuaian. Kasus ini dapat dimasukkan dalam transformasi ini, atau dapat diambil secara terpisah, dengan mengatakan bahwa faktor penskalaan hanya bernilai positif.

Berbelok


Matriks rotasi 2x2 telah dibahas secara rinci sebelumnya. Sekarang dilengkapi dengan baris dan kolom:

[-sin(phi)cos(phi) 0]

Catatan Pada sudut phi = n matriks ini mendefinisikan simetri pusat terhadap titik asal, yang merupakan kasus khusus rotasi. Anda akan melihat bahwa simetri ini dapat ditentukan menggunakan transformasi squash/stretch (mengizinkan faktor penskalaan negatif).

Perpindahan paralel


Vektor asal (x, y) menjadi (x + t x, y + t y) . Matriks transformasinya akan ditulis sebagai berikut:

[ 1 0 0]

[t x t kamu 1]

Cerminan


Sebagaimana tercantum pada catatan transformasi squash/stretch, diperoleh refleksi sebagai berikut:

[-10 0]


refleksi terhadap sumbu x


refleksi terhadap sumbu kamu

Pandangan umum tentang transformasi affine

Matriks 3x3 yang kolom terakhirnya adalah (0 0 1) T mendefinisikan transformasi affine pada bidang tersebut:

[ * * 0]

[ * * 0]

[ * * 1]

Berdasarkan salah satu sifatnya, transformasi affine dapat ditulis sebagai:

f (x) = x * R + t,

dimana R – matriks yang dapat dibalik 2 x2, dan t – vektor sewenang-wenang. Dalam koordinat homogen akan ditulis sebagai berikut:

[R 1.1 R 1.2 0]

[R 2.1 R 2.2 0]

[t x t kamu 1]

Jika kita mengalikan vektor baris dengan matriks ini kita mendapatkan hasil transformasi:

[ xy1 ] *[ R 1.1 R 1.2 0 ]

[R 2.1 R 2.2 0]

[t x t kamu 1]

[ x'y'1 ]+[ t x t y 1 ]

Dalam hal ini [ x ’ y ’ ]= R *[ x y ]

CatatanPembaca yang penasaran telah bertanya pada dirinya sendiri pertanyaan: apa arti dari determinan matriks R? Dengan transformasi affine, luas semua bangun berubah menjadi | R |. (Anda dapat membuktikannya secara tegas dari sudut pandang matematis, namun fakta ini diberikan di sini tanpa bukti.)

Itu. transformasi affine direpresentasikan sebagai komposisi dari beberapa transformasi yang ditentukan oleh matriks R , dan transfer paralel. Mari kita periksa secara lebih rinci sifat matriks ini dan peluang yang diberikannya.

Matriks R mendefinisikan dasar baru pesawat. Itu. vektor(1, 0) menuju (R 1,1, R 1,2), vektor (0, 1) menuju (R 2,1, R 2,2 ). Basis barunya adalah baris-baris matriks R.

Contoh.


Jika dicerminkan terhadap sumbu y , vektor basis sepanjang sumbu ordinat dipertahankan, dan sepanjang sumbu absis menjadi(-1, 0) . Itu. matriks R akan terlihat seperti ini:


Sekarang menjadi jelas bahwa selain transformasi di atas, dengan menggunakan transformasi affine, Anda dapat memperoleh kemiringan:


Di atas memberikan informasi dasar tentang alat canggih seperti transformasi affine. Masih banyak pertanyaan: subkelas transformasi affine manakah yang mempertahankan sudut antara garis lurus? Bagaimana kita dapat merepresentasikan transformasi affine sebagai komposisi beberapa subkelas? Cara menentukan transformasi yang lebih kompleks, misalnya, simetri aksial relatif terhadap garis lurus sembarang?

Jawaban atas pertanyaan-pertanyaan ini dan pembahasan lebih rinci tentang transformasi affine akan diberikan secara terpisah, sebagai bagian dari kursus geometri teoretis.

Mari kita membahas implementasi praktis dari transformasi affine dalam bentuk program demonstrasi. Kemampuan aplikasi yang mendemonstrasikan perputaran pesawat dengan mouse ditambahkan ke fungsi terjemahan paralel saat tombol ditekan CTRL.

Karena Artikel ini merupakan artikel terakhir pada bagian ini, kode aplikasi demo harus sesuai. Mari kita coba mencari tahu blok apa yang dibutuhkan dalam aplikasi grafis, sekaligus melihat bagaimana penerapannya dalam program ini:

  • blok tempat jendela dibuat dan pesan diproses sistem operasi, diimplementasikan dalam sebuah file utama. cpp
  • mesin grafis yang merender gambar, kelas Mesin
  • lapisan diperlukan untuk mengubah koordinat logis menjadi koordinat jendela dan sebaliknya, kelas Area pandang
  • objek yang bertanggung jawab untuk bereaksi terhadap tindakan pengguna, kelas Tindakan

Contoh di bawah mengimplementasikan blok fungsional ini, dengan komentar mendetail.

5. TRANSFORMASI GEOMETRIS

Menampilkan gambar pada tampilan layar dan berbagai tindakan dengannya, termasuk analisis visual, memerlukan tingkat literasi geometris tertentu dari pengguna. Konsep geometris, rumus dan fakta yang terutama berkaitan dengan bidang dan kasus tiga dimensi berperan dalam permasalahan grafik komputer peran khusus. Pertimbangan, pendekatan dan ide geometris ditambah dengan kemungkinan yang terus berkembang teknologi komputer adalah sumber yang tidak ada habisnya kemajuan signifikan dalam pengembangan grafik komputer, nya penggunaan yang efektif dalam penelitian ilmiah dan lainnya. Kadang-kadang bahkan teknik geometris yang paling sederhana memberikan kemajuan nyata pada setiap tahap penyelesaian masalah grafis yang besar.

5.1. Transformasi di pesawat dan di luar angkasa

Untuk menyelesaikan masalah seperti pergerakan objek dan bagian-bagiannya, digunakan kontrol kamera transformasi affine(AP), pertimbangkan properti utamanya:

1) titik-titik yang terletak pada garis yang sama, setelah transformasi, terletak pada garis yang sama;

2) garis yang berpotongan tetap berpotongan, dan garis sejajar tetap sejajar;

3) dengan AP ruang, bidang-bidang yang berpotongan tetap berpotongan, bidang-bidang sejajar tetap sejajar, dan bidang-bidang yang berpotongan tetap berpotongan;

4) dengan AP, perbandingan luas dua persegi pada suatu bidang dan perbandingan volume dua kubus dalam ruang dipertahankan.

Affine transformasi di pesawat

Misalkan sebuah garis lurus diberikan pada bidang tersebut sistem koordinat. Kemudian setiap titik M berhubungan dengan pasangan bilangan terurut (x, y) dari koordinatnya (Gbr. 5.1). Dengan memperkenalkan sistem koordinat bujursangkar lain pada bidang, kita mengasosiasikan titik M yang sama dengan pasangan angka lainnya - (x *, y *).

Peralihan dari satu sistem koordinat bujursangkar pada suatu bidang ke bidang lainnya dijelaskan oleh hubungan berikut:

x* = α x+ β kamu+ λ ,

kamu* = γ x+ δ kamu+ µ ,

dimana α, β, λ, γ, µ, δ – angka sewenang-wenang dihubungkan oleh ketimpangan

α β ≠ 0.

γ δ

Rumus (1) dapat dipertimbangkan dengan dua cara: titik dipertahankan dan sistem koordinat diubah (Gbr. 5.2) (dalam hal ini titik sewenang-wenang M tetap sama, hanya koordinatnya yang berubah), atau titiknya berubah dan sistem koordinat dipertahankan (Gbr. 5.3) (dalam hal ini, rumus (1) mendefinisikan pemetaan yang mengubah titik sembarang M (x, y) menjadi titik M*(x*,y*), yang koordinatnya ditentukan dalam sistem koordinat yang sama).

Beras. 5.1. Asli

Beras. 5.2. Transformasi

Beras. 5.3. Transformasi

sistem koordinat

titik

DI DALAM Selanjutnya, kita akan mempertimbangkan rumus (1) sebagai aturan yang menyatakan titik-titik pada bidang mana yang ditransformasikan dalam sistem koordinat bujursangkar tertentu.

DI DALAM Dalam transformasi affine pada bidang, peran khusus dimainkan oleh beberapa kasus khusus penting yang memiliki karakteristik geometris yang dapat dilacak dengan baik. Saat meneliti makna geometris koefisien numerik dalam rumus (1) untuk kasus ini akan lebih mudah untuk mengasumsikan bahwa sistem yang diberikan koordinatnya adalah Cartesian persegi panjang.

1. Berbalik titik awal pada suatu sudutϕ dijelaskan oleh rumus

x * = x cosϕ − y sinϕ ,

y * = x sinϕ + y cosϕ .

2. Peregangan (kompresi) sepanjang sumbu koordinat dapat diatur sebagai berikut:

x * = α x ,y * = δ y ,α > 0,δ > 0.

Ketegangan sepanjang sumbu absis disediakan dengan syarat α > 1, dan kompresi – pada 0<α < 1.

3. Refleksi (relatif terhadap sumbu x) ditentukan menggunakan

x *= x ,y *= − y .

4. Transfer paralel disediakan oleh relasi

x* = x+ λ , y* = y+ µ .

Pemilihan keempat kasus khusus ini ditentukan oleh dua keadaan.

1. Masing-masing transformasi di atas memiliki makna geometris yang sederhana dan jelas (bilangan konstan yang termasuk dalam rumus di atas juga memiliki makna geometris).

2. Sebagaimana dibuktikan dalam geometri analitik, setiap transformasi bentuk (1) selalu dapat direpresentasikan sebagai

eksekusi konsisten dari transformasi paling sederhana. Untuk menggunakan rumus terkenal ini secara efektif

Dalam grafik komputer, notasi matriks lebih mudah. Matriks yang bersesuaian dengan kasus A, B dan C mudah dibuat dan memiliki bentuk sebagai berikut:

cosϕ

dosaϕ

− dosaϕ

cosϕ

−1

Namun, untuk menyelesaikan masalah yang dibahas di bawah ini, sangat diinginkan untuk menggunakan pendekatan matriks yang mencakup keempat transformasi paling sederhana (termasuk transfer), dan juga transformasi affine umum. Hal ini dapat dicapai, misalnya, seperti ini: lanjutkan ke deskripsi titik sembarang pada bidang, bukan diurutkan berdasarkan sepasang angka, seperti yang dilakukan di atas, tetapi berdasarkan tiga angka yang diurutkan.

Koordinat titik homogen

Misalkan M adalah suatu titik sembarang pada bidang dengan koordinat yy yang dihitung relatif terhadap sistem koordinat bujursangkar tertentu. Koordinat homogen titik ini adalah sembarang rangkap tiga bilangan bukan nol secara simultan x 1 , x 2 , x 3 yang berhubungan dengan bilangan tertentu x dan y dengan hubungan berikut:

x 1/ x 3= x , x 2/ x 3= kamu .

Saat memecahkan masalah grafik komputer, koordinat homogen biasanya dimasukkan sebagai berikut: titik sembarang M (x, y) pada bidang dikaitkan dengan titik M * (x, y, 1) dalam ruang (Gbr. 5.4).

Perhatikan bahwa titik sembarang pada garis yang menghubungkan titik asal, titik O (0, 0, 0) dengan titik M * (x,y, 1), dapat ditentukan dengan tiga kali lipat bilangan berbentuk (hx,hy,h ).

Beras. 5.4. Koordinat homogen

Kita asumsikan h ≠ 0. Vektor dengan koordinat hx , hy , h adalah vektor arah garis lurus yang menghubungkan titik 0 (0, 0, 0) dan M* (x , y , 1). Garis ini memotong bidang z = 1 di titik (x,y, 1), yang secara unik menentukan titik (x,y) pada bidang koordinat.

Jadi, korespondensi (satu-ke-satu) dibuat antara titik sembarang dengan koordinat (x,y) dan himpunan tiga kali lipat bilangan berbentuk (hx,hy,h) untuk h ≠ 0, yang memungkinkan kita untuk anggaplah bilangan hx,hy,h sebagai koordinat baru titik ini.

Dalam geometri proyektif, notasi berikut diterima untuk koordinat homogen: x : y : 1 atau x 1 : x 2 : x 3 (bilangan x 1 , x 2 , x 3 tidak sekaligus berubah menjadi nol).

Penggunaan koordinat homogen ternyata berguna bahkan ketika memecahkan masalah yang paling sederhana, misalnya penskalaan:

1) titik dengan koordinat homogen (0.5; 0.1; 2.5) h=1 tidak dapat diwakili oleh koordinat bilangan bulat, tetapi, misalnya, saat memilih h= 10 kita peroleh (5; 1; 25);

2) agar hasil transformasi tidak menimbulkan luapan aritmatika, untuk suatu titik yang mempunyai koordinat

(80000;40000;1000) dapat diambil, misalnya h= 0,001. Dalam kembali

Hasilnya kita mendapatkan (80;40;1).

Contoh yang diberikan menunjukkan kegunaan penggunaan koordinat homogen saat melakukan perhitungan. Namun, tujuan utama memperkenalkan koordinat homogen dalam grafik komputer tidak diragukan lagi adalah kemudahan penerapannya pada transformasi geometri.

Dengan menggunakan tiga kali lipat koordinat homogen dan matriks orde ketiga, setiap transformasi affine pada suatu bidang dapat dijelaskan.

Faktanya, dengan asumsi h = 1, mari kita bandingkan dua entri: entri yang ditandai dengan simbol * dan entri matriks berikut:

(x *y * 1)= (x kamu 1)

Sangat mudah untuk melihat bahwa setelah mengalikan ekspresi di sisi kanan relasi terakhir, kita memperoleh rumus (1) dan persamaan numerik yang benar 1 ≡ 1. Dengan demikian, catatan yang dibandingkan dapat dianggap setara.

Elemen matriks transformasi affine sembarang tidak memiliki makna geometris yang eksplisit. Oleh karena itu, untuk melaksanakan pemetaan ini atau itu, yaitu mencari elemen-elemen matriks yang bersesuaian menurut uraian geometri tertentu, diperlukan teknik khusus. Biasanya pembangunan matriks ini sesuai dengan kompleksitas masalah yang sedang dipertimbangkan dibagi menjadi beberapa tahap.

Pada setiap tahap, ditemukan matriks yang sesuai dengan satu atau beberapa kasus A, B, C atau D di atas, yang memiliki sifat geometris terdefinisi dengan baik.

Mari kita tuliskan matriks orde ketiga yang bersesuaian.

A. Matriks rotasi

B.Matriks Regangan

cosϕ

dosaϕ

(kompresi) (dilatasi)

cosϕ

= − dosaϕ

D. Matriks transfer (terjemahan)

B. Matriks refleksi (re-

− 1 0 .

Mari kita perhatikan contoh transformasi affine pada bidang tersebut.

Contoh 1. Buatlah matriks rotasi

di sekitar titik A(a, b) pada sudut ϕ (Gbr. 5.5).

A A,

kesejajaran tengah

berputar

koordinat

langkah ke-2. Putar berdasarkan sudutϕ.

A A,

Beras. 5.5. Berbelok

mengembalikan pusat putaran ke posisi semula; matriks transformasi yang sesuai.

cosϕ

dosaϕ

= − dosaϕ

cosϕ

−A

−sebuah

−b

Mari kita kalikan matriks-matriks tersebut dengan urutan yang sama seperti penulisannya: . Hasilnya, kami menemukan bahwa transformasi yang diinginkan (dalam notasi matriks) akan terlihat seperti ini:

dosaϕ

dosaϕ

(x *y * 1)= (x kamu 1)×

− dosaϕ

cosϕ

− a cosϕ + b sinϕ + a

− a sinϕ − b cosϕ + b

Elemen-elemen matriks yang dihasilkan (terutama pada baris terakhir) tidak begitu mudah untuk diingat. Pada saat yang sama, masing-masing dari tiga matriks yang dikalikan dengan mudah dibuat dari deskripsi geometri dari pemetaan yang sesuai.

Contoh 2. Buatlah matriks regangan dengan koefisien regangan sepanjang sumbu absis dan sepanjang sumbu ordinat dan berpusat di titik A(a, b).

langkah pertama. Pindahkan ke vektor A (-a, -b) untuk menyelaraskan pusat regangan dengan titik asal.

langkah ke-2. Peregangan sepanjang sumbu koordinat dengan koefisien masing-masing α dan β.

langkah ke-3. Pindahkan ke vektorA (a,b) untuk mengembalikan pusat tegangan ke posisi semula; matriks transformasi yang sesuai.



Apakah Anda menyukai artikelnya? Bagikan dengan teman Anda!