from typing import Union as TUnion
from typing import List
import math

from openscad_py.point import Point
from openscad_py.object_ import Object


class RotateExtrude(Object):
    """Represents a rotational extrusion of a (2D) object.
    For all points, x>=0 must hold.

    See https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/2D_to_3D_Extrusion
    """

    def __init__(self, angle, child: Object, convexity: int = 10):
        self.angle = angle
        self.child = child
        self.convexity = convexity
        # $fa, $fs, $fn

    def render(self) -> str:
        """Render the object into OpenSCAD code"""
        return f"rotate_extrude(angle={self.angle}, convexity={self.convexity}) {{\n{self.child.render()}\n}}"