Terra 1.0
|
The blending node in the ArchesTree model. More...
#include <archestree.h>
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. | |
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.
|
explicit |
Create a blending node.
v | Argument children. |
TerraBlend::TerraBlend | ( | TerraNode * | a, |
TerraNode * | b, | ||
TerraNode * | c = nullptr , |
||
TerraNode * | d = nullptr |
||
) |
Create a blending node.
a,b,c,d | Argument children. |
|
virtual |
Compute the weight and the height of a given point in the plane.
p | Point. |
Implements TerraOperator.
Reimplemented in TerraBlendGrid.
References ScalarAlpha::Alpha(), TerraNode::box, Box2::Inside(), TerraOperator::nodes, and ScalarAlpha::Value().
|
virtual |
Compute the number of nodes that are traversed when evaluating the tree.
p | Point. |
Reimplemented from TerraNode.
References TerraNode::box, Box2::Inside(), and TerraOperator::nodes.