2011-06-22 28 views
7

, GLScene'da yerel yönelim etrafında dönme için üç parametre (RollAngle, PitchAngle ve TurnAngle) var. Aşağıdaki resimde, global yönelim (turuncu eksen) etrafında küpü nasıl döndürebilirim?Küresel Rotasyon

enter image description here

+3

Bu gibi bir ekran görüntüsü ile bana soru dışında cevap vermekten başka seçeneğim yok :) –

+0

'@Wouter van Nifterick', üzgünüm, seni anlamıyorum, ne demek istiyorsun? – Ata

+0

GLScene nedir? Normalde glRotatef (açı, rot_axis.x, rot_axis.y, rot_axis.z) veya bazı eşdeğer dönüşümler diyorum. – datenwolf

cevap

3

Belki de "DummyCube" nesnesini bir üst öğe olarak kullanabilirsiniz. Daha sonra küpü önce kukla küpün içinde ve ardından DummyCube'da döndürebilirsiniz.

+0

Gelişmiş teşekkürler. Evet, tamamen haklısınız. – Ata

7

Sen Euler açıları için eksen açısı dönüşünü dönüştürmek gerekir.
http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToEuler/index.htm

Makaleden::

yaw = atan2(y * sin(angle)- x * z * (1 - cos(angle)) 
       , 1 - (y2 + z2) * (1 - cos(angle))) 

pitch = asin(x * y * (1 - cos(angle)) + z * sin(angle)) 

roll = atan2(x * sin(angle)-y * z * (1 - cos(angle)) 
      , 1 - (x2 + z2) * (1 - cos(angle))) 

DÜZENLEME: değişkenler zift, sapma, rulo adlandırma kuralı ile tutarlı olması için yeniden adlandırıldı Burada kodla bazı ayrıntılı olarak bu süreci açıklayan bir bağlantıdır.

+0

@ Mikola, önerilen web sitenizi kontrol ettim. Bence aşağıdaki kod şu anlama gelir: 'heading = atan2 (y * sin (açı) - x * z * (1 - cos (açı)), 1 - (y2 + z2) * (1 - cos (angle))) --- --- 'tutum = asin (x * y * (1 - cos (açı)) + z * sin (açı)) --- --- ' banka = atan2 (x * sin (açı) -y * z * (1 - cos (açı)), 1 - (x2 + z2) * (1 - cos (açı))) – Ata

+0

Bu kodu açıklayabilir misiniz? – Ata

+2

3d Geometri'ye hoş geldiniz. –

1

Bu kirli bir aldatmacadır, ancak nesne kaynak noktasında (0,0,0) ise ve sahnede yalnızca bir nesne varsa, kamerayı (ve ışık kaynağını) nesnenin etrafında döndürmek yerine nesneyi döndürme.

+0

Bildiğim kadarıyla, bazı dönüşümler kullanmalıyız yerel yönelim ve küresel yönelim arasında. Evet haklısın. Ancak, global yönelim etrafında nesneyi döndürmek için matematiksel algoritmayı nasıl kullanabileceğimi bilmek istiyorum. Bence Euler açılarını kullanmalıyım. ama nasıl ... – Ata