Apple'ın bazı belgelerinde, bir CALayer'in dönüşüm özelliğinin arkasındaki matrisin m14, m21, m22 vb. Gibi alanlara sahip olduğunu gördüm. Ayrıca, bir ya da iki ay önce bu alanları açıklayan bir tablo gördüğümü hatırlıyorum. Onu bulmaya çalışırken çok zorlandım. Herkes bir kaynak biliyor mu?Tüm dönüşüm matrisi alanlarının bir açıklamasını nerede bulabilirim?
cevap
Bu yapı aşağıdaki gibidir:
struct CATransform3D
{
CGFloat m11, m12, m13, m14;
CGFloat m21, m22, m23, m24;
CGFloat m31, m32, m33, m34;
CGFloat m41, m42, m43, m44;
};
typedef struct CATransform3D CATransform3D;
Bu sadece bir 4x4 4-vektörler dönüştürmek için kullanılmış matrisi olup. Herhangi bir sayıda doğrusal dönüşümü temsil etmek için kullanılabilir. Bu matris türünde this wikipedia makalesine bakın. Bu elemanların çoğu gerçekten bağımsız olarak yorumlanamaz, ancak bazıları olabilir. Örneğin m41, m42 ve m43, 3-uzayda bir çeviriyi temsil eder. Yani, örneğin, bu matris tarafından bir noktaya çarpma durumunda:
[ 1 0 0 0 ]
[ 0 1 0 0 ]
[ 0 0 1 0 ]
[ 1 2 3 1 ]
Sonra, + X yönünde 1 ile 2 + Y yönünde birimleri ve + Z yönünde 3 bu noktayı çevirecektir. 4üncü elemanı 1. Ayrıca, bu vektör, aslında bir matris kendisi ve bu matrisin biçimi olduğuna dikkat olmak 4 vektör olarak temsil edilmesi gerektiğini
[ 1 0 0 0 ]
[ x y z 1 ] x [ 0 1 0 0 ] = [ x+1 y+2 z+3 1 ]
[ 0 0 1 0 ]
[ 1 2 3 1 ]
Not Ara makalesinde tarif edilenden farklı dönüşüm matrisleri üzerine. Bunun nedeni, bir noktanın genellikle tek bir sütun, 4 satır matrisi ile temsil edilmesidir, ancak Apple bunları 4 sütun, tek satır matrisleri olarak temsil eder. Bu, wikipedia makalesinde gördüğünüz herhangi bir dönüştürme matrisinin, doğru şekilde çalışması için iPhone'da kullanılmadan önce dönüştürülmesi gerektiği anlamına gelir.
Başka bir örnek bir ölçekleme transformudur:
[ 2 0 0 0 ]
[ 0 2 0 0 ]
[ 0 0 2 0 ]
[ 0 0 0 1 ]
Bu olacak çift bütün böylece noktasının koordinatları, (1, 2, 3) olacaktır (2, 4, 6). Döndürmeler ve perspektif projeksiyonları gibi diğer dönüşümler de görünürde daha zordur.
İşte Apple'dan transforms üzerine daha fazla bilgi olduğunu. Bu matrisleri üretmek için Apple tarafından birtakım faydalı dönüşümler sağlanmıştır, bkz. this link. Aslında CATransform3DMakeRotation'ın arkasındaki matematiği tartışmıyorlar, ancak this link bunu yapıyor.
- 1. Radon dönüşüm matrisi temsili
- 2. Afin Dönüşüm Matrisi
- 3. Powershell'de oluşturulabilen tüm COM nesnelerini nerede bulabilirim?
- 4. Tüm giriş alanlarının jQuery
- 5. System.out.println() günlüklerini nerede bulabilirim?
- 6. GACUtil'i nerede bulabilirim?
- 7. Jsdom belgelerini nerede bulabilirim?
- 8. Selenium.Chrome Tüm ChromeOption argümanlarının bir listesini nerede bulabilirim? C#
- 9. OpenCV'de bir noktaya nasıl bir dönüşüm matrisi uygulayabilirim?
- 10. Miracast belirtimini nerede bulabilirim?
- 11. Microsoft.VisualStudio.DebuggerVisualizer'ı nerede bulabilirim?
- 12. javax.validation uygulamasının nerede bulabilirim. *?
- 13. XMLHttpRequest Uygulamasını nerede bulabilirim?
- 14. Statik kaynakları nerede bulabilirim?
- 15. Salatalık bilgilerini nerede bulabilirim?
- 16. 16F877A.h'yi nerede bulabilirim?
- 17. Tüm oyun alanlarının bir listesini alın
- 18. CLI belirtimini nerede bulabilirim?
- 19. Klavye tuş kodlarının bir listesini nerede bulabilirim?
- 20. sbt indirilen kütüphanesini nerede bulabilirim?
- 21. İngilizce kelime öbeklerinin bir listesini nerede bulabilirim?
- 22. Kapsamlı DCOM belgelerini nerede bulabilirim?
- 23. Bir API'yi bir API ile nerede bulabilirim?
- 24. Tüm Hazırda Beklet olaylarının tam (!) Listesini nerede bulabilirim?
- 25. Nesne-c ve kakao için tüm Apple Kılavuzlarını nerede bulabilirim?
- 26. Ruby'de bir sabitin nerede tanımlandığını nasıl bulabilirim?
- 27. İyi bir Robocode öğreticisini nerede bulabilirim?
- 28. Örnek bir PHP MVC uygulamasını nerede bulabilirim?
- 29. İyi bir mwclient girişini nerede bulabilirim?
- 30. Java Standard kütüphanelerinin bir listesini nerede bulabilirim?
Bu harika bir açıklamadır, ancak eksenlerinizi dönüştürdüğünüzü düşünüyorum. X, Y ve Z çeviri değerleri m14, m42 ve m43 değil, m14, m24 ve m34 ile temsil edilir. –
@NickLockwood iyi yakalama, açıklamayı buna göre güncelledim. – Gabe