cheshirekow  v0.1.0
mpblocks::clarkson93::dynamic::SimplexBase< Traits > Struct Template Reference

A simplex is the convex hull of d+1 points in general position (IGP), i.e. they do not lie on the same hyperplane. More...

#include <mpblocks/clarkson93/dynamic/Simplex.h>

Inheritance diagram for mpblocks::clarkson93::dynamic::SimplexBase< Traits >:
mpblocks::clarkson93::BitMember< SimplexBits, simplex::NUM_BITS > mpblocks::clarkson93::BitMemberBase mpblocks::clarkson93::dynamic::DefaultSimplex< Traits >

Public Types

typedef HorizonRidge< Traits > HorizonRidge_t
 
typedef Traits::idx_t idx_t
 
enum  Orientation { INSIDE, OUTSIDE }
 
typedef Traits::Point Point
 
typedef Traits::PointDeref PointDeref
 
typedef Traits::PointRef PointRef
 
typedef Traits::Scalar Scalar
 
typedef Traits::Simplex Simplex
 
typedef SimplexBase< Traits > SimplexBase_t
 
typedef SimplexBase< Traits > This_t
 
typedef unsigned int uint
 

Public Member Functions

void calculateConstraint (uint ndim, PointDeref &deref)
 calculate the normal and offset of the constraint given the d vertices on it's base facet (does not compute orientation / sign) More...
 
bool isInfinite (PointRef antiOrigin)
 returns true if vertex[0] is the anti origin More...
 
bool isVisible (const Point &x)
 returns true if x is on the inside of the base facet (i.e. x is in the same half space as the simplex) More...
 
Scalar normalProjection (const Point &x)
 returns the distance of x to the base facet, used in walking the triangulation to x More...
 
void orientConstraint (const Point &x, Orientation orient=INSIDE)
 orient the constraint by ensuring that the point x satisfies it (i.e. $ n \cdot x \le c $ ) More...
 
- Public Member Functions inherited from mpblocks::clarkson93::BitMember< SimplexBits, simplex::NUM_BITS >
void addTo (SimplexBitssetBit)
 
bool isMemberOf (SimplexBitssetBit)
 
void removeFrom (SimplexBitssetBit)
 

Public Attributes

Scalar c
 offset of base facet inequality hyperplane More...
 
Point n
 normal vector of base facet More...
 
std::vector< Simplex * > neighbors
 simplices which share a facet More...
 
std::vector< PointRefvertices
 vertices of the simplex More...
 

Detailed Description

template<class Traits>
struct mpblocks::clarkson93::dynamic::SimplexBase< Traits >

A simplex is the convex hull of d+1 points in general position (IGP), i.e. they do not lie on the same hyperplane.

In order to implicitly maintain the convensions of Clarkson.compgeo93, we will order the vertices and facets of the simplex such that the i'th facet is opposite the i'th vertex (using the definition of clarkson), and thus is defined by the d vertices excluding the i'th. In addition, the i'th neighbor is the neighbor sharing the i'th facet and opposite the i'th vertex.

By the uniformity conventions of Clarkson.compgeo93, we'll reserve the 0 index for the 'peak' vertex, and the 'base' facet

Because the 0'th vertex is the 'peak' vertex and the 'peak' vertex of a boundary simplex in the extended triangulation is the anti origin, the address stored in vertices[0] will be equal to the address of Triangulation::origin for the triangulation which owns this simplex.

The simplex also stores a normal vector n and an offset c defining a linear inequality whose hyperplane is coincident to the 'base' facet and oriented such that n' x < c is the half-space containing the 'peak' vertex

Definition at line 79 of file Simplex.h.

Member Typedef Documentation

template<class Traits >
typedef HorizonRidge<Traits> mpblocks::clarkson93::dynamic::SimplexBase< Traits >::HorizonRidge_t

Definition at line 94 of file Simplex.h.

