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 TRI, an index that measures the ruggedness of a terrain neighborhood by computing the RMS of the residuals with respect to the center location.
 
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.
 
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.
 
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.