NavMap
Loading...
Searching...
No Matches
NavMap.hpp File Reference

Core container and data structures for EasyNav navigable meshes. More...

#include <vector>
#include <memory>
#include <unordered_map>
#include <optional>
#include <string>
#include <array>
#include <limits>
#include <stack>
#include <cmath>
#include <cstdint>
#include <span>
#include <type_traits>
#include <deque>
#include <algorithm>
#include <Eigen/Core>
#include "navmap_core/Geometry.hpp"
Include dependency graph for NavMap.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  BVHNode
 Node in a per-surface bounding volume hierarchy (BVH). More...
 
struct  Colors
 Optional per-vertex colors (RGBA, 8-bit per channel). More...
 
struct  LayerMeta
 Metadata associated to a layer (optional). More...
 
class  LayerRegistry
 Registry of named layers (per-NavCel). More...
 
struct  LayerView< T >
 Typed layer view storing one T value per NavCel. More...
 
struct  LayerViewBase
 Non-templated base for runtime layer handling. More...
 
struct  NavMap::LocateOpts
 Options for the locate functions. More...
 
struct  NavCel
 Navigation cell (triangle) with geometry and adjacency. More...
 
class  NavMap
 Main container for navigable surfaces, geometry, and layers. More...
 
struct  Positions
 Structure-of-arrays for storing 3D vertex positions. More...
 
struct  Ray
 Simple ray (origin + direction). More...
 
struct  RayHit
 Result of a raycast against the NavMap. More...
 
struct  Surface
 A connected set of NavCels in a common reference frame. More...
 

Namespaces

namespace  navmap
 

Typedefs

using NavCelId = uint32_t
 Index of a triangle (NavCel) within the global mesh.
 
using PointId = uint32_t
 Index into the per-vertex position arrays (SoA).
 

Enumerations

enum class  AreaShape { CIRCULAR , RECTANGULAR }
 Shape selector for area-writing APIs. More...
 
enum class  LayerType : uint8_t { U8 = 0 , F32 = 1 , F64 = 2 }
 Runtime type tag for a layer's scalar storage. More...
 

Functions

template<typename T>
constexpr LayerType layer_type_tag ()
 Helper to map C++ scalar type to navmap::LayerType tag.
 
template<>
constexpr LayerType layer_type_tag< double > ()
 
template<>
constexpr LayerType layer_type_tag< float > ()
 
template<>
constexpr LayerType layer_type_tag< uint8_t > ()
 

Detailed Description

Core container and data structures for EasyNav navigable meshes.

This header defines the fundamental types for NavMap:

  • Vertex storage as a structure-of-arrays (SoA) via navmap::Positions.
  • Triangle cells (navmap::NavCel) with cached geometry and adjacency.
  • Surfaces (navmap::Surface) as partitions of triangles with their own BVH.
  • A per-NavCel layer registry (navmap::LayerRegistry) to store arbitrary scalar attributes (occupancy, cost, elevation, etc.).
  • The main navmap::NavMap container, including geometry queries such as raycast, closest-triangle and nav-cell localization.

The API exposes low-level containers while providing convenience utilities for common workflows without sacrificing control.