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

Hollow sphere primitive. More...

#include <blobtree.h>

Inheritance diagram for TreeBubble:
TreeSphere TreeNormal Sphere TreeElement TreeNode

Public Member Functions

 TreeBubble (const Vector &, const double &r, BlendCompact *)
 Create a hollow sphere skeletal element. More...
 
virtual ~TreeBubble ()
 Destroys a bubble element.
 
double Intensity (const Vector &) const
 Compute the intensity at a given point. More...
 
virtual TreeNodeCopy () const
 Create a deep copy of sphere element.
 
int Memory () const
 Compute the size of a node.
 
TreeNodeTranslate (const Vector &)
 Translate a buble node. More...
 
TreeNodeRotate (const Matrix &)
 Rotates a hollow sphere element. More...
 
- Public Member Functions inherited from TreeSphere
 TreeSphere (const Vector &, const double &, BlendCompact *)
 Create a sphere skeleton element. More...
 
virtual ~TreeSphere ()
 Destroys a sphere element.
 
double K (const Ray &) const
 Returns a local Lipschitz constant along a ray. More...
 
double K (const RayStep &) const
 Compute the Lipschitz constant on a segment. More...
 
double K (const Segment &) const
 Compute the Lipschitz constant on a segment. More...
 
TreeNodeScale (const double &)
 Scale a sphere primitive. 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 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...
 
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 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
 Computes the normal vector between a point and the bubble. 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

Hollow sphere primitive.

Bubbles are hollow spheres, thus surfacic skeletal primitives. Contrary to vertex elements whose field function varies everywhere in space and contrary to sphere elements whose field function is maximum inside the sphere, the field function inside the bubble is null.

Example of how to code a sphere primitive:

TreeNode *bubble=new TreeBubble(Vector(1,0,-2),6.0,new BlendCubic(2.0,1.0));
Normalized blending functions (1-r2)3.
Definition: blend.h:114
TreeBubble(const Vector &, const double &r, BlendCompact *)
Create a hollow sphere skeletal element.
Definition: treebubble.cpp:27
The generic nodes with some pure virtual functions.
Definition: blobtree.h:27

,

Constructor & Destructor Documentation

◆ TreeBubble()

TreeBubble::TreeBubble ( const Vector c,
const double &  r,
BlendCompact blend 
)
explicit

Create a hollow sphere skeletal element.

Parameters
cCenter of the sphere.
rRadius.
blendFalloff function.

Member Function Documentation

◆ Intensity()

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

Compute the intensity at a given point.

Parameters
pPoint.

Reimplemented from TreeSphere.

◆ Normal()

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

Computes the normal vector between a point and the bubble.

Parameters
pPoint.

Reimplemented from TreeSphere.

◆ Rotate()

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

Rotates a hollow sphere element.

Instead of inserting a rotation node in the tree, simply updates the center of the sphere as well as its internal parameters.

Parameters
rRotation matrix.

Reimplemented from TreeSphere.

◆ Translate()

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

Translate a buble node.

Parameters
tTranslation vector.

Reimplemented from TreeSphere.