Terra 1.0
TerraFrameScaled Class Reference

Transformation operator. More...

#include <archestree.h>

Inheritance diagram for TerraFrameScaled:
TerraUnary TerraNode

Public Member Functions

 TerraFrameScaled (TerraNode *, const FrameScaled2 &, const double &=1.0)
 Create a transformation node.
 TerraFrameScaled (TerraNode *, const Vector &, const double &, const Vector2 &=Vector2::Null)
 Create a rotation node.
 ~TerraFrameScaled ()
 Recursively destroys the sub-tree.
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 TerraUnary
 TerraUnary (TerraNode *)
 Create an unary node.
 ~TerraUnary ()
 Recusively destroy the sub-tree.
virtual int Traversal (const Vector2 &) const
 Compute the number of nodes that are traversed when evaluating the tree.
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 Attributes

FrameScaled2 frame = FrameScaled2::Id
 Frame.
double e = 1.0
 Vertical scaling.
Protected Attributes inherited from TerraUnary
TerraNodenode = nullptr
 Sub-tree.
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

Transformation operator.

Constructor & Destructor Documentation

◆ TerraFrameScaled() [1/2]

TerraFrameScaled::TerraFrameScaled ( TerraNode * n,
const FrameScaled2 & f,
const double & e = 1.0 )
explicit

Create a transformation node.

Parameters
nSub-tree.
fFrame.

References TerraNode::box, e, frame, TerraUnary::node, and TerraUnary::TerraUnary().

Referenced by Memory(), and TerraFrameScaled().

◆ TerraFrameScaled() [2/2]

TerraFrameScaled::TerraFrameScaled ( TerraNode * n,
const Vector & s,
const double & a,
const Vector2 & c = Vector2::Null )
explicit

Create a rotation node.

Parameters
nSub-tree.
sScaling vector.
aAngle of rotation (radians).
cCenter of rotation.

References TerraFrameScaled().

Member Function Documentation

◆ ElevationAlpha()

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

Compute the elevation and weight.

Parameters
pPoint.

Reimplemented from TerraNode.

References TerraNode::box, e, ScalarAlpha::Empty, frame, and TerraUnary::node.

◆ Memory()

int TerraFrameScaled::Memory ( ) const
virtual

Compute the size of a node.

Reimplemented from TerraUnary.

References TerraUnary::node, and TerraFrameScaled().