HighMap library (C++)
Loading...
Searching...
No Matches
range.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
17#pragma once
18
19#include "highmap/array.hpp"
20
21namespace hmap
22{
23
31
51void chop(Array &array, float vmin);
52
75void chop_max_smooth(Array &array, float vmax);
76
97void clamp(Array &array, float vmin = 0.f, float vmax = 1.f);
98
122void clamp(Array &array, float vmax, ClampMode mode);
123
135void clamp_min(Array &array, float vmin);
136void clamp_min(Array &array, const Array &vmin);
137
149void clamp_min_smooth(Array &array, float vmin, float k = 0.2f);
150
151void clamp_min_smooth(Array &array,
152 const Array &vmin,
153 float k = 0.2f);
154
168float clamp_min_smooth(float x, float vmin, float k = 0.2f);
169
181void clamp_max(Array &array, float vmax);
182void clamp_max(Array &array, const Array &vmax);
183
195void clamp_max_smooth(Array &array, float vmax, float k = 0.2f);
196
197void clamp_max_smooth(Array &array,
198 const Array &vmax,
199 float k = 0.2f);
200
223void clamp_oblique_plane(Array &array,
224 float vmax,
225 float angle,
226 float slope,
227 bool use_max_operator = true, // min if not
228 float k = 0.f,
229 Vec2<float> center = {0.5f, 0.5f},
230 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
231
246void clamp_smooth(Array &array, float vmin, float vmax, float k = 0.2f);
247
259Array maximum(const Array &array1, const Array &array2);
260
272Array maximum(const Array &array1, const float value);
273
302Array maximum_smooth(const Array &array1, const Array &array2, float k = 0.2);
303
329float maximum_smooth(const float a,
330 const float b,
331 float k = 0.2);
332
344Array minimum(const Array &array1, const Array &array2);
345
357Array minimum(const Array &array1, const float value);
358
377Array minimum_smooth(const Array &array1, const Array &array2, float k = 0.2);
378
393float minimum_smooth(const float a, const float b, float k);
394
414void remap(Array &array,
415 float vmin,
416 float vmax,
417 float from_min,
418 float from_max);
419
432void remap(Array &array, float vmin = 0, float vmax = 1);
433
448void rescale(Array &array, float scaling, float vref = 0.f);
449
450} // namespace hmap
451
452namespace hmap::gpu
453{
454
456Array maximum_smooth(const Array &array1, const Array &array2, float k = 0.2f);
457
459Array minimum_smooth(const Array &array1, const Array &array2, float k = 0.2f);
460
461} // namespace hmap::gpu
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
Definition blending.hpp:186
Array minimum_smooth(const Array &array1, const Array &array2, float k=0.2f)
See hmap::minimum_smooth.
Definition range_cpu.cpp:29
Array maximum_smooth(const Array &array1, const Array &array2, float k=0.2f)
See hmap::maximum_smooth.
Definition range_cpu.cpp:9
Definition algebra.hpp:28
void chop_max_smooth(Array &array, float vmax)
Set to zero any value lower than vmax and apply a linear decrease slope between vmax / 2 and vmax.
Definition range.cpp:27
void clamp_oblique_plane(Array &array, float vmax, float angle, float slope, bool use_max_operator=true, float k=0.f, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Clamps an array against an oblique plane.
Definition range.cpp:185
void remap(Array &array, float vmin, float vmax, float from_min, float from_max)
Remap array elements from a starting range to a target range.
Definition range.cpp:438
void clamp_min(Array &array, float vmin)
Clamp array values lower than a given bound.
Definition range.cpp:129
void clamp_min_smooth(Array &array, float vmin, float k=0.2f)
Clamp array values lower than a given bound with a smooth transition.
Definition range.cpp:150
Array minimum_smooth(const Array &array1, const Array &array2, float k=0.2)
Return the polynomial cubic smooth element-wise minimum of two arrays.
Definition range.cpp:390
void clamp_smooth(Array &array, float vmin, float vmax, float k=0.2f)
Clamp array values within a given interval with a smooth transition.
Definition range.cpp:223
void clamp_max_smooth(Array &array, float vmax, float k=0.2f)
Clamp array values larger than a given bound with a smooth transition.
Definition range.cpp:100
Array maximum_smooth(const Array &array1, const Array &array2, float k=0.2)
Return the polynomial cubic smooth element-wise maximum of two arrays.
Definition range.cpp:330
Array maximum(const Array &array1, const Array &array2)
Return the element-wise maximum of two arrays.
Definition range.cpp:243
float angle(const Point &p1, const Point &p2)
Computes the angle between two points relative to the x-axis.
Definition points.cpp:42
void chop(Array &array, float vmin)
Set to zero any value lower than vmin.
Definition range.cpp:17
void rescale(Array &array, float scaling, float vref=0.f)
Remap array elements from a starting range to a target range.
Definition range.cpp:454
Array slope(Vec2< int > shape, float angle, float slope, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array corresponding to a slope with a given overall.
Definition primitives.cpp:279
ClampMode
Definition range.hpp:25
@ NEGATIVE_ONLY
Definition range.hpp:27
@ POSITIVE_ONLY
Definition range.hpp:26
@ NONE
Definition range.hpp:29
@ BOTH
Definition range.hpp:28
void clamp_max(Array &array, float vmax)
Clamp array values larger than a given bound.
Definition range.cpp:79
void clamp(Array &array, float vmin=0.f, float vmax=1.f)
Clamp array elements to a target range.
Definition range.cpp:44
Array minimum(const Array &array1, const Array &array2)
Return the element-wise minimum of two arrays.
Definition range.cpp:359