Blob 1.0
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.
 
virtual ~TreeBubble ()
 Destroys a bubble element.
 
double Intensity (const Vector &) const
 Compute the intensity at a given point.
 
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.
 
TreeNodeRotate (const Matrix &)
 Rotates a hollow sphere element.
 
- Public Member Functions inherited from TreeSphere
 TreeSphere (const Vector &, const double &, BlendCompact *)
 Create a sphere skeleton element.
 
 TreeSphere (const double &, BlendCompact *)
 Create a sphere skeleton element, centered at origin.
 
virtual ~TreeSphere ()
 Destroys a sphere element.
 
double Intensity (const Vector &) const
 Compute the intensity at a given point.
 
double Omega (const Vector &) const
 
int Memory () const
 Compute the size of a node.
 
double K (const Ray &) const
 Returns a local Lipschitz constant along a ray.
 
double K (const RayStep &) const
 Compute the Lipschitz constant on a segment.
 
double K (const Segment &) const
 Compute the Lipschitz constant on a segment.
 
TreeNodeTranslate (const Vector &)
 Translates a sphere primitive.
 
TreeNodeRotate (const Matrix &)
 Rotates a sphere element.
 
TreeNodeScale (const double &)
 Scale a sphere primitive.
 
- 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.
 
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 double K (const Sphere &) const
 Compute the Lipschitz constant inside a sphere.
 
- Public Member Functions inherited from TreeElement
 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.
 
TreeNodeCut (const Box &) const
 Cuts the node to simplify its structure inside a box.
 
- 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.
 
virtual TreeNodeUnion (TreeNode *)
 Insert a union node that unions the old and the new sub-tree together.
 
virtual TreeNodeDifference (TreeNode *)
 Insert a difference node.
 
virtual TreeNodeScale (const Vector &)
 Insert a scaling node.
 
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.
 

Protected Member Functions

Vector Normal (const Vector &) const
 Computes the normal vector between a point and the bubble.
 
- Protected Member Functions inherited from TreeSphere
Vector Normal (const Vector &) const
 Computes the normal vector between a point and the sphere.
 

Additional Inherited Members

- Protected Attributes inherited from TreeElement
BlendCompactblend = nullptr
 Falloff function.
 
- 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:91
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:28

,

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 TreeNormal.

◆ Translate()

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

Translate a buble node.

Parameters
tTranslation vector.

Reimplemented from TreeNode.

◆ 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 TreeNode.

◆ Normal()

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

Computes the normal vector between a point and the bubble.

Parameters
pPoint.

Implements TreeNormal.