Signed Distance Fields 1.0
SDFPlanarSymmetry2 Class Reference

Planar symmetry operator. More...

#include <sdf.h>

Inheritance diagram for SDFPlanarSymmetry2:
SDFUnary2 Axis2 SDFNode2

Public Member Functions

 SDFPlanarSymmetry2 (SDFNode2 *, const Vector2 &, const Vector2 &, bool=false)
 Create a planar symmetry node.
 
virtual ~SDFPlanarSymmetry2 ()
 Destructor.
 
double Signed (const Vector2 &) const
 Compute the signed distance function.
 
virtual int Memory () const
 Compute the memory used by this node.
 
virtual SDFNode2Copy () const
 Deep copy.
 
- Public Member Functions inherited from SDFUnary2
 SDFUnary2 (SDFNode2 *)
 Create an unary planar node.
 
virtual ~SDFUnary2 ()
 Destroy the sub-tree.
 
virtual QString GetCostShader (PrimitiveManager *, std::list< QString > *, bool *) const
 Compute the GLSL code to compute the cost of a call to sdf.
 
virtual void ComputeCostSigned (const Vector2 &)
 Compute the number of reccursive calls to Signed().
 
virtual double K () const
 Return the Lipschitz constant of the node.
 
virtual int Nodes () const
 Compute the number of nodes in the sub-tree.
 
- Public Member Functions inherited from SDFNode2
 SDFNode2 ()
 Create a generic node.
 
virtual ~SDFNode2 ()
 Destructor.
 
virtual Vector2 Gradient (const Vector2 &) const
 Compute the gradient of the field.
 
virtual bool Inside (const Vector2 &) const
 Check if a point is inside or outside.
 
virtual QString GetShader (PrimitiveManager *, std::list< QString > *, bool *=nullptr) const
 Compute the GLSL code to render the node.
 
virtual QString GetGradientShader (PrimitiveManager *, std::list< QString > *, bool *=nullptr) const
 Compute the GLSL code to compute the gradient the sdf.
 
Box2 GetBox () const
 Return the bounding box of the node.
 

Protected Attributes

bool alone
 To compute the symmetric alone or not.
 
- Protected Attributes inherited from SDFUnary2
SDFNode2e = nullptr
 Sub-tree.
 
- Protected Attributes inherited from SDFNode2
Box2 box = Box2::Infinity
 Box bounding the surface.
 
double k = 1.0
 Lipschitz constant.
 
int cost = 1
 Cost of the node.
 

Additional Inherited Members

- Static Protected Attributes inherited from SDFNode2
static constexpr double Epsilon = 0.01
 Small constant used for bounding volumes.
 

Detailed Description

Planar symmetry operator.

Author
Lucie Fournier

Constructor & Destructor Documentation

◆ SDFPlanarSymmetry2()

SDFPlanarSymmetry2::SDFPlanarSymmetry2 ( SDFNode2 * n,
const Vector2 & a,
const Vector2 & b,
bool alone = false )
explicit

Create a planar symmetry node.

Parameters
nSub-tree.
a,bPoints defining the symmetry axis.
aloneFlag indicating whether the object is symmetrically replicated (true) or only mirrored (false).

Member Function Documentation

◆ Signed()

double SDFPlanarSymmetry2::Signed ( const Vector2 & p) const
virtual

Compute the signed distance function.

This operator preserves the Euclidean distance.

Parameters
pPoint.

Reimplemented from SDFUnary2.