示例#1
0
    def update_spinning(self, time_elapsed):
        for dir in self.spinning:
            if (self.spinning[dir]):
                axis, sign = self.vectors[dir]
                angle = self.spin_velocity * time_elapsed * sign

                r = Quaternion.from_axis_angle(axis, angle)

                self.rotation = self.rotation * r

        self.ship_dir = self.rotation * Vector3d(0., 0., -1.)
        self.up_dir = self.rotation * Vector3d(0., 1., 0.)
示例#2
0
    def update_spinning(self, time_elapsed):
        for dir in self.spinning:
            if (self.spinning[dir]):
                axis, sign = self.vectors[dir]
                angle = self.spin_velocity * time_elapsed * sign
                
                r = Quaternion.from_axis_angle(axis, angle)
                
                self.rotation = self.rotation * r

        self.ship_dir = self.rotation * Vector3d(0.,0.,-1.)
        self.up_dir = self.rotation * Vector3d(0.,1.,0.)
示例#3
0
    def update_mouse_track(self, time_elapsed):
        eps = 0.1
        ax, ay = self.angles
        tx, ty = self.mouse_target

        if (fabs(ax - tx) <= eps):
            self.angles[0] = 0.0
            self.mouse_target[0] = 0.0
        else:
            before = sign(tx - ax)
            d = self.spin_velocity * time_elapsed * sign(tx - ax)
            self.angles[0] += d
            after = sign(tx - self.angles[0])

            if (before != after):
                self.angles[0] = 0.0
                self.mouse_target[0] = 0.0

            r = Quaternion.from_axis_angle(Vector3d(0., 1., 0.), d)
            self.rotation = self.rotation * r

        if (fabs(ay - ty) <= eps):
            self.angles[1] = 0.0
            self.mouse_target[1] = 0.0
        else:
            before = sign(ty - ay)
            d = self.spin_velocity * time_elapsed * sign(ty - ay)
            self.angles[1] += d
            after = sign(ty - self.angles[1])

            if (before != after):
                self.angles[1] = 0.0
                self.mouse_target[1] = 0.0

            r = Quaternion.from_axis_angle(Vector3d(1., 0., 0.), d)
            self.rotation = self.rotation * r
示例#4
0
 def update_mouse_track(self, time_elapsed):
     eps = 0.1
     ax, ay = self.angles
     tx, ty = self.mouse_target
     
     if (fabs(ax - tx) <= eps):
         self.angles[0] = 0.0
         self.mouse_target[0] = 0.0
     else:
         before = sign(tx - ax)
         d = self.spin_velocity * time_elapsed * sign(tx - ax)
         self.angles[0] += d
         after = sign(tx - self.angles[0])
         
         if (before != after):
             self.angles[0] = 0.0
             self.mouse_target[0] = 0.0
         
         r = Quaternion.from_axis_angle(Vector3d(0.,1.,0.), d)
         self.rotation = self.rotation * r
         
     if (fabs(ay - ty) <= eps):
         self.angles[1] = 0.0
         self.mouse_target[1] = 0.0
     else:
         before = sign(ty - ay)
         d = self.spin_velocity * time_elapsed * sign(ty - ay)
         self.angles[1] += d
         after = sign(ty - self.angles[1])
         
         if (before != after):
             self.angles[1] = 0.0
             self.mouse_target[1] = 0.0
         
         r = Quaternion.from_axis_angle(Vector3d(1.,0.,0.), d)
         self.rotation = self.rotation * r