IsoEx
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Modules Pages
Public Types | Public Member Functions | List of all members
IsoEx::CSG::Difference< Vec3 > Class Template Reference
Inheritance diagram for IsoEx::CSG::Difference< Vec3 >:
IsoEx::Implicit< Vec3 >

Public Types

typedef Vec3::value_type real
 
- Public Types inherited from IsoEx::Implicit< Vec3 >
typedef Vec3::value_type real
 

Public Member Functions

 Difference (const Implicit< Vec3 > &_implicit1, const Implicit< Vec3 > &_implicit2)
 
Mandatory interface of implicit objects, see also IsoEx::Implicit.
bool is_inside (const Vec3 &_p) const
 
real scalar_distance (const Vec3 &_p) const
 
bool directed_distance (const Vec3 &_p0, const Vec3 &_p1, Vec3 &_point, Vec3 &_normal, real &_distance) const
 
- Public Member Functions inherited from IsoEx::Implicit< Vec3 >
 Implicit ()
 constructor
 
virtual ~Implicit ()
 destructor
 

Detailed Description

template<class Vec3>
class IsoEx::CSG::Difference< Vec3 >

This class builds a CSG difference of two other implicits.

See also
IsoEx::Implicit

Constructor & Destructor Documentation

template<class Vec3 >
IsoEx::CSG::Difference< Vec3 >::Difference ( const Implicit< Vec3 > &  _implicit1,
const Implicit< Vec3 > &  _implicit2 
)
inline

Constructor: given the two implicit objects, builds _implicit1 minus _implicit2.

Member Function Documentation

template<class Vec3 >
bool IsoEx::CSG::Difference< Vec3 >::directed_distance ( const Vec3 &  _p0,
const Vec3 &  _p1,
Vec3 &  _point,
Vec3 &  _normal,
real &  _distance 
) const
inlinevirtual

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.

Implements IsoEx::Implicit< Vec3 >.

template<class Vec3 >
bool IsoEx::CSG::Difference< Vec3 >::is_inside ( const Vec3 &  _point) const
inlinevirtual

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.

Implements IsoEx::Implicit< Vec3 >.

template<class Vec3 >
real IsoEx::CSG::Difference< Vec3 >::scalar_distance ( const Vec3 &  _point) const
inlinevirtual

Returns the scalar distance value of _point. Points inside the object should have negative distances, points outside positive distance.

Implements IsoEx::Implicit< Vec3 >.


The documentation for this class was generated from the following file: