from .geometry.spheres import circle_to_halfedge, sphere_to_icosphere
from .nets import discrete_net_to_halfedge, discrete_domain_to_halfedge
from ddg.geometry.spheres import Sphere
from ddg.datastructures.nets.net import (DiscreteNet, DiscreteDomain, EmptyNet,
EmptyDomain, PointNet, NetCollection)
[docs]def to_halfedge(object_, **kwargs):
"""
Converts an object to a primitive halfedge surface
depending to its type.
"""
if isinstance(object_, Sphere):
if object_.is_circle():
return circle_to_halfedge(object_, **kwargs)
else:
return sphere_to_icosphere(object_, **kwargs)
elif isinstance(object_, (DiscreteNet, EmptyNet, PointNet, NetCollection)):
return discrete_net_to_halfedge(object_, **kwargs)
elif isinstance(object_, (DiscreteDomain, EmptyDomain)):
return discrete_domain_to_halfedge(object_, **kwargs)
else:
raise TypeError(f"Object of type {type(object_)} could not be "
f"converted to halfedge.")