6#include <unordered_map>
22 const std::vector<glm::vec3> &
get_xyz()
const;
24 void to_csv(
const std::string &filename)
const;
32 void remap(
float zmin = 0.f,
float zmax = 1.f);
43 void set_outlets(
const std::vector<size_t> &outlet_indices);
57 const std::vector<float> &area_acc,
58 const std::vector<float> &erodibility,
63 const std::vector<float> &max_slope);
66 std::vector<float> &acc)
const;
74 const auto &t = traversals.at(outlet);
75 return std::make_pair(t.rbegin(), t.rend());
85 std::vector<size_t> receivers;
86 std::vector<size_t> roots;
87 std::vector<std::vector<size_t>> children;
88 std::vector<bool> outlets_mask;
92 std::unordered_map<size_t, std::vector<size_t>> traversals;
96 const size_t invalid_index = size_t(-1);
108 int max_triangles = 0,
112 const std::vector<size_t> &receivers);
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
Definition drainage_basin.hpp:18
void to_csv(const std::string &filename) const
Definition drainage_basin.cpp:519
std::pair< std::vector< size_t >, bool > find_subroots()
Definition drainage_basin.cpp:254
std::vector< bool > compute_is_ridge_node() const
Definition drainage_basin.cpp:52
const std::vector< size_t > & get_receivers() const
Definition drainage_basin.cpp:364
auto for_each_downstream(size_t outlet) const
Definition drainage_basin.hpp:72
void compute_receivers()
Definition drainage_basin.cpp:74
std::vector< size_t > get_outlets() const
Definition drainage_basin.cpp:354
float update_elevations(const std::vector< float > &response_times, float uplift_rate, const std::vector< float > &max_slope)
Definition drainage_basin.cpp:552
const std::vector< glm::vec3 > & get_xyz() const
Definition drainage_basin.cpp:369
void accumulate_area_by_outlet(const std::vector< float > &area, std::vector< float > &acc) const
Definition drainage_basin.cpp:34
void remap(float zmin=0.f, float zmax=1.f)
Definition drainage_basin.cpp:374
const std::vector< size_t > & for_each_upstream(size_t outlet) const
Definition drainage_basin.cpp:302
void remove_lakes(const std::vector< size_t > &subroot)
Definition drainage_basin.cpp:403
const TerrainTriMesh & get_mesh() const
Definition drainage_basin.cpp:344
std::vector< float > compute_vertex_areas() const
Definition drainage_basin.cpp:227
std::vector< float > compute_response_times(const std::vector< float > &area_acc, const std::vector< float > &erodibility, float m_exp) const
Definition drainage_basin.cpp:186
void update_traversals()
Definition drainage_basin.cpp:622
void set_outlets(const std::vector< size_t > &outlet_indices)
Definition drainage_basin.cpp:506
void update_stream_tree()
Definition drainage_basin.cpp:613
std::vector< size_t > compute_strahler_order() const
Definition drainage_basin.cpp:157
std::vector< std::vector< size_t > > get_main_channels() const
Definition drainage_basin.cpp:307
size_t size() const
Definition drainage_basin.cpp:514
Definition terrain_tri_mesh.hpp:19
Definition algebra.hpp:23
std::vector< glm::vec3 > heightmap_retopology(const Array &z, float max_error, int max_triangles=0, int max_points=0)
Definition drainage_basin.cpp:817
std::vector< size_t > find_border_minima(const std::vector< glm::vec3 > &xyz, float eps=1e-6f)
Definition drainage_basin.cpp:652
std::vector< std::vector< size_t > > invert_receiver_map(const std::vector< size_t > &receivers)
Definition drainage_basin.cpp:845
std::vector< size_t > find_border_sinks(TerrainTriMesh &mesh, float eps=1e-6f)
Definition drainage_basin.cpp:711
std::vector< size_t > sample_border_points(const std::vector< glm::vec3 > &xyz, size_t nb)
Definition drainage_basin.cpp:757