Beispiel #1
0
 def reset(self):
     is_2d_array(self.original_position)
     self.transform.position = self.original_position
     self.transform._prev_position = self.original_position
     self.velocity = None if self.velocity is None else np.array([0, 0])
     self._prev_velocity = self.velocity
     self.force = None if self.force is None else np.array([0, 0])
     self.shape.update()
 def is_point_in_shape(self, point: np.ndarray) -> bool:
     is_2d_array(point)
     number_of_edges = self.points.shape[0]
     a = self.points[0]
     for i in range(number_of_edges - 2):
         b = self.points[i + 1]
         c = self.points[i + 2]
         if self._point_in_triangle(point, a, b, c):
             return True
     return False
Beispiel #3
0
 def __init__(self,
              shape: Shape,
              material: Material,
              mass: int,
              velocity: np.ndarray = None,
              force: np.ndarray = None,
              name="None"):
     super().__init__()
     assert isinstance(shape, Shape)
     self.shape = shape
     self.transform: Transform = self.shape.transform
     assert isinstance(material, Material)
     self.material = material
     assert type(mass) is int
     self.mass = mass
     self.velocity = is_2d_array(velocity, True)
     self._prev_velocity = self.velocity
     self.force = is_2d_array(force, True)
     assert type(name) is str
     self.name = name
Beispiel #4
0
 def is_point_in_shape(self, point: np.ndarray) -> bool:
     is_2d_array(point)
     vector = point - self.transform.position
     return 0 <= vector[0] <= self.width and 0 <= vector[1] <= self.height
Beispiel #5
0
 def __init__(self, position: np.ndarray, rotation: float = 0.0):
     self.position = is_2d_array(position)
     self._prev_position = self.position
     assert type(rotation) is float
     assert -math.pi <= rotation <= math.pi
     self.rotation = rotation
Beispiel #6
0
 def update(self, position):
     is_2d_array(position)
     self._prev_position = self.position
     self.position = position
Beispiel #7
0
 def is_point_in_shape(self, point: np.ndarray) -> bool:
     is_2d_array(point)
     dist = np.linalg.norm(point - self.transform.position)
     return dist <= self.r