HighMap library (C++)
Loading...
Searching...
No Matches
curvature.hpp
Go to the documentation of this file.
1/* Copyright (c) 2023 Otto Link. Distributed under the terms of the GNU General
2 Public License. The full license is in the file LICENSE, distributed with
3 this software. */
4
12#pragma once
13
14#include "highmap/array.hpp"
15
16namespace hmap
17{
18
37Array accumulation_curvature(const Array &z, int ir);
38
60Array curvature_gaussian(const Array &z);
61
74Array curvature_horizontal_cross_sectional(const Array &z, int ir);
75
88Array curvature_horizontal_plan(const Array &z, int ir);
89
102Array curvature_horizontal_tangential(const Array &z, int ir);
103
124Array curvature_mean(const Array &z);
125
142Array curvature_ring(const Array &z, int ir);
143
162Array curvature_rotor(const Array &z, int ir);
163
176Array curvature_vertical_longitudinal(const Array &z, int ir);
177
190Array curvature_vertical_profile(const Array &z, int ir);
191
216Array shape_index(const Array &z, int ir);
217
243Array unsphericity(const Array &z, int ir);
244
245// helpers
246
247// Notation taken from Florinsky, I. (2016). Digital terrain analysis in soil
248// science and geology. Academic Press. p = dz/dx, q = dz/dy, r = d2z/dx2, s =
249// d2z/dxdy, t = d2z/dy2.
250void compute_curvature_gradients(const Array &z,
251 Array &p,
252 Array &q,
253 Array &r,
254 Array &s,
255 Array &t);
256
257Array compute_curvature_h(const Array &r, const Array &t);
258
259Array compute_curvature_k(const Array &p,
260 const Array &q,
261 const Array &r,
262 const Array &s,
263 const Array &t);
264
265} // namespace hmap
266
267namespace hmap::gpu
268{
269
271Array accumulation_curvature(const Array &z, int ir);
272
274Array curvature_horizontal_cross_sectional(const Array &z, int ir);
275
277Array curvature_horizontal_plan(const Array &z, int ir);
278
280Array curvature_horizontal_tangential(const Array &z, int ir);
281
283Array curvature_ring(const Array &z, int ir);
284
286Array curvature_rotor(const Array &z, int ir);
287
289Array curvature_vertical_longitudinal(const Array &z, int ir);
290
292Array curvature_vertical_profile(const Array &z, int ir);
293
295Array shape_index(const Array &z, int ir);
296
298Array unsphericity(const Array &z, int ir);
299
300} // namespace hmap::gpu
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
Definition blending.hpp:151
Array unsphericity(const Array &z, int ir)
See hmap::unsphericity.
Definition curvature_gpu.cpp:111
Array shape_index(const Array &z, int ir)
See hmap::shape_index.
Definition curvature_gpu.cpp:100
Array curvature_horizontal_plan(const Array &z, int ir)
See hmap::curvature_horizontal_plan.
Definition curvature_gpu.cpp:34
Array curvature_rotor(const Array &z, int ir)
See hmap::curvature_rotor.
Definition curvature_gpu.cpp:67
Array curvature_horizontal_tangential(const Array &z, int ir)
See hmap::curvature_horizontal_tangential.
Definition curvature_gpu.cpp:45
Array curvature_ring(const Array &z, int ir)
See hmap::curvature_ring.
Definition curvature_gpu.cpp:56
Array curvature_vertical_profile(const Array &z, int ir)
See hmap::curvature_vertical_profile.
Definition curvature_gpu.cpp:89
Array accumulation_curvature(const Array &z, int ir)
See hmap::accumulation_curvature.
Definition curvature_gpu.cpp:12
Array curvature_vertical_longitudinal(const Array &z, int ir)
See hmap::curvature_vertical_longitudinal.
Definition curvature_gpu.cpp:78
Array curvature_horizontal_cross_sectional(const Array &z, int ir)
See hmap::curvature_horizontal_cross_sectional.
Definition curvature_gpu.cpp:23
Definition algebra.hpp:28
Array curvature_mean(const Array &z)
Computes the mean curvature of a heightmap, indicating the average curvature at each point on the sur...
Definition curvature.cpp:88
Array curvature_horizontal_plan(const Array &z, int ir)
TODO.
Definition curvature.cpp:56
Array compute_curvature_h(const Array &r, const Array &t)
Definition curvature.cpp:235
Array accumulation_curvature(const Array &z, int ir)
Computes the accumulation curvature of a heightmap. Acumulation curvature is a measure of the extent ...
Definition curvature.cpp:12
Array shape_index(const Array &z, int ir)
Computes the Shape Index (SI) of the terrain, quantifying landform complexity based on curvature....
Definition curvature.cpp:161
Array unsphericity(const Array &z, int ir)
Calculates the unsphericity of a surface, indicating how much the terrain deviates from a perfect sph...
Definition curvature.cpp:186
Array curvature_horizontal_tangential(const Array &z, int ir)
TODO.
Definition curvature.cpp:72
Array curvature_vertical_longitudinal(const Array &z, int ir)
TODO.
Definition curvature.cpp:130
Array curvature_rotor(const Array &z, int ir)
Rotor curvature, also called flow line curvature, describes how the curvature of a terrain surface in...
Definition curvature.cpp:112
Array curvature_vertical_profile(const Array &z, int ir)
TODO.
Definition curvature.cpp:145
Array curvature_ring(const Array &z, int ir)
Ring curvature is a second-order derivative of the elevation surface. It describes how the surface be...
Definition curvature.cpp:95
Array curvature_gaussian(const Array &z)
Calculates the Gaussian curvature of a heightmap, providing insights into the surface's intrinsic cur...
Definition curvature.cpp:34
void compute_curvature_gradients(const Array &z, Array &p, Array &q, Array &r, Array &s, Array &t)
Definition curvature.cpp:210
Array curvature_horizontal_cross_sectional(const Array &z, int ir)
TODO.
Definition curvature.cpp:41
Array compute_curvature_k(const Array &p, const Array &q, const Array &r, const Array &s, const Array &t)
Definition curvature.cpp:240