Bu sayfada dönüşümleri birleştirmeyi (döndürme, öteleme, ölçekleme, yansıma, kesme), matris çarpımı ile birleştirme yöntemini, sıralama önemini, bilgisayar grafikleri, robotik ve animasyon alanlarındaki uygulamaları öğreneceğiz.
Bir nesneye birden fazla dönüşüm uygulamak istediğimizde, bu dönüşümleri tek bir matris halinde birleştirebiliriz. Bu, hem hesaplama açısından verimli hem de pratik bir yöntemdir.
Matris çarpımı değişmeli değildir ($AB \neq BA$). Bu nedenle dönüşümlerin uygulama sırası sonucu doğrudan etkiler. $v' = M_n \cdots M_2 \cdot M_1 \cdot v$'de önce $M_1$, sonra $M_2$, ... uygulanır.
Soru: Bir dikdörtgenin köşeleri $A(0,0)$, $B(4,0)$, $C(4,2)$, $D(0,2)$ olsun. Önce $S(2,0.5)$ ile ölçekleyin, sonra $R(90^\circ)$ ile döndürün, sonra $T(1,3)$ ile öteleyin.
Çözüm: $M = T(1,3) \cdot R(90^\circ) \cdot S(2,0.5)$
Dönüşümü uygulayalım:
| Nokta | Dönüşüm Öncesi | Dönüşüm Sonrası |
|---|---|---|
| A | $(0,0)$ | $(1, 3)$ |
| B | $(4,0)$ | $(1, 11)$ |
| C | $(4,2)$ | $(0, 11)$ |
| D | $(0,2)$ | $(0, 3)$ |
Dikdörtgen önce ölçeklenmiş, sonra döndürülmüş, sonra ötelenmiştir.
Aynı dönüşümleri farklı sıralarla uygulamak tamamen farklı sonuçlar doğurur. Özellikle öteleme ile diğer dönüşümlerin sırası kritiktir.
Soru: $P = (1, 2)$ noktasına:
a) Önce $T(2,1)$ öteleme, sonra $R(90^\circ)$ döndürme
b) Önce $R(90^\circ)$ döndürme, sonra $T(2,1)$ öteleme
uygulayın ve sonuçları karşılaştırın.
Çözüm:
Aynı dönüşümler farklı sıralarla uygulandığında $(-3,3)$ ve $(0,2)$ gibi tamamen farklı sonuçlar elde edilir!
Soru: $P = (1, 2, 3)$ noktasına önce $R_x(90^\circ)$ döndürme, sonra $S(2, 0.5, 3)$ ölçekleme, sonra $T(1, -2, 4)$ öteleme uygulayın.
Çözüm: $M = T(1,-2,4) \cdot S(2,0.5,3) \cdot R_x(90^\circ)$
Dönüşümü uygulayalım:
Adım adım kontrol:
❌ Hata! Sonuç $(3, -3.5, 10)$ olmalıydı ama matris çarpımı $(3, -6.5, 10)$ verdi. Çünkü matris çarpımı sırasında ölçekleme ötelemeden önce gelmeliydi.
$M = T \cdot S \cdot R$ şeklinde çarpılır. Sıralama sağdan sola okunur: önce $R$, sonra $S$, sonra $T$.
▪️ Model Dönüşümleri: Nesneleri sahneye yerleştirme, döndürme, ölçekleme
▪️ Kamera Dönüşümleri: 3D sahnede kamera hareketi
▪️ Projeksiyon Dönüşümleri: 3D'den 2D ekrana aktarım
▪️ Karakter Animasyonu: Kemik sistemi ile iskelet animasyonu
▪️ İleri Kinematik: Eklem açılarından uç konum hesaplama
▪️ Ters Kinematik: Hedef konumdan eklem açılarını bulma
▪️ Koordinat Dönüşümleri: Robot tabanı, eklemler, uç konum arası dönüşüm
▪️ DH Parametreleri: Denavit-Hartenberg yöntemi ile robot kolu modelleme
▪️ Görüntü Kaydırması: Görüntüyü belirli bir yönde öteleme
▪️ Görüntü Döndürme: Görüntüyü belirli bir açı kadar döndürme
▪️ Görüntü Ölçekleme: Görüntüyü büyütme veya küçültme
▪️ Perspektif Dönüşümleri: Kamera kalibrasyonu ve düzeltme
| Dönüşüm Türü | Matris | Uygulama Alanı |
|---|---|---|
| Döndürme | $R(\theta)$ | Oyunlar, animasyon, robotik |
| Öteleme | $T(t_x,t_y)$ | Nesne yerleştirme, kamera hareketi |
| Ölçekleme | $S(s_x,s_y)$ | Yakınlaştırma, uzaklaştırma |
| Yansıma | $R_{ref}$ | Aynalama, simetri işlemleri |
| Kesme | $S_{shear}$ | Eğik yazı, deformasyon efektleri |
| Projeksiyon | $P$ | 3D'den 2D'ye dönüşüm |
Soru: Bir uçağın dönüşlerini Roll ($\phi=30^\circ$), Pitch ($\theta=20^\circ$), Yaw ($\psi=45^\circ$) açılarıyla birleştirin. Uçağın başlangıç konumu $P = (10, 0, 5)$ olsun.
Çözüm: $M = R_x(\phi) \cdot R_y(\theta) \cdot R_z(\psi)$
Bu tür dönüşümler uçuş benzetimleri, drone kontrolü ve oyun motorlarında sürekli kullanılır.
Unity, Unreal Engine gibi oyun motorlarında ve ROS (Robot Operating System) gibi robotik platformlarda bu dönüşüm matrisleri saniyede binlerce kez hesaplanır.
Dönüşüm birleştirme, tüm dönüşümleri tek bir matriste toplar.
▪️ Matris Çarpımı: $M = M_n \cdots M_2 \cdot M_1$ (sağdan sola uygulanır)
▪️ Sıralama Önemli: Matris çarpımı değişmeli değildir!
▪️ Uygulamalar: Bilgisayar grafikleri, robotik, bilgisayarlı görü, animasyon
▪️ Ölçekleme + Döndürme + Öteleme: En yaygın dönüşüm zinciri (SRT)
▪️ Roll-Pitch-Yaw: Uçak ve robot kontrolünde temel dönüşümler
Tüm lineer dönüşüm konularını tamamladık! Başka bir konuda yardımcı olabilir miyim?