Terra 1.0
Public Member Functions | List of all members
TerraBlend Class Reference

The blending node in the ArchesTree model. More...

#include <archestree.h>

Inheritance diagram for TerraBlend:
TerraOperator TerraNode TerraBlendGrid

Public Member Functions

 TerraBlend (QVector< TerraNode * >)
 Create a blending node. More...
 
 TerraBlend (TerraNode *, TerraNode *, TerraNode *=nullptr, TerraNode *=nullptr)
 Create a blending node. More...
 
 ~TerraBlend ()
 Empty.
 
virtual ScalarAlpha ElevationAlpha (const Vector2 &) const
 Compute the weight and the height of a given point in the plane. More...
 
virtual void Draw (QGraphicsScene &) const
 Draw the sub-tree.
 
virtual int Traversal (const Vector2 &) const
 Compute the number of nodes that are traversed when evaluating the tree. More...
 
virtual void writeJson (QJsonObject &)
 Compute the Json Document of the subtree.
 
- Public Member Functions inherited from TerraOperator
 TerraOperator (const QVector< TerraNode * > &)
 Create a generic operator. More...
 
 TerraOperator (TerraNode *, TerraNode *=nullptr, TerraNode *=nullptr, TerraNode *=nullptr)
 Create a node with several children nodes. More...
 
 ~TerraOperator ()
 Recursively destroys the complete sub-tree.
 
virtual int Memory () const
 Compute the size of a node. More...
 
- Public Member Functions inherited from TerraNode
 TerraNode (const Box2 &=Box2::Infinity)
 Create a node. More...
 
virtual Box2 GetBox () const
 Returns the bouding box of a node.
 
virtual double Elevation (const Vector2 &) const
 Compute the elevation at a given position. More...
 
virtual double Alpha (const Vector2 &) const
 Compute the alpha mask at a given position. More...
 
virtual Vector2 Gradient (const Vector2 &) const
 Compute the gradient at a given position. More...
 
virtual Vector Normal (const Vector2 &) const
 Compute the normal at a given position. More...
 
ScalarField2 Sample (const Array2 &) const
 Create a discrete scalar field by sampling the elevation over a given domain. More...
 
ScalarField2 Alpha (const Array2 &) const
 Create a discrete scalar field by sampling the elevation over a given domain. More...
 
void Blend (HeightField &) const
 Blend a given node with an existing terrain over an input heightfield. More...
 
void Add (HeightField &) const
 Add a given node with an existing heightfield. More...
 

Additional Inherited Members

- Protected Attributes inherited from TerraOperator
QVector< TerraNode * > nodes
 Array of nodes that will be combined.
 
- Protected Attributes inherited from TerraNode
Box2 box = Box2::Infinity
 Bounding box.
 
- Static Protected Attributes inherited from TerraNode
static const double epsilon = 1e-2
 Epsilon value for gradient computations.
 

Detailed Description

The blending node in the ArchesTree model.

The blending node computes the weighted average of the children nodes.

Whenever many primitives need to be blended together, it may be more efficient to use the ArchesBlendGrid node that uses a loose grid to speed up computations.

See also
ArchesBlendGrid

Constructor & Destructor Documentation

◆ TerraBlend() [1/2]

TerraBlend::TerraBlend ( QVector< TerraNode * >  v)
explicit

Create a blending node.

Parameters
vArgument children.

◆ TerraBlend() [2/2]

TerraBlend::TerraBlend ( TerraNode a,
TerraNode b,
TerraNode c = nullptr,
TerraNode d = nullptr 
)

Create a blending node.

Parameters
a,b,c,dArgument children.

Member Function Documentation

◆ ElevationAlpha()

ScalarAlpha TerraBlend::ElevationAlpha ( const Vector2 p) const
virtual

Compute the weight and the height of a given point in the plane.

Parameters
pPoint.

Implements TerraOperator.

Reimplemented in TerraBlendGrid.

References ScalarAlpha::Alpha(), TerraNode::box, Box2::Inside(), TerraOperator::nodes, and ScalarAlpha::Value().

◆ Traversal()

int TerraBlend::Traversal ( const Vector2 p) const
virtual

Compute the number of nodes that are traversed when evaluating the tree.

Parameters
pPoint.

Reimplemented from TerraNode.

References TerraNode::box, Box2::Inside(), and TerraOperator::nodes.