Bagikan melalui


Representasi Transformasi Matriks

Matriks m×n adalah sekumpulan angka yang disusun dalam baris m dan kolom n . Ilustrasi berikut menunjukkan beberapa matriks.

ilustrasi memperlihatkan enam matriks dari berbagai dimensi

Anda dapat menambahkan dua matriks dengan ukuran yang sama dengan menambahkan elemen individual. Ilustrasi berikut menunjukkan dua contoh penambahan matriks.

ilustrasi yang menunjukkan cara melakukan penambahan matriks

Matriks m×n dapat dikalikan dengan matriks n×p , dan hasilnya adalah matriks m×p . Jumlah kolom dalam matriks pertama harus sama dengan jumlah baris dalam matriks kedua. Misalnya, matriks 4 ×2 dapat dikalikan dengan matriks 2 ×3 untuk menghasilkan matriks 4 ×3.

Titik dalam bidang dan baris dan kolom matriks dapat dianggap sebagai vektor. Misalnya, (2, 5) adalah vektor dengan dua komponen, dan (3, 7, 1) adalah vektor dengan tiga komponen. Produk titik dari dua vektor didefinisikan sebagai berikut:

(a, b) • (c, d) = ac + bd

(a, b, c) • (d, e, f) = ad + be + cf

Misalnya, produk titik (2, 3) dan (5, 4) adalah (2)(5) + (3)(4) = 22. Produk titik (2, 5, 1) dan (4, 3, 1) adalah (2)(4) + (5)(3) + (1)(1) = 24. Perhatikan bahwa produk titik dari dua vektor adalah angka, bukan vektor lain. Perhatikan juga bahwa Anda dapat menghitung produk titik hanya jika kedua vektor memiliki jumlah komponen yang sama.

Biarkan A(i, j) menjadi entri dalam matriks A di baris ith dan kolom jth . Misalnya A(3, 2) adalah entri dalam matriks A di bariske-3 dan kolomke-2 . Misalkan A, B, dan C adalah matriks, dan AB = C. Entri C dihitung sebagai berikut:

C(i, j) = (baris i dari A) • (kolom j B)

Ilustrasi berikut ini memperlihatkan beberapa contoh perkalian matriks.

ilustrasi yang menunjukkan cara melakukan perkalian matriks

Jika Anda menganggap titik dalam bidang sebagai matriks 1 × 2, Anda dapat mengubah titik tersebut dengan mengalikannya dengan 2 × 2 matriks. Ilustrasi berikut menunjukkan beberapa transformasi yang diterapkan ke titik (2, 1).

ilustrasi yang menunjukkan cara menggunakan perkalian matriks untuk menskalakan, memutar, atau mencerminkan titik dalam bidang

Semua transformasi yang ditunjukkan pada gambar sebelumnya adalah transformasi linier. Transformasi tertentu lainnya, seperti terjemahan, tidak linier, dan tidak dapat diekspresikan sebagai perkalian dengan matriks 2 × 2. Misalkan Anda ingin memulai dengan titik (2, 1), memutarnya 90 derajat, menerjemahkannya 3 unit ke arah x, dan menerjemahkannya 4 unit ke arah y. Anda dapat menyelesaikan ini dengan melakukan perkalian matriks diikuti dengan penambahan matriks.

ilustrasi yang menunjukkan bagaimana perkalian dan penambahan matriks dapat memutar titik dan menerjemahkannya dua kali

Transformasi linier (perkalian dengan matriks 2 × 2) diikuti dengan terjemahan (penambahan matriks 1 × 2) disebut transformasi affine. Alternatif untuk menyimpan transformasi affine dalam sepasang matriks (satu untuk bagian linier dan satu untuk terjemahan) adalah menyimpan seluruh transformasi dalam 3 × 3 matriks. Untuk membuat ini berfungsi, titik di bidang harus disimpan dalam matriks 1 × 3 dengan koordinat ke-3 dummy. Teknik yang biasa adalah membuat semua koordinat ke-3 sama dengan 1. Misalnya, titik (2, 1) diwakili oleh matriks [2 1 1]. Ilustrasi berikut menunjukkan transformasi affine (putar 90 derajat; terjemahkan 3 unit ke arah x, 4 unit ke arah y) yang dinyatakan sebagai perkalian dengan 3 × 3 matriks tunggal.

