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

Triangle skeletal element. More...

#include <blobtree.h>

Inheritance diagram for TreeTriangle:
TreeNormal Triangle TreeElement TreeNode

Public Member Functions

 TreeTriangle (const Vector &, const Vector &, const Vector &, BlendCompact *)
 Creates a triangle skeletal element. More...
 
virtual ~TreeTriangle ()
 Destroy a triangle element.
 
virtual TreeNodeCopy () const
 Deep copy.
 
int Memory () const
 Compute the size of a node.
 
double Intensity (const Vector &) const
 Computes the field function value at a given point in space. 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 Vector Gradient (const Vector &) const
 Compute the gradient at a given point. More...
 
virtual void IntensityGradient (const Vector &, double &, Vector &) const
 Compute the field value and the gradient of the field function at a given point in space. More...
 
virtual double K (const Segment &) const
 Compute the Lipschitz constant on a segment. More...
 
virtual double K (const RayStep &) const
 Compute the Lipschitz constant on a segment. 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...
 
double K (const Ray &) const
 Returns a local Lipschitz constant along a ray. 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...
 
virtual TreeNodeTranslate (const Vector &)
 Insert a translation node. More...
 
virtual TreeNodeRotate (const Matrix &)
 Insert a rotation node. More...
 
virtual TreeNodeScale (const Vector &)
 Insert a scaling 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 Member Functions

Vector Normal (const Vector &) const
 This function computes the vector distance between the triangle and a point in space. More...
 
double R (const Vector &) const
 Compute the squared distance to the triangle skeleton. More...
 

Protected Attributes

Vector normal
 Normal of the triangle.
 
- 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

Triangle skeletal element.

The implementation is an optimized version of the general implementation of TreePolytope.

Example of how to code a triangle primitive:

TreeNode *triangle=new TreeTriangle(Vector(-1,-2,-1),Vector(1,1,1),Vector(0,1,0),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
TreeTriangle(const Vector &, const Vector &, const Vector &, BlendCompact *)
Creates a triangle skeletal element.
Definition: treetriangle.cpp:23

Constructor & Destructor Documentation

◆ TreeTriangle()

TreeTriangle::TreeTriangle ( const Vector a,
const Vector b,
const Vector c,
BlendCompact blend 
)

Creates a triangle skeletal element.

Parameters
a,b,cVertices of the triangle
blendFalloff function.

Member Function Documentation

◆ Intensity()

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

Computes the field function value at a given point in space.

Parameters
pPoint.

Reimplemented from TreeNormal.

◆ Normal()

Vector TreeTriangle::Normal ( const Vector p) const
protectedvirtual

This function computes the vector distance between the triangle and a point in space.

Basically it analyses the location of the point againt the Voronoi diagram of the polygon, and projects it to derive the right vector distance.

Parameters
pPoint.

Implements TreeNormal.

◆ R()

double TreeTriangle::R ( const Vector p) const
protectedvirtual

Compute the squared distance to the triangle skeleton.

This function is an optimized version of Triangle::R(const Vector&) const and uses internal pre-computed members to speed-up computations.

Parameters
pPoint.
See also
Triangle::R(const Vector&) const.

Reimplemented from TreeNormal.