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)
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)
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)
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)
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)