2016-10-25 5 views
0

Vispyを使って3次元(ロール、ピッチ、ヨー)でキューブをどのように回転させますか?Vispyを使用して3次元でキューブを回転する方法

キューブを2つの次元で回転させる例がありますがhereですが、3次元で回転させる方法はわかりません。

私はon_timer()メソッドを変更する必要があると思います。

def on_timer(self, event): 
    self.theta += .5 
    self.phi += .5 
    self.model = np.dot(rotate(self.theta, (0, 1, 0)), 
         rotate(self.phi, (0, 0, 1))) 
    self.program['u_model'] = self.model 
    self.update() 

:私からそれを変更しようとした

def on_timer(self, event): 
    self.gamma += .5 
    self.theta += .5 
    self.phi += .5 
    self.model = np.dot(
     rotate(self.gamma, (1, 0, 0)), 
     np.dot(rotate(self.theta, (0, 1, 0)), 
         rotate(self.phi, (0, 0, 1))), 
    ) 
    self.program['u_model'] = self.model 
    self.update() 

だけ三次元が二を複製するために思われます。私は間違って何をしていますか?

答えて

0

ガンマ、シータ、およびphiを増やす代わりに、同じコードを実行しますが、3つの変数のうちの1つだけを増やします。 3つの変数のそれぞれについて繰り返します。実際には、新しいコードを使用して3つの異なる次元で同時に回転していることがわかります。多分それはあなたが思ったように見えませんか?または、キューブの視点から見て変わると思っていたかもしれませんが、実際にはカメラの視点から座標変換を行っていますか?

また、より簡単な開始場所は、scene cube example: https://github.com/vispy/vispy/blob/master/examples/basics/scene/cube.pyです。実際には、下位レベルのOpenGL APIレイヤーを理解している場合を除きます。

関連する問題