2009-05-22 13 views
5

3B uygulamasında nesnenin konumunu bir vektörde saklıyorum ve bir kuaternionda orijin etrafında dönüyor. Nesneyi rasgele bir kökene sahip bir vektörün etrafında döndürmem gerekiyor. Pozisyonu - vectorOrigin ve rotasyonu matrise döndürerek matrisin döndürülmesini ve sonra pozisyonu ve rotasyonu bir vektör olarak ve sonuçta oluşan matristen bir kuaterniyon olarak çıkarmayı denedim. Pozisyon tamam, ama rotasyon sabit kalır (nesne verilen vektör etrafında döner, ancak her zaman aynı yöne bakar).Nesneleri quaternions kullanarak bir nokta etrafında nasıl döndürürün?

Benim yöntemim yanlış mı yoksa bir hatam var mı?

cevap

7

Rotasyonun neden değişmesini beklediğinizden emin değilim. Başlangıç ​​noktasını, hedef noktayı ve dönüşü temsil eden programatik "yaratıklar" var. Hedef noktayı diğer iki "yaratık" a göre hesaplamak onları etkilememelidir.

Her zamanki yaklaşımdan ne haber? Eğer noktayı (a, b, c) etrafındaki (x, y, z) konumunu döndürmeniz gerekiyorsa, önce konumu, dönüşün orijinin etrafında olacak şekilde çevirin: konum (xa, yb, zc) pozisyon olarak , yeni çevirilen pozisyonu (x'-a, y'-b, z'-c) almak için her zamanki gibi kökeni döndürün ve geri çevirip yeni pozisyonunuzu alın (x ', y', z ').

+0

Yaptığım şey buydu. Nesne, rastgele bir kökene sahip bir vektör etrafında hareket eder, ancak her zaman aynı yöne bakar. Vektörlerin kökeni ile yüzleşmeliyim. Algoritmamı açıklığa kavuşturmak için soruyu düzenledim. – user17544

+0

Eğer doğru anlıyorsam, bahsettiğinize paralel bir vektörün etrafında başka bir rotasyon eklemeniz gerekir, ancak bu nesnenin * merkezinden * geçer. –

+0

Haklısınız. Nesneyi merkez etrafında döndürerek ve ardından nesneyi verilen vektörün etrafında döndürerek çözdüm. – user17544

1

Kuaterniyonlara aşina değilim, belki de bu tamamen dışsaldır, ancak bir noktanın etrafında bir 3 boyutlu nesneyi döndüremezsiniz, dönme ekseni bir çizgi olmalıdır.

+0

Tamamen konu dışı ve iyi bir nokta değil ... –

+0

Fuar noktası. Ben rasgele bir kökeni olan bir vektör etrafında dönmeyi kastetmiştim. Soruyu düzenledim. – user17544

İlgili konular