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.)
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.)
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
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