ilustrasi yang menunjukkan bagaimana perkalian matriks dapat melakukan transformasi affine

Dalam contoh sebelumnya, titik (2, 1) dipetakan ke titik (2, 6). Perhatikan bahwa kolom ketiga dari 3 × 3 matriks berisi angka 0, 0, 1. Ini akan selalu terjadi untuk 3 × 3 matriks transformasi affine. Angka penting adalah enam angka dalam kolom 1 dan 2. Bagian 2 × 2 kiri atas matriks mewakili bagian linier transformasi, dan dua entri pertama dalam baris ke-3 mewakili terjemahan.

ilustrasi yang menunjukkan bahwa dua kolom pertama paling signifikan untuk matriks 3x3 transformasi affine

Di Windows GDI+ Anda dapat menyimpan transformasi affine dalam objek Matriks . Karena kolom ketiga matriks yang mewakili transformasi affine selalu (0, 0, 1), Anda hanya menentukan enam angka di dua kolom pertama saat Anda membuat objek Matriks . Pernyataan Matrix myMatrix(0.0f, 1.0f, -1.0f, 0.0f, 3.0f, 4.0f); tersebut membangun matriks yang ditunjukkan pada gambar sebelumnya.

Transformasi Komposit

Transformasi komposit adalah urutan transformasi, satu diikuti oleh yang lain. Pertimbangkan matriks dan transformasi dalam daftar berikut:

  • Matriks A Putar 90 derajat
  • Skala Matriks B dengan faktor 2 ke arah x
  • Matriks C Terjemahkan 3 unit ke arah y

Jika Anda mulai dengan titik (2, 1) — diwakili oleh matriks [2 1 1] — dan dikalikan dengan A, maka B, maka C, titik (2,1) akan menjalani tiga transformasi dalam urutan yang tercantum.

[2 1 1] ABC = [ –2 5 1]

Daripada menyimpan tiga bagian transformasi komposit dalam tiga matriks terpisah, Anda dapat mengalikan A, B, dan C bersama-sama untuk mendapatkan satu 3 × 3 matriks yang menyimpan seluruh transformasi komposit. Misalkan ABC = D. Kemudian titik yang dikalikan dengan D memberikan hasil yang sama dengan titik dikalikan dengan A, lalu B, lalu C.

[2 1 1] D = [ –2 5 1]

Ilustrasi berikut menunjukkan matriks A, B, C, dan D.

ilustrasi memperlihatkan cara melakukan beberapa transformasi dengan mengalikan matriks konstituen

Fakta bahwa matriks transformasi komposit dapat dibentuk dengan mengalikan matriks transformasi individu berarti bahwa urutan transformasi affine dapat disimpan dalam satu objek Matrix .

Catatan

Urutan transformasi komposit penting. Secara umum, putar, lalu skalakan, lalu terjemahkan tidak sama dengan skala, lalu putar, lalu terjemahkan. Demikian pula, urutan perkalian matriks penting. Secara umum, ABC tidak sama dengan BAC.

 

Kelas Matriks menyediakan beberapa metode untuk membangun transformasi komposit: Matriks::Multiply, Matrix::Rotate, Matrix::RotateAt, Matrix::Scale, Matrix::Shear, dan Matrix::Translate. Contoh berikut membuat matriks transformasi komposit yang pertama kali memutar 30 derajat, lalu menskalakan dengan faktor 2 ke arah y, lalu menerjemahkan 5 unit ke arah x.

Matrix myMatrix;
myMatrix.Rotate(30.0f);
myMatrix.Scale(1.0f, 2.0f, MatrixOrderAppend);
myMatrix.Translate(5.0f, 0.0f, MatrixOrderAppend);

Ilustrasi berikut menunjukkan matriks.

ilustrasi yang memperlihatkan matriks dengan nilai yang dinyatakan sebagai fungsi trigonometri, dan matriks dengan perkiraan nilai fungsi tersebut