예제 #1
0
    def __init__(self, pos1, pos2):
        pos1 = np.array(pos1)
        pos2 = np.array(pos2)
        if 0 in (pos1 - pos2):
            n = normalize(pos1 - pos2)
            self.normal = np.array([1, 1, 1]) - np.divide(n, n, where=n != 0)

            self.max = np.maximum(pos1, pos2)
            self.min = np.minimum(pos1, pos2)
        else:
            raise ParameterException(
                "Points not in the same axis-aligned plane.")
예제 #2
0
 def get_collision_tangent(self):
     vel_relative = self.get_relative_velocity()
     return vect.normalize(vel_relative - self.get_normal_velocity())
예제 #3
0
 def get_collision_tangent(self):
     return vect.normalize(self.p.vel - self.get_normal_velocity())
예제 #4
0
 def get_collision_normal(self):
     return vect.normalize(self.p2.pos - self.p1.pos)
예제 #5
0
 def get_collision_normal(self):
     return vect.normalize(
         np.dot(self.p.pos - self.wall.max, self.wall.normal) *
         self.wall.normal)