#include <IsoEx/Implicits/Implicit.hh>
Inheritance diagram for IsoEx::Implicit:
Public Member Functions | |
Constructor & destructor | |
Implicit () | |
constructor | |
virtual | ~Implicit () |
destructor | |
Abstract interface of implicit objects | |
virtual bool | is_inside (const OpenMesh::Vec3f &_point) const=0 |
Is the point _point inside or outside w.r.t. | |
virtual float | scalar_distance (const OpenMesh::Vec3f &_point) const=0 |
Returns the scalar distance value of _point. | |
virtual bool | directed_distance (const OpenMesh::Vec3f &_p0, const OpenMesh::Vec3f &_p1, OpenMesh::Vec3f &_point, OpenMesh::Vec3f &_normal, float &_distance) const=0 |
This method returns the directed distance of _p0 in the direction _p1-_p0. |
The three abstract virtual functions have to be overridden by derived classes.
|
This method returns the directed distance of _p0 in the direction _p1-_p0. The resulting intersection point (casting a ray from _p0 in direction (_p1-_p0)) is stored in _point, the corresponding normal vector at this point is stored in _normal, the distance value is stored in _distance (again negative distance means _p0 is inside). Since the ray intersection may fail (because of precision problems) it is returned whether an intersection was found or not. Implemented in IsoEx::CSG::Union, IsoEx::CSG::Intersection, IsoEx::CSG::Difference, and IsoEx::ImplicitSphere. |
|
Is the point _point inside or outside w.r.t. the implicit function? The result should be the same as scalar_distance(_point) < 0, but it can be implemented more efficiently. Implemented in IsoEx::CSG::Union, IsoEx::CSG::Intersection, IsoEx::CSG::Difference, and IsoEx::ImplicitSphere. |
|
Returns the scalar distance value of _point. Points inside the object should have negative distances, points outside positive distance. Implemented in IsoEx::CSG::Union, IsoEx::CSG::Intersection, IsoEx::CSG::Difference, and IsoEx::ImplicitSphere. |