Beispiel #1
0
 def computeMotion(self):
     """Find the motion of a planet with its distance and its mass."""
     angle = random.uniform(0, 2 * math.pi)
     norm = self.distance
     position = Vector.createFromPolar(norm, angle)
     angle = (angle + math.pi / 2) % (2 * math.pi)
     norm = self.speed  # in m/s-1
     velocity = Vector.createFromPolar(norm, angle)
     acceleration = Vector.null()
     return Motion(position, velocity, acceleration)
Beispiel #2
0
 def __call__(self, position, velocity, born):
     """Return a missile with the same motion."""
     s = SegmentAnatomy.createFromTuples((0, 0), (1, 0))
     s.angle = velocity.angle
     m = Motion(copy.deepcopy(position), copy.deepcopy(velocity))
     m.position += Vector.createFromPolar(born + 1, velocity.angle)
     m.velocity.norm += self.speed
     self.shooting = False
     return [self.type(s, [m], damage=self.damage, duration=self.duration)]
Beispiel #3
0
 def show(self, context, point=Point(0, 0), angle=0):
     """Show the moment."""
     if len(self) >= 1:
         mp = self.position
         v = Vector.createFromPolar(mp.norm, angle)
         v.color = mp.color
         v.show(context, point)
     if len(self) >= 2:
         angle += math.pi / 2
         mv = self.velocity
         v = Vector.createFromPolar(mv.norm, angle)
         v.color = mv.color
         v.show(context, point)
     if len(self) >= 3:
         angle += math.pi / 2
         ma = self.acceleration
         a = Vector.createFromPolar(ma.norm, angle)
         a.color = ma.color
         a.show(context, point)
 def shoot(self):
     """Return a missile with the same motion."""
     shooted = []
     for i in range(self.n):
         anatomy = SegmentAnatomy.createFromTuples((0, 0), (1, 0))
         angle = self.shooting_view * i / self.n
         anatomy.rotate(self.velocity.angle + angle)
         m = Motion(copy.deepcopy(self.position),
                    copy.deepcopy(self.velocity))
         m.position += Vector.createFromPolar(self.born + 1,
                                              m.velocity.angle)
         m.velocity.norm += self.shooting_speed
         shooted.append(SegmentMissile(a, m))
     return shooted
Beispiel #5
0
 def __call__(self, position, velocity, born):
     """Return a missile with the same motion."""
     self.shooting = False
     shooted = []
     for i in range(self.n):
         s = SegmentAnatomy.createFromTuples((0, 0), (1, 0))
         s.angle = velocity.angle
         angle = self.view * i / self.n
         s.rotate(velocity.angle + angle)
         m = Motion(copy.deepcopy(position), copy.deepcopy(velocity))
         m.position += Vector.createFromPolar(born + 1, m.velocity.angle)
         m.velocity.norm += self.speed
         shooted.append(self.type(s, [m]))
     return shooted
Beispiel #6
0
 def getVector(self):
     """Return the vector associated with the rotation of the particle."""
     angle = self.angle[0]
     angle %= (2 * math.pi)
     return Vector.createFromPolar(1, angle)