16#include <unordered_map>
26 const std::vector<glm::vec3> &
get_xyz()
const;
28 void to_csv(
const std::string &filename)
const;
36 void remap(
float zmin = 0.f,
float zmax = 1.f);
47 void set_outlets(
const std::vector<size_t> &outlet_indices);
63 const std::vector<float> &area_acc,
64 const std::vector<float> &erodibility,
69 const std::vector<float> &max_slope);
72 std::vector<float> &acc)
const;
80 const auto &t = traversals.at(outlet);
81 return std::make_pair(t.rbegin(), t.rend());
91 std::vector<size_t> receivers;
92 std::vector<size_t> roots;
93 std::vector<std::vector<size_t>> children;
94 std::vector<bool> outlets_mask;
95 mutable std::vector<size_t> cached_outlets;
96 mutable bool outlets_dirty =
true;
101 std::unordered_map<size_t, std::vector<size_t>> traversals;
105 const size_t invalid_index = size_t(-1);
117 int max_triangles = 0,
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
Definition drainage_basin.hpp:22
std::vector< size_t > & get_outlets() const
Definition drainage_basin.cpp:375
void to_csv(const std::string &filename) const
Definition drainage_basin.cpp:561
std::pair< std::vector< size_t >, bool > find_subroots()
Definition drainage_basin.cpp:272
void invert_receiver_map()
Definition drainage_basin.cpp:399
std::vector< bool > compute_is_ridge_node() const
Definition drainage_basin.cpp:59
const std::vector< size_t > & get_receivers() const
Definition drainage_basin.cpp:389
auto for_each_downstream(size_t outlet) const
Definition drainage_basin.hpp:78
void compute_receivers()
Definition drainage_basin.cpp:81
float update_elevations(const std::vector< float > &response_times, float uplift_rate, const std::vector< float > &max_slope)
Definition drainage_basin.cpp:594
const std::vector< glm::vec3 > & get_xyz() const
Definition drainage_basin.cpp:394
void accumulate_area_by_outlet(const std::vector< float > &area, std::vector< float > &acc) const
Definition drainage_basin.cpp:41
void remap(float zmin=0.f, float zmax=1.f)
Definition drainage_basin.cpp:415
const std::vector< size_t > & for_each_upstream(size_t outlet) const
Definition drainage_basin.cpp:323
void remove_lakes(const std::vector< size_t > &subroot)
Definition drainage_basin.cpp:444
const TerrainTriMesh & get_mesh() const
Definition drainage_basin.cpp:365
std::vector< float > compute_vertex_areas() const
Definition drainage_basin.cpp:245
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:204
void update_traversals()
Definition drainage_basin.cpp:666
void set_outlets(const std::vector< size_t > &outlet_indices)
Definition drainage_basin.cpp:546
void update_stream_tree()
Definition drainage_basin.cpp:657
std::vector< size_t > compute_strahler_order() const
Definition drainage_basin.cpp:175
std::vector< std::vector< size_t > > get_main_channels() const
Definition drainage_basin.cpp:328
size_t size() const
Definition drainage_basin.cpp:556
Definition terrain_tri_mesh.hpp:20
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:871
std::vector< size_t > find_border_minima(const std::vector< glm::vec3 > &xyz, float eps=1e-6f)
Definition drainage_basin.cpp:706
std::vector< size_t > find_border_sinks(TerrainTriMesh &mesh, float eps=1e-6f)
Definition drainage_basin.cpp:765
std::vector< size_t > sample_border_points(const std::vector< glm::vec3 > &xyz, size_t nb)
Definition drainage_basin.cpp:811