Terra 1.0
TerraCrater Class Reference

Craters. More...

#include <archestree.h>

Inheritance diagram for TerraCrater:
TerraPrimitive TerraNode

Public Member Functions

 TerraCrater (const Vector2 &, const double &, const double &, const double &, const double &)
 Create a crater.
 
 ~TerraCrater ()
 Empty.
 
virtual ScalarAlpha ElevationAlpha (const Vector2 &) const
 Compute the elevation and weight.
 
virtual int Memory () const
 Compute the size of a node.
 
- Public Member Functions inherited from TerraPrimitive
 TerraPrimitive (const double &=1.0, const double &=1.0)
 Create a primitive.
 
 ~TerraPrimitive ()
 Recusively destroy the sub-trees.
 
int Traversal (const Vector2 &) const
 Compute the number of nodes that are traversed when evaluating the tree.
 
double Alpha (const double &) const
 Compute the falloff function.
 
- Public Member Functions inherited from TerraNode
 TerraNode (const Box2 &=Box2::Infinity)
 Create a node.
 
virtual Box2 GetBox () const
 Returns the bouding box of a node.
 
virtual double Elevation (const Vector2 &) const
 Compute the elevation at a given position.
 
virtual double Alpha (const Vector2 &) const
 Compute the alpha mask at a given position.
 
virtual Vector2 Gradient (const Vector2 &) const
 Compute the gradient at a given position.
 
virtual Vector Normal (const Vector2 &) const
 Compute the normal at a given position.
 
virtual void writeJson (QJsonObject &)
 Compute the Json Document of the subtree.
 
ScalarField2 Sample (const Array2 &) const
 Create a discrete scalar field by sampling the elevation over a given domain.
 
ScalarField2 Alpha (const Array2 &) const
 Create a discrete scalar field by sampling the elevation over a given domain.
 
void Blend (HeightField &) const
 Blend a given node with an existing terrain over an input heightfield.
 
void Add (HeightField &) const
 Add a given node with an existing heightfield.
 
virtual void Draw (QGraphicsScene &) const
 Renders the node into a QGraphicsScene.
 

Protected Member Functions

double CrestAlpha (const double &) const
 Compute the noise dampening as a function of the distance to the center.
 

Protected Attributes

Vector2 center
 Center.
 
double rc
 Crest radius.
 
double depth
 Hole depth.
 
double uz
 Ridge elevation.
 
Cubic outside
 Profile curves of the crater.
 
SimplexTurbulence2 elevation
 Warping and elevation noises.
 
- Protected Attributes inherited from TerraPrimitive
double alpha = 1.0
 Weight.
 
- Protected Attributes inherited from TerraNode
Box2 box = Box2::Infinity
 Bounding box.
 

Additional Inherited Members

- Static Protected Attributes inherited from TerraNode
static const double epsilon = 1e-2
 Epsilon value for gradient computations.
 

Detailed Description

Craters.

Constructor & Destructor Documentation

◆ TerraCrater()

TerraCrater::TerraCrater ( const Vector2 & c,
const double & cr,
const double & e,
const double & depth,
const double & uplift )
explicit

Create a crater.

Parameters
cCenter.
rCrest radius.
eExternal radius.
depthDepth of the crater.
upliftCrest height.

References TerraNode::box, center, depth, elevation, Cubic::Hermite(), outside, rc, TerraPrimitive::TerraPrimitive(), and uz.

Referenced by Memory().

Member Function Documentation

◆ CrestAlpha()

double TerraCrater::CrestAlpha ( const double & d) const
protected

Compute the noise dampening as a function of the distance to the center.

Parameters
dDistance

References Linear::Affine(), and rc.

Referenced by ElevationAlpha().

◆ ElevationAlpha()

ScalarAlpha TerraCrater::ElevationAlpha ( const Vector2 & p) const
virtual

Compute the elevation and weight.

Parameters
pPoint.

Reimplemented from TerraNode.

References TerraNode::box, center, CrestAlpha(), elevation, ScalarAlpha::Empty, rc, Cubic::SmoothCompact(), and Math::Sqr().

◆ Memory()

int TerraCrater::Memory ( ) const
virtual

Compute the size of a node.

Reimplemented from TerraNode.

References TerraCrater().