template<class Traits >
typedef Traits::idx_t mpblocks::clarkson93::dynamic::SimplexBase< Traits >::idx_t

Definition at line 90 of file Simplex.h.

template<class Traits >
typedef Traits::Point mpblocks::clarkson93::dynamic::SimplexBase< Traits >::Point

Definition at line 86 of file Simplex.h.

template<class Traits >
typedef Traits::PointDeref mpblocks::clarkson93::dynamic::SimplexBase< Traits >::PointDeref

Definition at line 89 of file Simplex.h.

template<class Traits >
typedef Traits::PointRef mpblocks::clarkson93::dynamic::SimplexBase< Traits >::PointRef

Definition at line 88 of file Simplex.h.

template<class Traits >
typedef Traits::Scalar mpblocks::clarkson93::dynamic::SimplexBase< Traits >::Scalar

Definition at line 85 of file Simplex.h.

template<class Traits >
typedef Traits::Simplex mpblocks::clarkson93::dynamic::SimplexBase< Traits >::Simplex

Definition at line 87 of file Simplex.h.

template<class Traits >
typedef SimplexBase<Traits> mpblocks::clarkson93::dynamic::SimplexBase< Traits >::SimplexBase_t

Definition at line 92 of file Simplex.h.

template<class Traits >
typedef SimplexBase<Traits> mpblocks::clarkson93::dynamic::SimplexBase< Traits >::This_t

Definition at line 93 of file Simplex.h.

template<class Traits >
typedef unsigned int mpblocks::clarkson93::dynamic::SimplexBase< Traits >::uint

Definition at line 84 of file Simplex.h.

Member Enumeration Documentation

Enumerator
INSIDE 
OUTSIDE 

Definition at line 96 of file Simplex.h.

Member Function Documentation

template<class Traits >
void mpblocks::clarkson93::dynamic::SimplexBase< Traits >::calculateConstraint ( uint  ndim,
PointDeref deref 
)

calculate the normal and offset of the constraint given the d vertices on it's base facet (does not compute orientation / sign)

Definition at line 38 of file Simplex.hpp.

template<class Traits >
bool mpblocks::clarkson93::dynamic::SimplexBase< Traits >::isInfinite ( PointRef  antiOrigin)

returns true if vertex[0] is the anti origin

Definition at line 102 of file Simplex.hpp.

template<class Traits >
bool mpblocks::clarkson93::dynamic::SimplexBase< Traits >::isVisible ( const Point x)

returns true if x is on the inside of the base facet (i.e. x is in the same half space as the simplex)

Definition at line 108 of file Simplex.hpp.

template<class Traits >
Traits::Scalar mpblocks::clarkson93::dynamic::SimplexBase< Traits >::normalProjection ( const Point x)

returns the distance of x to the base facet, used in walking the triangulation to x

Definition at line 95 of file Simplex.hpp.

template<class Traits >
void mpblocks::clarkson93::dynamic::SimplexBase< Traits >::orientConstraint ( const Point x,
Orientation  orient = INSIDE 
)

orient the constraint by ensuring that the point x satisfies it (i.e. $ n \cdot x \le c $ )

Definition at line 60 of file Simplex.hpp.

Member Data Documentation

template<class Traits >
Scalar mpblocks::clarkson93::dynamic::SimplexBase< Traits >::c

offset of base facet inequality hyperplane

Definition at line 106 of file Simplex.h.

template<class Traits >
Point mpblocks::clarkson93::dynamic::SimplexBase< Traits >::n

normal vector of base facet

Definition at line 105 of file Simplex.h.

template<class Traits >
std::vector<Simplex*> mpblocks::clarkson93::dynamic::SimplexBase< Traits >::neighbors

simplices which share a facet

Definition at line 101 of file Simplex.h.

template<class Traits >
std::vector<PointRef> mpblocks::clarkson93::dynamic::SimplexBase< Traits >::vertices

vertices of the simplex

Definition at line 100 of file Simplex.h.


The documentation for this struct was generated from the following files: