Dönüşümlerin Matrisle Temsili
m×n matrisi, m satırları ve n sütunlarında düzenlenmiş bir sayı kümesidir. Aşağıdaki çizimde birkaç matris gösterilmektedir.
Tek tek öğeler ekleyerek aynı boyutta iki matris ekleyebilirsiniz. Aşağıdaki çizimde matris eklemeye ilişkin iki örnek gösterilmiştir.
m×n matrisi n×p matrisi ile çarpılabilir ve sonuç bir m×p matrisidir. İlk matristeki sütun sayısı, ikinci matristeki satır sayısıyla aynı olmalıdır. Örneğin, 4×2 matrisi, 4×3 matris üretmek için 2×3 matrisi ile çarpılabilir.
Düzlemdeki noktalar, matrisin satır ve sütunları vektör olarak düşünülebilir. Örneğin, (2, 5) iki bileşeni olan bir vektördür ve (3, 7, 1) üç bileşenli bir vektördür. İki vektörünün 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 çarpımları (2)(5) + (3)(4) = 22'dir. (2, 5, 1) ve (4, 3, 1) nokta çarpımları (2)(4) + (5)(3) + (1)(1) = 24'tür. İki vektörünün nokta çarpımının bir sayı olduğunu, başka bir vektör olmadığını unutmayın. Ayrıca noktalı ürünü yalnızca iki vektör aynı sayıda bileşene sahipse hesaplayabileceğinizi unutmayın.
A(i, j) öğesinin i. satırdaki A matrisinde ve jth sütunundaki girdi olmasına izin verin. Örneğin A(3, 2), 3. satırdaki A matrisindeki ve 2. sütundaki giriştir. A, B ve C'nin matrisler ve AB = C olduğunu varsayalım. C girdileri aşağıdaki gibi hesaplanır:
C(i, j) = (satır i A) • (sütun j/ B)
Aşağıdaki çizimde matris çarpmasının çeşitli örnekleri gösterilmektedir.
Düzlemdeki bir noktayı 1×2 matrisi olarak düşünüyorsanız, 2×2 matrisle çarparak bu noktayı dönüştürebilirsiniz. Aşağıdaki çizimde, noktaya uygulanan çeşitli dönüştürmeler gösterilmektedir (2, 1).
Önceki şekilde gösterilen dönüştürmelerin tümü doğrusal dönüşümlerdir. Çeviri gibi diğer bazı dönüştürmeler doğrusal değildir ve 2×2 matrisi tarafından çarpım olarak ifade edilemez. Noktayla (2, 1) başlamak, 90 derece döndürmek, x yönünde 3 birim çevirmek ve 4 birimi y yönünde çevirmek istediğinizi varsayalım. Bunu, matris çarpması ve ardından matris ekleme kullanarak gerçekleştirebilirsiniz.
Doğrusal dönüştürmeye (2×2 matrisin çarpması) ve ardından çeviri (1×2 matrisinin eklenmesi) bir benze dönüştürme olarak adlandırılır. Bir benze dönüştürmeyi bir matris çiftinde depolamanın bir alternatifi (biri doğrusal parça, diğeri çeviri için) tüm dönüşümü 3×3 matrisinde depolamaktır. Bunun işe yaraması için düzlemdeki bir nokta, 1×3 matrisinde 3. manken koordinatı ile depolanmalıdır. Her zamanki teknik, tüm 3. koordinatları 1'e eşit hale getirmektir. Örneğin, nokta (2, 1) matris [2 1 1] ile temsil edilir. Aşağıdaki çizimde, tek bir 3×3 matris tarafından çarpma olarak ifade edilen bir benze dönüştürme (90 derece döndürün; x yönünde 3 birim çevirin, y yönünde 4 birim çevirin).
Yukarıdaki örnekte nokta (2, 1) noktası (2, 6) ile eşlenir. 3×3 matrisinin üçüncü sütununun 0, 0, 1 sayılarını içerdiğini unutmayın. Bu her zaman bir benze dönüştürmenin 3×3 matrisi için geçerli olacaktır. Önemli sayılar, 1 ve 2 sütunlarındaki altı sayıdır. Matrisin sol üst 2×2 bölümü dönüşümün doğrusal bölümünü, 3. satırdaki ilk iki girdi ise çeviriyi temsil eder.
GDI+'da bir nesnede Matrix bir benze dönüştürme depolayabilirsiniz. Bir matrisin bir benzeşim dönüşümünü temsil eden üçüncü sütunu her zaman (0, 0, 1) olduğundan, nesneyi Matrix oluştururken ilk iki sütunda yalnızca altı sayı belirtirsiniz. deyimi Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4)
, önceki şekilde gösterilen matrisi oluşturur.
Bileşik Dönüşümler
Bileşik dönüştürme, biri diğeri tarafından takip edilen bir dönüşüm dizisidir. Aşağıdaki listede yer alan matrisleri ve dönüşümleri göz önünde bulundurun:
Matris | Dönüşüm |
---|---|
Matris A | 90 derece döndür |
Matris B | X yönünde 2 faktörüne göre ölçeklendirme |
Matris C | 3 birimi y yönünde çevirin |
[2 1 1] matrisinin temsil ettiği nokta (2, 1) ile başlar ve A, B, sonra C ile çarpılırsak, nokta (2, 1) listelenen sırayla üç dönüştürmeden geçer.
[2 1 1] ABC = [-2 5 1]
Bileşik dönüşümün üç bölümünü üç ayrı matriste depolamak yerine, bileşik dönüşümün tamamını depolayan tek bir 3×3 matrisi elde etmek için A, B ve C'yi birlikte çarpabilirsiniz. ABC = D olduğunu varsayalım. Ardından D ile çarpılan bir nokta, A, B ve sonra da C ile çarpılan noktayla aynı sonucu verir.
[2 1 1] D = [-2 5 1]
Aşağıdaki çizimde A, B, C ve D matrisleri gösterilmektedir.
Bileşik dönüştürme matrisinin tek dönüştürme matrisleri çarpılarak oluşturulabilmesi, herhangi bir benze dönüştürme dizisinin tek Matrix bir nesnede depolanabileceği anlamına gelir.
Dikkat
Bileşik dönüşümün sırası önemlidir. Genel olarak döndürün, sonra ölçeklendirin, sonra çevirin ölçekle aynı değildir, sonra döndürün ve çevirin. Benzer şekilde, matris çarpımının sırası önemlidir. Genel olarak, ABC BAC ile aynı değildir.
Matrix sınıfı bileşik dönüştürme oluşturmak için çeşitli yöntemler sağlar: Multiply, Rotate, RotateAt, Scale, Shearve Translate. Aşağıdaki örnek, önce 30 derece döndüren, ardından y yönünde 2 kat ölçeklendirerek x yönünde 5 birim çeviren bileşik dönüştürme 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österilmektedir.
Ayrıca bkz.
.NET Desktop feedback
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin