Bagikan melalui


Representasi Transformasi Matriks

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

Illustration of matrices.

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

Illustration of matrix addition.

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.

Illustration of matrix multiplication.

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).

Matrix transformation to a point in a plane.

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.

Illustration of matrix multiplication followed by a matrix addition.

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.

Illustration of an affine transformation.

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.

Illustration of linear and translation part of a matrix transformation.

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.

Illustration of matrix A, B, C, and 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.

Matrix illustration of a composite transformation.

Baca juga