Blob 1.0
|
Segment skeletal primitive. More...
#include <blobtree.h>
Public Member Functions | |
TreeEdge (const Vector &, const Vector &, BlendCompact *) | |
Create a segment element. More... | |
TreeEdge (const Segment &, BlendCompact *) | |
Create a segment element. More... | |
virtual | ~TreeEdge () |
Destroy an edge element. | |
double | Intensity (const Vector &) const |
Directly compute the intensity at a given point in space. More... | |
double | R (const Vector &) const |
Compute the squared distance to the skeleton. More... | |
virtual TreeNode * | Copy () const |
Creates a deep copy of the node. | |
int | Memory () const |
Compute the size of a node. | |
TreeNode * | Translate (const Vector &) |
Translates a vertex node in the BlobTree. More... | |
TreeNode * | Rotate (const Matrix &) |
Rotates an edge node in the BlobTree. More... | |
TreeNode * | Scale (const Vector &) |
Scales an edge skeletal element by a scaling vector. More... | |
double | K (const Ray &) const |
Returns a local Lipschitz constant along a ray. 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... | |
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 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... | |
TreeNode * | Cut (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 TreeNode * | Blend (TreeNode *) |
Insert a blending node that blends the old and the new sub-tree together. More... | |
virtual TreeNode * | Union (TreeNode *) |
Insert a union node that unions the old and the new sub-tree together. More... | |
virtual TreeNode * | Difference (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... | |
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. | |
Segment skeletal primitive.
Example of how to code a segment primitive:
TreeEdge::TreeEdge | ( | const Vector & | a, |
const Vector & | b, | ||
BlendCompact * | blend | ||
) |
Create a segment element.
a,b | End vertices of edge. |
blend | Falloff function. |
TreeEdge::TreeEdge | ( | const Segment & | s, |
BlendCompact * | blend | ||
) |
Create a segment element.
s | Segment. |
blend | Falloff function. |
|
virtual |
Directly compute the intensity at a given point in space.
This function uses an optimized implementation that outperforms the standard computation of the normal vector between a vertex in space and its projection onto the skeleton.
p | Point. |
Reimplemented from TreeNormal.
|
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.
ray | The ray. |
Check the intersection with the box, then with the capsule.
Reimplemented from TreeElement.
|
virtual |
Compute the Lipschitz constant on a segment.
raystep | Segment. |
Reimplemented from TreeNormal.
|
virtual |
|
virtual |
Rotates an edge node in the BlobTree.
Instead of inserting a rotation node in the tree, simply updates the vertices of the edge.
r | Rotation matrix. |
Reimplemented from TreeNode.
Scales an edge skeletal element by a scaling vector.
The algorithm performs as follows. If the scaling is the same in all directions, then directly scale he skeleton and the blending function. Otherwise, insert a scaling node.
s | Scaling vector. |
Reimplemented from TreeNode.