Ejemplo n.º 1
0
 def intersection(self, ray_origin, ray_dir):
     v = [Point(*self.matrix.transform(v)).numpy() for v in self.m]
     I = zpr.ray_triangle(ray_origin, ray_dir, (v[0], v[1], v[2]))
     if (I is None) and (len(v) > 3):
         I = zpr.ray_triangle(ray_origin, ray_dir, (v[2], v[3], v[0]))
     if I is None:
         return ()
     return ((Point(*I), self),)
Ejemplo n.º 2
0
 def pick(self, ray):
     for triangle in self.triangles:
         I = zpr.ray_triangle(ray[0], ray[1], triangle)
         if I is not None:
             x, y, z = I
             assert z == 0
             return Point(x, y)