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

Box primitive. More...

#include <blobtree.h>

Inheritance diagram for TreeBox:
TreeNormal Box TreeElement TreeNode

Public Member Functions

 TreeBox (const Vector &, const Vector &, BlendCompact *)
 Create a axis aligned box element. More...
 
 TreeBox (const Box &, BlendCompact *)
 Create a axis aligned box element. More...
 
virtual ~TreeBox ()
 Destroys a box element.
 
double Intensity (const Vector &) const
 Compute the intensity at a given point. More...
 
virtual TreeNodeCopy () const
 Creates a deep copy of a box element.
 
int Memory () const
 Compute the size of a node.
 
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...
 
double K (const Box &) const
 Compute the local Lipschitz constant in a box. 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 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...
 
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

Box primitive.

This implementation is an optimized version of the general implementation of TreePolytope. The distance is assumed to be null inside the box. ,

Example of how to code a box primitive:

TreeNode* box=new TreeBox(Vector(1,0,-2),Vector(3,2,1),new BlendCubic(2.0,1.0));
Normalized blending functions (1-r2)3.
Definition: blend.h:114
TreeBox(const Vector &, const Vector &, BlendCompact *)
Create a axis aligned box element.
Definition: treebox.cpp:24
The generic nodes with some pure virtual functions.
Definition: blobtree.h:27
Box box
Bounding box of the node.
Definition: blobtree.h:29

Constructor & Destructor Documentation

◆ TreeBox() [1/2]

TreeBox::TreeBox ( const Vector a,
const Vector b,
BlendCompact blend 
)

Create a axis aligned box element.

Parameters
a,bVertices of the box.
blendFalloff function.

◆ TreeBox() [2/2]

TreeBox::TreeBox ( const Box b,
BlendCompact blend 
)

Create a axis aligned box element.

Parameters
blendFalloff function.
bBox.

Member Function Documentation

◆ Intensity()

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

Compute the intensity at a given point.

This function inlines the computation of the normal vector to the skeleton out of efficiency.

Parameters
pPoint.

Reimplemented from TreeNormal.

◆ K() [1/3]

double TreeBox::K ( const Box b) const
virtual

Compute the local Lipschitz constant in a box.

Reimplemented from TreeElement.

◆ K() [2/3]

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

Compute the Lipschitz constant on a segment.

Parameters
raystepSegment.

Reimplemented from TreeNormal.

◆ K() [3/3]

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

Compute the Lipschitz constant on a segment.

Parameters
sSegment.

Reimplemented from TreeNormal.