Terra 1.0
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
TerraImages Class Referenceabstract

A virtual class for coding nodes whoses material functions are coded as an elevation map. More...

#include <archestree.h>

Inheritance diagram for TerraImages:
TerraPrimitive TerraNode TerraBoxImage TerraCubicImage TerraQuadrangleImage TerraVertexImage

Public Member Functions

 TerraImages (const QString &)
 Create the node. More...
 
 TerraImages (const QString &, const QString &)
 Create an image primitive. More...
 
virtual ScalarAlpha ElevationAlpha (const Vector2 &) const =0
 Compute the elevation and weight. More...
 
- Public Member Functions inherited from TerraPrimitive
 TerraPrimitive ()
 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. 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...
 
virtual void writeJson (QJsonObject &)
 Compute the Json Document of the subtree.
 
virtual int Memory () const
 Compute the size of a node.
 
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...
 
virtual void Draw (QGraphicsScene &) const
 Renders the node into a QGraphicsScene. More...
 

Static Public Member Functions

static void Store (const ScalarField2 &, const QString &)
 Store an image in the set of image instances. More...
 
static void Store (const QImage &, const QString &)
 Store an image in the set of image instances. More...
 
static void Store (const QString &, const QString &)
 Store an image in the set of image instances. More...
 

Protected Member Functions

const ScalarField2GetImage (int) const
 Get the reference to the k-th image in the atlas. More...
 

Static Protected Member Functions

static bool ExistsInStorage (const QString &)
 Checks if an image exists in the atlas. More...
 
static int IndexInStorage (const QString &)
 Checks if an image exists in the atlas, and returns its index. More...
 

Protected Attributes

int ref
 Index storing the reference to the field.
 
int alf
 Index storing the reference to the field.
 
- Protected Attributes inherited from TerraNode
Box2 box = Box2::Infinity
 Bounding box.
 

Static Protected Attributes

static QVector< ScalarField2images
 Set of images that will be shared by the instances of TerraImages.
 
static QVector< QString > aliases
 Identifier as names of the images.
 
- Static Protected Attributes inherited from TerraNode
static const double epsilon = 1e-2
 Epsilon value for gradient computations.
 

Detailed Description

A virtual class for coding nodes whoses material functions are coded as an elevation map.

Constructor & Destructor Documentation

◆ TerraImages() [1/2]

TerraImages::TerraImages ( const QString &  alias)

Create the node.

Parameters
aliasName of the image defining the height field.

References alf, IndexInStorage(), and ref.

◆ TerraImages() [2/2]

TerraImages::TerraImages ( const QString &  h,
const QString &  a 
)

Create an image primitive.

Parameters
imageThe image.
aliasAlias.

References alf, IndexInStorage(), and ref.

Member Function Documentation

◆ ElevationAlpha()

virtual ScalarAlpha TerraImages::ElevationAlpha ( const Vector2 ) const
pure virtual

Compute the elevation and weight.

Parameters
pPoint.

Reimplemented from TerraNode.

Implemented in TerraBoxImage, TerraVertexImage, TerraQuadrangleImage, and TerraCubicImage.

◆ ExistsInStorage()

bool TerraImages::ExistsInStorage ( const QString &  alias)
staticprotected

Checks if an image exists in the atlas.

Parameters
aliasName.

References aliases.

Referenced by Store().

◆ GetImage()

const ScalarField2 & TerraImages::GetImage ( int  k) const
inlineprotected

Get the reference to the k-th image in the atlas.

This internal function is only provided to simplifiy notations in the code.

Parameters
kIndex.

References images.

Referenced by TerraBoxImage::ElevationAlpha(), TerraVertexImage::ElevationAlpha(), and TerraQuadrangleImage::ElevationAlpha().

◆ IndexInStorage()

int TerraImages::IndexInStorage ( const QString &  alias)
staticprotected

Checks if an image exists in the atlas, and returns its index.

Parameters
aliasName.

References aliases.

Referenced by TerraImages().

◆ Store() [1/3]

void TerraImages::Store ( const QImage &  image,
const QString &  alias 
)
static

Store an image in the set of image instances.

Parameters
imageThe image.
aliasAlias.

References aliases, ExistsInStorage(), images, and Box2::Unit.

◆ Store() [2/3]

void TerraImages::Store ( const QString &  image,
const QString &  alias 
)
static

Store an image in the set of image instances.

Parameters
imageThe image.
aliasAlias.

References ExistsInStorage(), and Store().

◆ Store() [3/3]

void TerraImages::Store ( const ScalarField2 image,
const QString &  alias 
)
static

Store an image in the set of image instances.

Parameters
imageThe image.
aliasAlias.

References aliases, ExistsInStorage(), and images.

Referenced by Store().