Heightfield 1.0
HeightFieldErosion Class Reference

Erosion. More...

#include <heightfield.h>

Inheritance diagram for HeightFieldErosion:
HeightField ScalarField2 Array2 Box2

Public Member Functions

 HeightFieldErosion (const HeightField &)
 Setup erosion using a heightfield.
 
void HillSlope (double, double=1.0)
 Hillslope erosion.
 
void DebrisSlope (double, double=1.0)
 Debris slope erosion.
 
void StreamPowerErosion (double=0.0005, double=0.01, double=2., double=0.8, double=100.)
 Stream power erosion.
 
void StreamPowerErosion (double, const ScalarField2 &, double=2., double=0.8, double=100.)
 Stream power erosion.
 
void HillSlope (double, double, double, double)
 Hillslope erosion with constrained range.
 
void DebrisSlope (double, double, double, double)
 Debris slope erosion with constrained range.
 
- Public Member Functions inherited from HeightField
 HeightField ()
 Empty.
 
 HeightField (const ScalarField2 &)
 Create a heightfield from a scalar field.
 
 HeightField (const Box2 &, const QImage &, const double &=0.0, const double &=256.0 *256.0 - 1.0, bool=true)
 Create a heightfield from an image.
 
 HeightField (const Box2 &, int, int, const double &=0.0)
 Create a flat heightfield.
 
 HeightField (const Box2 &, int, int, const QVector< double > &)
 Create a heightfield.
 
 ~HeightField ()
 Empty.
 
double GetHeight (const Vector2 &) const
 Compute the height at a given position.
 
Vector Vertex (const Vector2 &, bool=true) const
 Compute the vertex position on the terrain.
 
Vector Vertex (int, int) const
 Compute the vertex corresponding to a given sample.
 
QVector< VectorArrayVertexes (const QVector< QPoint > &) const
 Compute the coordinates of a set of points on the grid.
 
Vector Normal (const Vector2 &, bool=true) const
 Compute the normal for a given position on the terrain.
 
Vector Normal (int, int) const
 Compute the normal at a given sample.
 
double Slope (int, int) const
 Compute the slope at a given integer point on the terrain.
 
double Slope (const QPoint &, const QPoint &) const
 Compute the slope between two points.
 
double AverageSlope (int, int) const
 Compute the average slope at a given integer point on the terrain.
 
double Aspect (int, int) const
 Compute the aspect (face orientation) at a given integer point on the terrain.
 
double K () const
 Compute the Lipschitz constant of the signed distance field defined as f(x,y,z)=z-h(x,y).
 
void Subdivide (const double &, Random &=Random::R239)
 Refine the terrain.
 
ScalarField2 StreamArea (const double &=1.0) const
 Compute the stream area field of the terrain.
 
ScalarField2 StreamAreaSteepest () const
 Compute the stream area field of the terrain.
 
ScalarField2 StreamAreaLimited (const double &) const
 Compute the stream area field of the terrain using a limited flow propagation.
 
ScalarField2 StreamLength (bool=false) const
 Compute the stream length.
 
ScalarField2 StreamSourceElev (bool=false) const
 Return the maximum source elevation of the flows converging to each point in the height field.
 
VectorField2 FlowField (ScalarField2 &) const
 Compute the flow field of the terrain.
 
ScalarField2 AverageSlope () const
 Compute the average slope field of the terrain.
 
ScalarField2 Slope (bool=false) const
 Compute the maximum slope field of the terrain.
 
ScalarField2 Aspect () const
 Compute the aspect field (face orientation) of the terrain.
 
ScalarField2 WetnessIndex (const double &=1.0e-3, bool=false) const
 Compute the wetness index field of the terrain.
 
ScalarField2 StreamPower (bool=false) const
 Compute the stream power field of the terrain.
 
ScalarField2 StreamPower (double, double) const
 Compute the stream power field of the terrain.
 
ScalarField2 ReliefSteepness (const double &) const
 Compute the omni-directional relief and steepness.
 
ScalarField2 Jut (const double &) const
 Compute the Jut metric.
 
ScalarField2 Rut (const double &) const
 Compute the Rut metric.
 
ScalarField2 Peakedness (const double &) const
 Compute the peakedness of a terrain, defined as the percentage of cells in a disk that have lower or equal elevation than the center position.
 
ScalarField2 TopographicPositionIndex (const double &r) const
 Compute the TPI, an index that measures how much a cell rises with respect to the mean elevation of a given radius. It is very similar in spirit to Peakedness, but here we obtain a value in m instead of the % of cells below it.
 
ScalarField2 TopographicPositionIndex_SAT (const double &r) const
 Compute the TPI, an index that measures how much a cell rises with respect to the mean elevation of a given radius. It is very similar in spirit to Peakedness, but here we obtain a value in m instead of the % of cells below it.
 
ScalarField2 TerrainRuggednessIndex (int=3, bool=false) const
 Compute the Terrain Ruggedness Index.
 
ScalarField2 LocalVariance (int=3) const
 Compute the local variance.
 
ScalarField2 LocalRange (int=3) const
 Compute the local range.
 
ScalarField2 AreaRatio (int=3) const
 Compute the surface to planar ratio of areas, a measure of terrain ruggedness.
 
ScalarField2 SurfaceRoughness (int=3) const
 Compute the surface roughness.
 
ScalarField2 HillslopeAsymmetry (double, double=0, double=45) const
 Compute the hillslope asymmetry map for a given direction.
 
ScalarField2 Accessibility (const double &, int=16) const
 Compute the accessibility.
 
ScalarField2 ClearSky (const double &r, int n) const
 Compute the clear sky.
 
ScalarField2 Light (const Vector &, bool=false) const
 Compute the direct lighting.
 
double FractLaplacian (int x, int y, double s, int n) const
 Fractionnal Laplacian.
 
ScalarField2 FractLaplacian (double s, int n) const
 Fractionnal Laplacian.
 
int FillDepressions ()
 Fills all pits and removes all digital dams from the HeightField.
 
int FillDepressions (const double &)
 Modifies the HeightField to guarantee drainage.
 
int FillDepressions (ScalarField2 &) const
 Fills all pits and removes all digital dams from the HeightField.
 
int FillDepressions (const double &, ScalarField2 &) const
 Modifies the HeightField to guarantee drainage.
 
void CompleteBreach ()
 Breach depressions.
 
bool Intersect (const Ray &, double &, Vector &) const
 Compute the intersection between a ray and the surface of the terrain.
 
bool Intersect (const Ray &, double &, Vector &, const Box &, const double &, const double &=1.0e8, const double &=1.0e-4) const
 Compute the intersection between a ray and the surface of the heightfield.
 
bool Intersect (const Ray &, QVector< double > &, QVector< Vector > &, const Box &, const double &) const
 Compute the intersection between a ray and the surface of the heightfield.
 
bool IntersectBox (const Ray &, double &, Vector &, Vector &, const Box &) const
 Compute the intersection between a ray and the surface border of the heightfield.
 
double Shade (const Vector &, const QVector< Vector > &, const QVector< double > &, const double &) const
 Shade a vector of the terrain.
 
ScalarField2 Sun (const double &, int=5, int=1, int=0, int=12) const
 Compute the average direct lighting from the sun over a year.
 
ScalarField2 SelfShadow (const Vector &) const
 Compute the self shadowing map.
 
Array2I Flow (bool=false) const
 Compute the flow topology.
 
Array2I Geomorphons (const double &=0.02) const
 Compute the geomorphon index map.
 
Array2I GeomorphonsTangent (double, double=0.02) const
 Compute the geomorphon index map.
 
Array2I GeomorphonsAggregated (const double &=0.02) const
 Compute the aggregated geomorphon index map.
 
Box GetBox () const
 Get the bounding box of the heightfield.
 
double Signed (const Vector &) const
 Compute the signed distance do the heightfield.
 
void Scale (const Vector &)
 Scale the height field.
 
void Scale (const double &)
 Uniform scaling.
 
void Unity ()
 Scale the heightfield so that the compact support should fit within unit box.
 
void Draw (QGraphicsScene &, const QPen &=QPen(), const QBrush &=QBrush()) const
 Draw a heightfield.
 
QVector< QPoint > Up (int, int) const
 Compute the cells that are uphill of input point.
 
QVector< QPoint > Down (int, int) const
 Compute the cells that are downhill of input point.
 
int CheckFlowSlope (const QPoint &, FlowStruct &, const double &=1.0) const
 Compute the flow directions at a given point, using an L2 metric.
 
int CheckFlowDirectionsAngle (const QPoint &, const double &, FlowStruct &) const
 Compute the flow directions at a given point.
 
Mesh CreateMesh (bool=true, bool=false, const double &=0.0) const
 Create the geometry of the heightfield.
 
Mesh CreateMeshSide (const double &=0.0) const
 Create the geometry of the border of the terrain.
 
void CreateCubes (Box &, QVector< FrameScaled > &, const double &=-10.0) const
 Create a stack representation of the model.
 
void Carve (const CubicCurve &, const double &, const double &)
 Carve the terrain using a cubic curve, whose elevation define the prescribed elevation along the curve.
 
void Carve (const QuadricCurve &, const double &, const double &)
 Carve the terrain using a quadric curve, whose elevation define the prescribed elevation along the curve.
 
void Carve (const CubicCurveSet &, const double &, const double &)
 Carve the terrain using a piecewise cubic curve, whose elevation define the prescribed elevation along the curve.
 
void Carve (const QuadricCurveSet &, const double &, const double &)
 Carve the terrain using a piecewise quadric curve, whose elevation define the prescribed elevation along the curve.
 
void Carve (const Segment &, const double &, const double &)
 Carve the terrain using a segment, whose elevation define the prescribed elevation along the curve.
 
void Carve (const SmoothDisc2 &, const double &)
 Flatten the scalar field.
 
ScalarField2 GradientDistance (const HeightField &) const
 Compute the gradient distance between two heightfields.
 
ScalarField2 Sea (const double &=0.0) const
 Compute the water elevation in every cell according to a uniform sea level.
 
QVector< double > Cross (const Vector2 &, const Vector2 &, int) const
 Compute the elevation along a segment.
 
void SmoothBreachMultiScale (const QVector< int > &)
 Smooth breaching with a given input series.
 
void SmoothBreachGeometric (double, double)
 Smooth breaching with a geometric series.
 
void SmoothBreachLinear (double)
 Smooth breaching process.
 
void LowErosionMultiScale (const QVector< double > &, const QVector< double > &)
 Preparametered multi-scale medium scale erosion. Similar capacity limited erosion/deposition to Mei [2007], but with drainage-like flow routing instead of shallow water.
 
void LowErosionGeometric (double, double, double, double)
 Preparametered multi-scale medium scale erosion. Similar capacity limited erosion/deposition to Mei [2007], but with drainage-like flow routing instead of shallow water.
 
void StabilizeSlope (double, double, int max_iter=200)
 Apply a parralelizable version of a thermal erosion (aka slope stabilization).
 
QString EncodeSize () const
 Code the size and range parameters of the heightfield into a string.
 

Additional Inherited Members

- Static Public Member Functions inherited from HeightField
static Box Size (const QString &)
 Compute the box of the heightfield from a string.
 
- Static Public Attributes inherited from HeightField
static const double flat = 1.0e-8
 Small negative epsilon value used in breaching and flow algorithms.
 

Detailed Description

Erosion.

Constructor & Destructor Documentation

◆ HeightFieldErosion()

HeightFieldErosion::HeightFieldErosion ( const HeightField & h)
explicit

Setup erosion using a heightfield.

Parameters
hHeightfield

Member Function Documentation

◆ DebrisSlope() [1/2]

void HeightFieldErosion::DebrisSlope ( double k,
double t,
double a,
double b )

Debris slope erosion with constrained range.

Parameters
kErosion coefficient.
tTime step.
a,bSlope range for cropping values.

◆ DebrisSlope() [2/2]

void HeightFieldErosion::DebrisSlope ( double k,
double t = 1.0 )

Debris slope erosion.

Compute debris slope erosion using \( h=h- k t \Nabla h \).

Parameters
kErosion coefficient.
tTime step.

◆ HillSlope() [1/2]

void HeightFieldErosion::HillSlope ( double k,
double t,
double a,
double b )

Hillslope erosion with constrained range.

Parameters
kErosion coefficient.
tTime step.
a,bLaplacian range for cropping values.

◆ HillSlope() [2/2]

void HeightFieldErosion::HillSlope ( double k,
double t = 1.0 )

Hillslope erosion.

Compute hill slope erosion using \( h=h- k t \Delta h \).

Parameters
kErosion coefficient.
tTime step.

◆ StreamPowerErosion() [1/2]

void HeightFieldErosion::StreamPowerErosion ( double k,
const ScalarField2 & u,
double p_sl = 2.,
double p_sa = 0.8,
double t = 100. )

Stream power erosion.

Parameters
kErosion coefficient.
uUplift map.
p_sl,p_saSlope and area exponents in the Stream Power computation.
tTime step.

◆ StreamPowerErosion() [2/2]

void HeightFieldErosion::StreamPowerErosion ( double k = 0.0005,
double u = 0.01,
double p_sl = 2.,
double p_sa = 0.8,
double t = 100. )

Stream power erosion.

Parameters
kErosion coefficient.
uUplift constant value.
p_sl,p_saSlope and area exponents in the Stream Power computation.
tTime step.