class geode::SectionGeometricModifier

#include <section_geometric_modifier.h>

class SectionGeometricModifier
{
public:
    // construction

    SectionGeometricModifier(Section& section);

    // methods

    SectionCollapsePolygonEdgeInfo collapse_edge(
        const Surface2D& surface,
        const PolygonEdge& edge,
        const Point2D& point
        );

    SectionCollapsePolygonEdgeInfo collapse_edge(
        const Line2D& line,
        index_t edge,
        const Point2D& point
        );

    SectionSplitPolygonEdgeInfo split_edge(
        const Surface2D& surface,
        const PolygonEdge& edge,
        const Point2D& point
        );

    SectionSplitPolygonEdgeInfo split_edge(
        const Line2D& line,
        index_t edge,
        const Point2D& point
        );

    void move_point(index_t unique_vertex, const Point2D& point);
    void translate_point(index_t unique_vertex, const Vector2D& translation);
    void rescale_point(index_t unique_vertex, double scale);
    bool is_edge_active(const Line2D& line, index_t edge) const;
    bool is_triangle_active(const Surface2D& surface, index_t triangle) const;
    void clean();
    void clean_triangles_surfaces();
    void clean_vertices_surfaces();
    void clean_edges_lines();
    void clean_vertices_lines();
    void clean_unique_vertices();
};