Blob 1.0
|
Generic skeletal element based on the Euclidean distance. More...
#include <blobtree.h>
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. | |
virtual double | Intensity (const Vector &) const |
Compute the intensity at a given point. | |
virtual Vector | Gradient (const Vector &) const |
Compute the gradient at a given point. | |
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. | |
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. | |
virtual double | K (const RayStep &) const |
Compute the Lipschitz constant on a segment. | |
virtual double | K (const Sphere &) const |
Compute the Lipschitz constant inside a sphere. | |
![]() | |
TreeElement (BlendCompact *=nullptr) | |
Creates a new element given a blending function. | |
virtual | ~TreeElement () |
Destroys an element. | |
double | K () const |
Returns the Lipschitz constant of the element. | |
double | K (const Box &) const |
Returns a local Lipschitz constant within a box domain. | |
double | K (const Ray &) const |
Returns a local Lipschitz constant along a ray. | |
TreeNode * | Cut (const Box &) const |
Cuts the node to simplify its structure inside a box. | |
![]() | |
TreeNode () | |
Create a virtual node of the Blob-Tree structure. | |
virtual | ~TreeNode () |
Destroys a node. | |
virtual double | Omega (const Vector &) const |
Return the squared distance to the compact support of the node. | |
virtual TreeNode * | Blend (TreeNode *) |
Insert a blending node that blends the old and the new sub-tree together. | |
virtual TreeNode * | Union (TreeNode *) |
Insert a union node that unions the old and the new sub-tree together. | |
virtual TreeNode * | Difference (TreeNode *) |
Insert a difference node. | |
virtual TreeNode * | Translate (const Vector &) |
Insert a translation node. | |
virtual TreeNode * | Rotate (const Matrix &) |
Insert a rotation node. | |
virtual TreeNode * | Scale (const Vector &) |
Insert a scaling node. | |
virtual TreeNode * | Copy () 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. | |
virtual Color | GetMaterial (const Vector &, const Vector &=Vector::Null) const |
Gets the color of a node at a point. | |
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 QString | Show (int=0) const |
Show the tree hierarchy. | |
virtual Vector | Dichotomy (Vector, Vector, double, double, double, const double &=1.0e-4) |
Compute the intersection between the implicit surface and a segment. | |
Additional Inherited Members | |
![]() | |
BlendCompact * | blend = nullptr |
Falloff function. | |
![]() | |
Box | box = Box::Null |
Bounding box of the node. | |
double | T = 0.5 |
Threshold value. | |
![]() | |
static const double | Epsilon = 1e-6 |
Epsilon value for gradient computation. | |
Generic skeletal element based on the Euclidean distance.
This class provides the following generic implementation of TreeNormal::Gradient().
,
|
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.
p | Point. |
Reimplemented in TreeConeSphere, TreeEdge, TreeQuadricCurve, and TreeTriangle.
|
virtual |
Compute the intensity at a given point.
This function relies on the TreeNormal::R() function.
p | Point. |
Implements TreeNode.
Reimplemented in TreeBox, TreeBubble, TreeCircle, TreeCircleArc, TreeCone, TreeConeSphere, TreeCylinder, TreeCylinderBox, TreeDisc, TreeEdge, TreeHalfTorus, TreeHollowBox, TreeOctahedron, TreePyramid, TreeQuadric, TreeQuadricCurve, TreeRectangle, TreeRectangleDisc, TreeSphere, TreeTetra, TreeTorus, TreeTriangle, TreeTubular, and TreeVertex.
Compute the gradient at a given point.
This function relies on the TreeNormal::Normal() function.
p | Point. |
Reimplemented from TreeNode.
Reimplemented in TreeConeSphere, and TreeVertex.
|
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.
p | Point. |
value | Returned field value. |
gradient | Returned gradient. |
Reimplemented from TreeNode.
Reimplemented in TreeVertex.
|
virtual |
Compute the Lipschitz constant on a segment.
s | Segment. |
Reimplemented from TreeElement.
Reimplemented in TreeBox, TreeEdge, TreeSphere, and TreeVertex.
|
virtual |
Compute the Lipschitz constant on a segment.
raystep | Segment. |
Reimplemented from TreeNode.
Reimplemented in TreeBox, TreeEdge, TreeSphere, and TreeVertex.
|
virtual |
Compute the Lipschitz constant inside a sphere.
s | The sphere. |
Reimplemented from TreeElement.