6#include <unordered_map>
23 const std::vector<glm::vec3> &
get_xyz()
const;
24 std::vector<glm::vec3> &
get_xyz();
26 void to_csv(
const std::string &filename)
const;
31 void remap(
float zmin = 0.f,
float zmax = 1.f);
42 void set_outlets(
const std::vector<size_t> &outlet_indices);
54 const std::vector<float> &area_acc,
55 const std::vector<float> &erodibility,
60 const std::vector<float> &max_slope);
63 std::vector<float> &acc)
const;
71 const auto &t = traversals.at(outlet);
72 return std::make_pair(t.rbegin(), t.rend());
78 std::vector<glm::vec3> xyz;
79 std::vector<size_t> convex_hull;
80 std::vector<glm::ivec3> triangles;
81 std::vector<std::vector<size_t>> nbrs_indices;
82 std::vector<std::vector<float>> nbrs_distances;
83 float reference_length;
87 std::vector<size_t> receivers;
88 std::vector<size_t> roots;
89 std::vector<std::vector<size_t>> children;
90 std::vector<bool> outlets_mask;
94 std::unordered_map<size_t, std::vector<size_t>> traversals;
98 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:17
void to_csv(const std::string &filename) const
Definition drainage_basin.cpp:533
std::pair< std::vector< size_t >, bool > find_subroots()
Definition drainage_basin.cpp:257
const std::vector< size_t > & get_receivers() const
Definition drainage_basin.cpp:320
auto for_each_downstream(size_t outlet) const
Definition drainage_basin.hpp:69
void compute_receivers()
Definition drainage_basin.cpp:127
std::vector< size_t > get_outlets() const
Definition drainage_basin.cpp:310
float update_elevations(const std::vector< float > &response_times, float uplift_rate, const std::vector< float > &max_slope)
Definition drainage_basin.cpp:564
const std::vector< glm::vec3 > & get_xyz() const
Definition drainage_basin.cpp:325
void accumulate_area_by_outlet(const std::vector< float > &area, std::vector< float > &acc) const
Definition drainage_basin.cpp:109
void remap(float zmin=0.f, float zmax=1.f)
Definition drainage_basin.cpp:335
const std::vector< size_t > & for_each_upstream(size_t outlet) const
Definition drainage_basin.cpp:305
void remove_lakes(const std::vector< size_t > &subroot)
Definition drainage_basin.cpp:364
void smooth_mesh(float lambda, int iterations=1)
Definition drainage_basin.cpp:479
std::vector< float > compute_vertex_areas() const
Definition drainage_basin.cpp:230
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:192
void update_traversals()
Definition drainage_basin.cpp:645
void set_outlets(const std::vector< size_t > &outlet_indices)
Definition drainage_basin.cpp:466
void update_stream_tree()
Definition drainage_basin.cpp:622
std::vector< size_t > compute_strahler_order() const
Definition drainage_basin.cpp:163
size_t size() const
Definition drainage_basin.cpp:474
void smooth_mesh_taubin(float lambda, float mu, int iterations=1)
Definition drainage_basin.cpp:523
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:794
std::vector< size_t > find_border_minima(const std::vector< glm::vec3 > &xyz, float eps=1e-6f)
Definition drainage_basin.cpp:675
std::vector< std::vector< size_t > > invert_receiver_map(const std::vector< size_t > &receivers)
Definition drainage_basin.cpp:822
std::vector< size_t > sample_border_points(const std::vector< glm::vec3 > &xyz, size_t nb)
Definition drainage_basin.cpp:734