Source code for ddg.conversion.halfedge.core

from ddg.geometry import euclidean_models
from ddg.geometry.spheres import SphereLike
from ddg.nets import (
    DiscreteDomain,
    DiscreteNet,
    EmptyDomain,
    EmptyNet,
    NetCollection,
    PointNet,
)

from .geometry.spheres import circle_to_halfedge, sphere_to_icosphere
from .nets import discrete_domain_to_halfedge, discrete_net_to_halfedge


[docs]def to_halfedge(object_, **kwargs): """ Converts an object to a primitive halfedge surface depending to its type. """ if isinstance(object_, SphereLike): if isinstance(object_.geometry, euclidean_models.ProjectiveModel): 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 converted to halfedge." )