Dönüşümlerin Matrisle Temsili
M× matrisi, m satırlarında ve n sütunda düzenlenmiş bir sayı kümesidir. Aşağıdaki çizimde birkaç matris gösterilmiştir.
Tek tek öğeler ekleyerek aynı boyutta iki matris ekledik. Aşağıdaki çizimde iki matris toplama örneği gösterilmiştir.
M×n matrisi n×p matrisi ile çarpılır ve sonuç bir m×p matrisi olur. İlk matriste yer alan sütun sayısı, ikinci matriste yer alan satır sayısıyla aynı olması gerekir. Örneğin, 4×2 matrisi 4×3 matrisi üretmek için 2×3 matrisle çarpılır.
Bir matrisin düzlem ve satır ve sütunlardaki noktalar vektör olarak düşünebilirsiniz. Örneğin (2, 5), iki bileşeni olan bir vektör ve (3, 7, 1) üç bileşeni olan bir vektör. İki vektörü nokta ürünü aşağıdaki gibi tanımlanır:
(a, b) • (c, d) = ac + bd
(a, b, c) • (d, e, f) = ad + be + cf
Örneğin, (2, 3) ve (5, 4) nokta ürünü (2)(5) + (3)(4) = 22'dir. (2, 5, 1) ve (4, 3, 1) nokta ürünü (2)(4) + (5)(3) + (1)(1) = 24'dür. İki vektörun nokta ürününün başka bir vektör değil sayı olduğunu unutmayın. Ayrıca, nokta ürününü yalnızca iki vektör aynı sayıda bileşene sahipse hesaplayabilirsiniz.
A(i, j), ith satırı ve jth sütunundaki A matrisinin girdisi olur. Örneğin A(3, 2), matris A'daki 3. satırdaki ve 2. sütundaki giriştir. A, B ve C'nin matris ve AB = C olduğunu varsayalım. C girişleri aşağıdaki gibi hesaplanır:
C(i, j) = (A satırı i) • (B sütunu j)
Aşağıdaki çizimde matris çarpımlarının birkaç örneği gösterilmiştir.
Düzlemde yer alan bir noktanın 1×2 matrisi olarak düşünerek bu noktanın 2×2 matrisle çarparak dönüşüme neden olduğunu düşünerek bu × dönüştürerek. Aşağıdaki çizimde noktaya uygulanan birkaç dönüştürme gösterilmiştir (2, 1).
Önceki şekilde gösterilen dönüştürmelerin hepsi doğrusal dönüşümlerdir. Çeviri gibi diğer bazı dönüştürmeler doğrusal değildir ve 2×2 matrisi tarafından çarpma olarak ifade kullanılamaz. Nokta (2, 1) ile başlamak, 90 derece döndürmek, x yönünde 3 birim çevirmek ve y yönünde 4 birim çevirmek istediğinizi varsayalım. Bunu bir matris çarpımı ve ardından matris eklemesi kullanarak gerçekleştirin.
Doğrusal dönüşüm (2×2 matrisi tarafından çarpım) ve ardından bir çeviri (1×2 matrisi ekleme) affine dönüşümü olarak çağrılır. Birffine dönüştürmesini bir matris çiftinde (biri doğrusal parça, biri çeviri için) depolamanın alternatifi, dönüşümün tamamını 3×3 matriste depolamaktır. Bunu yapmak için düzlemde bir noktanın 3. koordinatla 1×3 matriste depolanmış olması gerekir. Her zamanki teknik, 3. koordinatların da 1'e eşit olmasıdır. Örneğin, nokta (2, 1) matris [2 1 1] ile temsil edildi. Aşağıdaki çizimde tek bir 3×3 matrisi tarafından çarpım olarak ifade eden bir affine dönüşümü (90 derece döndürün; x yönünde 3 birimi çevir, y yönünde 4 birim) gösterilmiştir.
Önceki örnekte, nokta (2, 1) noktası (2, 6) ile eşlenmiş. 3.03 matrisinin üçüncü × 0, 0, 1 sayılarını içerdiğini unutmayın. Bu, bir affine dönüştürmenin 3×3 matrisi için her zaman böyle olacaktır. Önemli sayılar, sütun 1 ve 2'de yer alan altı sayıdır. Matrisin sol üst ×2 bölümü dönüştürmenin doğrusal bölümünü, üçüncü satırdaki ilk iki giriş ise çeviriyi temsil eder.
Bu GDI+ nesnesinde bir affine dönüştürmesi Matrix depoabilirsiniz. Bir matrisin birffine dönüştürmeyi temsil eden üçüncü sütunu her zaman (0, 0, 1) olduğundan, bir nesne Matrix ekleyebilirsiniz. deyimi, Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) önceki şekilde gösterilen matrisi oluşturmak için kullanılır.
Bileşik Dönüşümler
Bileşik dönüşüm, biri diğeri tarafından takip edilen bir dönüşüm dizisidir. Aşağıdaki listede matrisleri ve dönüştürmeleri göz önünde bulundurabilirsiniz:
| Matris | Dönüşüm |
|---|---|
| Matris A | 90 Derece Döndür derece |
| Matris B | x yönünde 2 faktörüne göre ölçeklendirme |
| Matris C | 3 birimi y yönünde çevirme |
[2 1 1] matrisi ile temsil edilen (2, 1) noktasıyla başlar ve A ile çarparak B ile C'nin ardından C noktası (2, 1) listelenen sırayla üç dönüştürmeden geçmesi gerekir.
[2 1 1] ABC = [-2 5 1]
Bileşik dönüşümün üç parçasını üç ayrı matriste depolamak yerine A, B ve C'yi çarparak bileşik dönüşümün tamamını depolar ve tek bir 3×3 matrisi elde edin. ABC = D olduğunu varsayalım. Ardından D ile çarpılan bir nokta, A, B ve C ile çarpılarak aynı sonucu verir.
[2 1 1] D = [-2 5 1]
Aşağıdaki çizimde A, B, C ve D matrisleri gösterilmiştir.
Bileşik dönüşüm matrisinin tek tek dönüşüm matrisleri çarparak oluşturulmuş olması, herhangi bir affine dönüştürme dizisinin tek bir nesnede depolandığı anlamına Matrix gelir.
Dikkat
Bileşik dönüşümün sırası önemlidir. Genel olarak, döndürün, ölçeklendirin, sonra çeviri ölçekle aynı değildir, sonra da döndürün ve çevirin. Benzer şekilde, matris çarpma sırası önemlidir. Genel olarak, ABC BAC ile aynı değildir.
sınıfı, Matrix bileşik dönüşüm için çeşitli yöntemler sağlar: , , , , Multiply ve RotateRotateAtScaleShearTranslate . Aşağıdaki örnek, önce 30 derece döndüren, ardından y yönünde 2 faktörüne göre ölçeklendiren ve ardından x yönünde 5 birim çeviren bileşik dönüşümün matrisini oluşturur:
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)
Aşağıdaki çizimde matris gösterilmiştir.