Example #1
0
 def test_euler_equivalence(self):
     eulers = euler.create_from_x_rotation(np.pi / 2.)
     m = Matrix33.from_x_rotation(np.pi / 2.)
     q = Quaternion.from_x_rotation(np.pi / 2.)
     qm = Matrix33.from_quaternion(q)
     em = Matrix33.from_eulers(eulers)
     self.assertTrue(np.allclose(qm, m))
     self.assertTrue(np.allclose(qm, em))
     self.assertTrue(np.allclose(m, em))
Example #2
0
 def test_euler_equivalence(self):
     eulers = euler.create_from_x_rotation(np.pi / 2.)
     m = Matrix33.from_x_rotation(np.pi / 2.)
     q = Quaternion.from_x_rotation(np.pi / 2.)
     qm = Matrix33.from_quaternion(q)
     em = Matrix33.from_eulers(eulers)
     self.assertTrue(np.allclose(qm, m))
     self.assertTrue(np.allclose(qm, em))
     self.assertTrue(np.allclose(m, em))
Example #3
0
    def drag_camera(self):
        if not imgui.is_any_item_active():
            mx, my = imgui.get_mouse_drag_delta()
        else:
            mx, my = 0, 0

        # if we just released the mouse, save the new camera position
        if self.camera['mouse_down'] and not self.io.mouse_down[0]:
            self.camera['saved_center'] = self.camera['center']
        self.camera['mouse_down'] = self.io.mouse_down[0]

        # no drag, don't do anything
        if mx == 0 and my == 0:
            return False

        # calculate the camera position according to the current drag
        # this is a rotation relative to the saved position
        self.camera['center'] = Matrix33.from_y_rotation(self.camera['rot_speed'] * mx / self.width) \
            * Matrix33.from_x_rotation(self.camera['rot_speed'] * my / self.height) \
            * self.camera['saved_center']
        self.update_camera()

        # camera has changed
        return True