struct geode::SolidPath

#include <path_finder.h>

struct SolidPath
{
    // fields

    static constexpr std::array<geode::Position, 3> vertex_position {             { geode::Position::vertex0, geode::Position::vertex1,                 geode::Position::vertex2 }         };
    static constexpr std::array<geode::Position, 3> edge_position {             { geode::Position::edge0, geode::Position::edge1,                 geode::Position::edge2 }         };
    Position position { Position::outside };
    PolyhedronFacet facet;
    index_t vertex_id { NO_ID };

    // construction

    SolidPath(
        const TetrahedralSolid3D& solid,
        PolyhedronFacet facet_in,
        Position position_in
        );

    SolidPath(index_t vertex_in);
    SolidPath();

    // methods

    bool is_vertex() const;
    bool is_facet_vertex() const;
    bool is_edge() const;
    bool is_facet() const;
    bool are_same_paths(const TetrahedralSolid3D& solid, const SolidPath& other) const;
    geode::Position get_vertex_position(geode::local_index_t vertex) const;
    geode::Position get_edge_position(geode::local_index_t edge) const;
    geode::local_index_t get_edge_index() const;
    geode::local_index_t get_vertex_index() const;
    geode::local_index_t get_edge_vertex_id(geode::local_index_t vertex) const;
};