SORU
4 Mart 2013, PAZARTESİ


rotate3d steno

Nasıl steno rotateX(50deg) rotateY(20deg) rotateZ(15deg) birleştirmek rotate3d()?

CEVAP
4 Mart 2013, PAZARTESİ


rotateX(50deg) rotate3d(1, 0, 0, 50deg) eşdeğerdir

rotateY(20deg) rotate3d(0, 1, 0, 20deg) eşdeğerdir

rotateZ(15deg) rotate3d(0, 0, 1, 15deg) eşdeğerdir

Yani...

rotateX(50deg) rotateY(20deg) rotateZ(15deg)

olur denk

rotate3d(1, 0, 0, 50deg) rotate3d(0, 1, 0, 20deg) rotate3d(0, 0, 1, 15deg)


rotate3d(x, y, z, α) Bir jenerik için matris var

generic rotate matrix

nerede

explanation


Şimdi 3 rotate3d her matris dönüşümleri ve bunları çarpın. Ve sonuç matrisinin matris rotate3d elde edilen tek karşılık. Kolay değil emin olun bundan nasıl rotate3d değerleri ayıklamak için, ama emin kolay matrix3d bir tek bunları ayıklamak için.


İlk durumda (rotateX(50deg) rotate3d(1, 0, 0, 50deg)), varsa:

**, , *, *21y = 0*20 18*

Bu durumda matrisin ilk satırı yani 1 0 0 0.

İkincisi 0 cos(50deg) -sin(50deg) 0.

Üçüncüsü 24**.

Ve dördüncüsü belli ki 0 0 0 1.


İkinci durumda, *, , *, *29y = 1*28 26**var.

İlk satır: cos(20deg) 0 sin(20deg) 0.

İkinci satır: 0 1 0 0.

Üçüncü sıra: -sin(20) 0 cos(20deg) 0.

Dördüncü: 0 0 0 1


Üçüncü durumda, *, , *, *37y = 0*36 34**var.

İlk satır: cos(15deg) -sin(15deg) 0 0.

İkinci satır sin(15deg) cos(15deg) 0 0.

Ve üçüncü ve dördüncü satırda, sırasıyla 0 0 1 0 0 0 0 1.


Not: rotateY için günah değerlerin işaretleri dönüşümü diğer iki dönüşüm için daha farklı. fark etmişsinizdir Hesaplama bir hata değil. Bunun nedeni, ekran için, y ekseni Yukarı değil, aşağı işaret ettik.


Bu rotate3d elde edilen tek 4x4 matris dönüşümü için çarpmak gerekir 4x4 üç matrisleri. Olarak söyledim, emin değilim ne kadar kolay olabilir almak için 4 değer, ama 16 parçalar, 4x4 matris tam olarak 16 parametreleri matrix3d eşdeğer zincirleme bir dönüşüm.


EDİT:

Aslında oldukça kolay... Sen matrisinin izini (köşegen elemanları toplamı) hesaplamak rotate3d matris için çıkıyor.

4 - 2rotate3d()(1 - cos(α))/2 = 4 - 2*(1 - cos(α)) = 2 2*cos(α)

Daha sonra 4x4 üç matrislerin Ürün için izleme hesaplamak, 2 2*cos(α) ile sonucu karşılaştırın α ayıklayın. Sonra, *, z*52 51**hesaplama.

Eğer doğru hesapladım eğer bu özel durumda, matris izi 4x4 üç matrislerin çarpımı sonucu olacak:

T = 
cos(20deg)*cos(15deg)   
cos(50deg)*cos(15deg) - sin(50deg)*sin(20deg)*cos(15deg)   
cos(50deg)*cos(20deg)   
1

Yani α = acos(T/2 - 1) anlamına gelen cos(α) = (T - 2)/2 = T/2 - 1,.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • We've moved!

    We've moved!

    7 Ocak 2008
  • Peyton

    Peyton

    28 Aralık 2008