Blob 1.0
Public Member Functions | List of all members
TreeNormal Class Referenceabstract

Generic skeletal element based on the Euclidean distance. More...

#include <blobtree.h>

Inheritance diagram for TreeNormal:
TreeElement TreeNode TreeBox TreeCircle TreeCircleArc TreeCircleArcSwept TreeCone TreeConeSphere TreeConic TreeCubic TreeCubicCurve TreeCylinder TreeCylinderBox TreeDisc TreeEdge TreeHemisphere TreeHemisphereDisc TreeHollowBox TreeOctahedron TreePoly TreePyramid TreeQuadric TreeQuadricCurve TreeRectangle TreeRectangleDisc TreeSphere TreeTetra TreeTorus TreeTriangle TreeTubular TreeVertex

Public Member Functions

 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 Intensity (const Vector &) const
 Compute the intensity at a given point. More...
 
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 Vector Normal (const Vector &) const =0
 Computes the normal vector between the skeleton and the argument point in space.
 
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...
 
virtual TreeNodeCopy () const =0
 Creates a deep copy of the node, recursively traversing the whole structure.
 
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...
 

Additional Inherited Members

- Protected Attributes inherited from TreeNode
Box box = Box::Null
 Bounding box of the node.
 
double T = 0.5
 Threshold value.
 
- Static Protected Attributes inherited from TreeNode
static const double Epsilon = 1e-6
 Epsilon value for gradient computation.
 

Detailed Description

Generic skeletal element based on the Euclidean distance.

This class provides the following generic implementation of TreeNormal::Gradient().

,

Member Function Documentation

◆ Gradient()

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

Compute the gradient at a given point.

This function relies on the TreeNormal::Normal() function.

Parameters
pPoint.

Reimplemented from TreeNode.

Reimplemented in TreeVertex, and TreeConeSphere.

◆ Intensity()

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

◆ IntensityGradient()

void TreeNormal::IntensityGradient ( const Vector p,
double &  value,
Vector gradient 
) const
virtual

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

This function first call TreeNormal::Normal() function and derives the field value and the gradient from this vector.

See also
TreeVertex::IntensityGradient
Parameters
pPoint.
valueReturned field value.
gradientReturned gradient.

Reimplemented from TreeNode.

Reimplemented in TreeVertex.

◆ K() [1/3]

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

Compute the Lipschitz constant on a segment.

Parameters
raystepSegment.

Reimplemented from TreeNode.

Reimplemented in TreeVertex, TreeSphere, TreeEdge, and TreeBox.

◆ K() [2/3]

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

Compute the Lipschitz constant on a segment.

Parameters
sSegment.

Reimplemented from TreeElement.

Reimplemented in TreeVertex, TreeSphere, TreeEdge, and TreeBox.

◆ K() [3/3]

double TreeNormal::K ( const Sphere s) const
virtual

Compute the Lipschitz constant inside a sphere.

Parameters
sThe sphere.

Reimplemented from TreeElement.

◆ R()

double TreeNormal::R ( const Vector p) const
virtual

Computes the squared Euclidean distance to the skeleton.

This virtual member function calls TreeNormal::Normal() function. It is inefficient and should be reimplemented whenever possible.

Parameters
pPoint.

Reimplemented in TreeEdge, TreeQuadricCurve, TreeTriangle, and TreeConeSphere.