Representasi Transformasi Matriks
Matriks m×n adalah sekumpulan angka yang disusun dalam baris m dan kolom n. Ilustrasi berikut menunjukkan beberapa matriks.
Anda dapat menambahkan dua matriks dengan ukuran yang sama dengan menambahkan elemen individual. Ilustrasi berikut menunjukkan dua contoh 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.
Poin 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 baris ke-3 dan kolom ke-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 dari B)
Ilustrasi berikut menunjukkan beberapa contoh perkalian matriks.
Jika Anda menganggap titik dalam bidang sebagai matriks 1×2, Anda dapat mengubah titik itu dengan mengalikannya dengan matriks 2×2. Ilustrasi berikut menunjukkan beberapa transformasi yang diterapkan ke titik (2, 1).
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), putar 90 derajat, terjemahkan 3 unit ke arah x, dan terjemahkan 4 unit ke arah y. Anda dapat menyelesaikan ini dengan menggunakan perkalian matriks diikuti dengan penambahan matriks.
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 matriks 3×3. Untuk membuat ini berfungsi, titik dalam 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 dalam arah y) dinyatakan sebagai perkalian dengan matriks 3×3 tunggal.
Dalam contoh sebelumnya, titik (2, 1) dipetakan ke titik (2, 6). Perhatikan bahwa kolom ketiga matriks 3×3 berisi angka 0, 0, 1. Ini akan selalu terjadi untuk matriks 3×3 transformasi affine. Angka penting adalah enam angka dalam kolom 1 dan 2. Bagian kiri atas 2×2 matriks mewakili bagian linier transformasi, dan dua entri pertama dalam baris ke-3 mewakili terjemahan.
Di GDI+ Anda dapat menyimpan transformasi affine dalam Matrix objek. Karena kolom ketiga matriks yang mewakili transformasi affine selalu (0, 0, 1), Anda hanya menentukan enam angka dalam dua kolom pertama saat Anda membuat Matrix objek. Pernyataan Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4)
ini 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:
Matrix | Transformasi |
---|---|
Matriks A | Putar 90 derajat |
Matriks B | Menskalakan berdasarkan faktor 2 ke arah x |
Matriks C | Terjemahkan 3 unit ke arah y |
Jika kita 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 matriks 3×3 yang menyimpan seluruh transformasi komposit. Misalkan ABC = D. Kemudian titik yang dikalikan dengan D memberikan hasil yang sama dengan titik yang dikalikan dengan A, lalu B, lalu C.
[2 1 1] D = [-2 5 1]
Ilustrasi berikut menunjukkan matriks A, B, C, dan D.
Fakta bahwa matriks transformasi komposit dapat dibentuk dengan mengalikan matriks transformasi individu berarti bahwa urutan transformasi affine dapat disimpan dalam satu Matrix objek.
Perhatian
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 ini Matrix menyediakan beberapa metode untuk membangun transformasi komposit: Multiply, , Rotate, RotateAt, ScaleShear, dan 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 = new Matrix();
myMatrix.Rotate(30);
myMatrix.Scale(1, 2, MatrixOrder.Append);
myMatrix.Translate(5, 0, MatrixOrder.Append);
Dim myMatrix As New Matrix()
myMatrix.Rotate(30)
myMatrix.Scale(1, 2, MatrixOrder.Append)
myMatrix.Translate(5, 0, MatrixOrder.Append)
Ilustrasi berikut menunjukkan matriks.
Baca juga
.NET Desktop feedback