예제 #1
0
 def _image(self, func):
     if isinstance(func, EuclideanTransformation):
         radius = self.radius
         direction = simplify(qrotate(func.rquat, func.parity*self.direction))
         center = simplify(qrotate(func.rquat, func.parity*self.center))
         center = simplify(center + func.tvec - project(func.tvec, direction))
         closed = self.closed
         return InfiniteCylinder(
             radius=radius,
             center=center,
             direction=direction,
             closed=closed,
             normalization=False)
예제 #2
0
 def _image(self, func):
     if isinstance(func, EuclideanTransformation):
         func = self.func
         center = func.call(*self.center)
         direction = simplify(qrotate(func.rquat, func.parity*self.direction))
         return Revolution(
             func=func,
             center=center,
             direction=direction,
             normalization=False)
예제 #3
0
 def _image(self, func):
     if isinstance(func, EuclideanTransformation):
         direction = simplify(qrotate(func.rquat, func.parity*self.direction))
         offset = simplify(self.offset + dot(func.tvec, direction))
         closed = self.closed
         return Halfspace(
             offset=offset,
             direction=direction,
             closed=closed,
             normalization=False)
예제 #4
0
 def _image(self, func):
     if isinstance(func, EuclideanTransformation):
         slope = self.slope
         center = func.call(*self.center)
         direction = simplify(qrotate(func.rquat, func.parity*self.direction))
         closed = self.closed
         return SemiInfiniteCone(
             slope=slope,
             center=center,
             direction=direction,
             closed=closed,
             normalization=False)
예제 #5
0
 def _image(self, func):
     if isinstance(func, EuclideanTransformation):
         radius = self.radius
         height = self.height
         center = func.call(*self.center)
         direction = simplify(qrotate(func.rquat, func.parity*self.direction))
         closed = self.closed
         return Cone(
             radius=radius,
             height=height,
             center=center,
             direction=direction,
             closed=closed,
             normalization=False)