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
225Array level_set_curvature(const Array &array, int prefilter_ir);
226
252Array unsphericity(const Array &z, int ir);
253
254// helpers
255
256// Notation taken from Florinsky, I. (2016). Digital terrain analysis in soil
257// science and geology. Academic Press. p = dz/dx, q = dz/dy, r = d2z/dx2, s =
258// d2z/dxdy, t = d2z/dy2.
259void compute_curvature_gradients(const Array &z,
260 Array &p,
261 Array &q,
262 Array &r,
263 Array &s,
264 Array &t);
265
266Array compute_curvature_h(const Array &r, const Array &t);
267
268Array compute_curvature_k(const Array &p,
269 const Array &q,
270 const Array &r,
271 const Array &s,
272 const Array &t);
273
274} // namespace hmap
275
276namespace hmap::gpu
277{
278
280Array accumulation_curvature(const Array &z, int ir);
281
283Array curvature_horizontal_cross_sectional(const Array &z, int ir);
284
286Array curvature_horizontal_plan(const Array &z, int ir);
287
289Array curvature_horizontal_tangential(const Array &z, int ir);
290
292Array curvature_ring(const Array &z, int ir);
293
295Array curvature_rotor(const Array &z, int ir);
296
298Array curvature_vertical_longitudinal(const Array &z, int ir);
299
301Array curvature_vertical_profile(const Array &z, int ir);
302
304Array level_set_curvature(const Array &array, int prefilter_ir);
305
307Array shape_index(const Array &z, int ir);
308
310Array unsphericity(const Array &z, int ir);
311
312} // namespace hmap::gpu
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
Definition blending.hpp:186
Array unsphericity(const Array &z, int ir)
See hmap::unsphericity.
Definition curvature_gpu.cpp:130
Array level_set_curvature(const Array &array, int prefilter_ir)
See hmap::level_set_curvature.
Definition curvature_gpu.cpp:101
Array shape_index(const Array &z, int ir)
See hmap::shape_index.
Definition curvature_gpu.cpp:119
Array curvature_horizontal_plan(const Array &z, int ir)
See hmap::curvature_horizontal_plan.
Definition curvature_gpu.cpp:35
Array curvature_rotor(const Array &z, int ir)
See hmap::curvature_rotor.
Definition curvature_gpu.cpp:68
Array curvature_horizontal_tangential(const Array &z, int ir)
See hmap::curvature_horizontal_tangential.
Definition curvature_gpu.cpp:46
Array curvature_ring(const Array &z, int ir)
See hmap::curvature_ring.
Definition curvature_gpu.cpp:57
Array curvature_vertical_profile(const Array &z, int ir)
See hmap::curvature_vertical_profile.
Definition curvature_gpu.cpp:90
Array accumulation_curvature(const Array &z, int ir)
See hmap::accumulation_curvature.
Definition curvature_gpu.cpp:13
Array curvature_vertical_longitudinal(const Array &z, int ir)
See hmap::curvature_vertical_longitudinal.
Definition curvature_gpu.cpp:79
Array curvature_horizontal_cross_sectional(const Array &z, int ir)
See hmap::curvature_horizontal_cross_sectional.
Definition curvature_gpu.cpp:24
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:89
Array curvature_horizontal_plan(const Array &z, int ir)
TODO.
Definition curvature.cpp:57
Array compute_curvature_h(const Array &r, const Array &t)
Definition curvature.cpp:254
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:13
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:180
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:205
Array curvature_horizontal_tangential(const Array &z, int ir)
TODO.
Definition curvature.cpp:73
Array level_set_curvature(const Array &array, int prefilter_ir)
Computes a signed level-set curvature.
Definition curvature.cpp:162
Array curvature_vertical_longitudinal(const Array &z, int ir)
TODO.
Definition curvature.cpp:131
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:113
Array curvature_vertical_profile(const Array &z, int ir)
TODO.
Definition curvature.cpp:146
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:96
Array curvature_gaussian(const Array &z)
Calculates the Gaussian curvature of a heightmap, providing insights into the surface's intrinsic cur...
Definition curvature.cpp:35
void compute_curvature_gradients(const Array &z, Array &p, Array &q, Array &r, Array &s, Array &t)
Definition curvature.cpp:229
Array curvature_horizontal_cross_sectional(const Array &z, int ir)
TODO.
Definition curvature.cpp:42
Array compute_curvature_k(const Array &p, const Array &q, const Array &r, const Array &s, const Array &t)
Definition curvature.cpp:259