Blob 1.0
Public Member Functions | Protected Attributes | List of all members
TreeVertex Class Reference

A point skeleton element. More...

#include <blobtree.h>

Inheritance diagram for TreeVertex:
TreeNormal TreeElement TreeNode

Public Member Functions

 TreeVertex (const Vector &, BlendCompact *)
 Create a point skeletal element given its center and its blending function. More...
 
virtual ~TreeVertex ()
 Destroy a vertex element.
 
Vector Normal (const Vector &) const
 Compute the normal vector between a point and the skeleton. More...
 
double Intensity (const Vector &) const
 Compute the intensity. More...
 
Vector Gradient (const Vector &) const
 Compute the gradient of the field function at a given point in space. More...
 
void IntensityGradient (const Vector &, double &, Vector &) const
 Compute the intensity and gradient. More...
 
double K (const Segment &) const
 Compute the Lipschitz constant on a segment. More...
 
double K (const RayStep &) const
 Compute the Lipschitz constant on a segment. More...
 
double K (const Ray &) const
 Returns a local Lipschitz constant along a ray. More...
 
virtual TreeNodeCopy () const
 Creates a deep copy of a vertex node.
 
int Memory () const
 Compute the size of a node.
 
virtual TreeNodeTranslate (const Vector &)
 Translates a vertex node in the BlobTree. More...
 
virtual TreeNodeRotate (const Matrix &)
 Rotates a vertex node in the BlobTree. More...
 
virtual TreeNodeScale (const Vector &)
 Scale a vertex node. More...
 
- Public Member Functions inherited from TreeNormal
 TreeNormal (BlendCompact *=nullptr)
 Creates a skeletal element given a blending function.
 
virtual ~TreeNormal ()
 Destroys a skeletal element.
 
virtual double R (const Vector &) const
 Computes the squared Euclidean distance to the skeleton. More...
 
virtual double K (const Sphere &) const
 Compute the Lipschitz constant inside a sphere. More...
 
- Public Member Functions inherited from TreeElement
 TreeElement (BlendCompact *=nullptr)
 Creates a new element given a blending function.
 
virtual ~TreeElement ()
 Destroys an element. More...
 
double K () const
 Returns the Lipschitz constant of the element. More...
 
double K (const Box &) const
 Returns a local Lipschitz constant within a box domain. More...
 
TreeNodeCut (const Box &) const
 Cuts the node to simplify its structure inside a box. More...
 
- Public Member Functions inherited from TreeNode
 TreeNode ()
 Create a virtual node of the Blob-Tree structure.
 
virtual ~TreeNode ()
 Destroys a node.
 
virtual TreeNodeBlend (TreeNode *)
 Insert a blending node that blends the old and the new sub-tree together. More...
 
virtual TreeNodeUnion (TreeNode *)
 Insert a union node that unions the old and the new sub-tree together. More...
 
virtual TreeNodeDifference (TreeNode *)
 Insert a difference node. More...
 
Box GetBox () const
 Return the bounding box of the node.
 
virtual void SetThreshold (const double &)
 Set the threshold value. More...
 
virtual Color GetMaterial (const Vector &, const Vector &=Vector::Null) const
 Gets the color of a node at a point. More...
 
virtual int Nodes () const
 Compute the number of nodes of the sub-tree.
 
virtual int Depth () const
 Compute the dpeth of the sub-tree.
 
virtual Vector Dichotomy (Vector, Vector, double, double, double, const double &=1.0e-4)
 Compute the intersection between the implicit surface and a segment. More...
 

Protected Attributes

Vector c
 Center.
 
- Protected Attributes inherited from TreeNode
Box box = Box::Null
 Bounding box of the node.
 
double T = 0.5
 Threshold value.
 

Additional Inherited Members

- Static Protected Attributes inherited from TreeNode
static const double Epsilon = 1e-6
 Epsilon value for gradient computation.
 

Detailed Description

A point skeleton element.

Example of how to code a vertex primitive:

TreeNode *vertex=new TreeVertex(Vector(1,0,-2),new BlendCubic(2.0,1.0));
Normalized blending functions (1-r2)3.
Definition: blend.h:114
The generic nodes with some pure virtual functions.
Definition: blobtree.h:27
TreeVertex(const Vector &, BlendCompact *)
Create a point skeletal element given its center and its blending function.
Definition: treevertex.cpp:21

,

Constructor & Destructor Documentation

◆ TreeVertex()

TreeVertex::TreeVertex ( const Vector c,
BlendCompact blend 
)
explicit

Create a point skeletal element given its center and its blending function.

Parameters
cCenter.
blendFalloff function.

Member Function Documentation

◆ Gradient()

Vector TreeVertex::Gradient ( const Vector p) const
virtual

Compute the gradient of the field function at a given point in space.

Parameters
pPoint.

Reimplemented from TreeNormal.

◆ Intensity()

double TreeVertex::Intensity ( const Vector p) const
virtual

Compute the intensity.

Parameters
pPoint.

Reimplemented from TreeNormal.

◆ IntensityGradient()

void TreeVertex::IntensityGradient ( const Vector p,
double &  s,
Vector g 
) const
virtual

Compute the intensity and gradient.

This function factorizes computations and is less expensive than calling TreeVertex::Intensity and TreeVertex::Gradient.

Parameters
pPoint.
sIntensity.
gGradient.

Reimplemented from TreeNormal.

◆ K() [1/3]

double TreeVertex::K ( const Ray ray) const
virtual

Returns a local Lipschitz constant along a ray.

Returns the Lipschitz constant of the element if argument ray intersects the element's bounding box.

Parameters
rayThe ray.

Reimplemented from TreeElement.

◆ K() [2/3]

double TreeVertex::K ( const RayStep raystep) const
virtual

Compute the Lipschitz constant on a segment.

Parameters
raystepSegment.

Reimplemented from TreeNormal.

◆ K() [3/3]

double TreeVertex::K ( const Segment s) const
virtual

Compute the Lipschitz constant on a segment.

Parameters
sSegment.

Reimplemented from TreeNormal.

◆ Normal()

Vector TreeVertex::Normal ( const Vector p) const
virtual

Compute the normal vector between a point and the skeleton.

In this trivial case simply return the distance vector to the center.

Implements TreeNormal.

◆ Rotate()

TreeNode * TreeVertex::Rotate ( const Matrix r)
virtual

Rotates a vertex node in the BlobTree.

Instead of inserting a rotation node in the tree, simply updates the center.

Parameters
rRotation matrix.

Reimplemented from TreeNode.

◆ Scale()

TreeNode * TreeVertex::Scale ( const Vector s)
virtual

Scale a vertex node.

If the scaling is the same in all directions, simply scale the blending function by changing the radius of influence of the primitive and change its center, otherwise insert a TreeScale node.

Parameters
sScaling vector.

Reimplemented from TreeNode.

◆ Translate()

TreeNode * TreeVertex::Translate ( const Vector t)
virtual

Translates a vertex node in the BlobTree.

Instead of inserting a translation node in the tree, simply updates the center.

Parameters
tTranslation vector.

Reimplemented from TreeNode.