cgv
|
dimension independent implementation of quadric error metrics More...
#include <qem.h>
Public Member Functions | |
qem (int d=-1) | |
standard constructor initializes qem based on dimension | |
qem (const vec< T > &p, const vec< T > &n) | |
construct from point and normal | |
qem (const vec< T > &n, T d) | |
construct from normal and distance to origin | |
void | set (const vec< T > &n, T d) |
set from normal and distance to origin | |
unsigned | dim () const |
number of elements | |
qem< T > & | operator= (const qem< T > &v) |
assignment of a vector v | |
const T & | scalar_part () const |
return the scalar part of the qem | |
vec< T > | vector_part () const |
return the vector part of the qem | |
mat< T > | matrix_part () const |
return matrix part | |
T | evaluate (const vec< T > &p) const |
evaluate the quadric error metric at given location | |
vec< T > | minarg (const vec< T > &p_ref, T relative_epsilon, T max_distance=-1, T epsilon=1e-10) const |
template<typename S > | |
qem< T > & | operator+= (const qem< S > &v) |
in place qem addition | |
template<typename S > | |
qem< T > & | operator-= (const qem< S > &v) |
in place qem subtraction | |
template<typename S > | |
const qem< T > | operator+ (const qem< S > &v) const |
qem addition | |
template<typename S > | |
qem< T > | operator- (const qem< S > &v) const |
qem subtraction | |
qem< T > | operator- (void) const |
negates the qem | |
qem< T > | operator* (const T &s) const |
multiplication with scalar s | |
qem< T > | operator/ (const T &s) const |
divides vector by scalar s | |
void | resize (unsigned d) |
resize the vector | |
template<typename S > | |
bool | operator== (const qem< S > &v) const |
test for equality | |
template<typename S > | |
bool | operator!= (const qem< S > &v) const |
test for inequality | |
unsigned | size () const |
number of elements | |
void | set (const T &c0, const T &c1) |
set entries of a 2d vector | |
void | set (const T &c0, const T &c1, const T &c2) |
set entries of a 3d vector | |
void | set (const T &c0, const T &c1, const T &c2, const T &c3) |
set entries of a 4d vector | |
void | set_extern_data (unsigned dim, T *data) |
set data pointer to an external data array | |
operator T* () | |
cast into non const array | |
operator const T * () const | |
cast into const array | |
T & | operator() (unsigned i) |
element accessor | |
const T & | operator() (unsigned i) const |
const element accessor | |
T & | first () |
element accessor for the first element | |
const T & | first () const |
const element accessor for the first element | |
T & | last () |
element accessor for the flast element | |
const T & | last () const |
const element accessor for the last element | |
T & | x () |
element accessor for the first element | |
const T & | x () const |
const element accessor for the first element | |
T & | y () |
element accessor for the second element | |
const T & | y () const |
const element accessor for the second element | |
T & | z () |
element accessor for the third element | |
const T & | z () const |
const element accessor for the third element | |
T & | w () |
element accessor for the fourth element | |
const T & | w () const |
const element accessor for the fourth element | |
vec< T > & | operator+= (const T &s) |
in place addition of a scalar s | |
template<typename S > | |
vec< T > & | operator+= (const vec< S > &v) |
in place vector addition | |
vec< T > & | operator-= (const T &s) |
in place subtraction by scalar s | |
template<typename S > | |
vec< T > & | operator-= (const vec< S > &v) |
in place vector subtraction | |
vec< T > & | operator*= (const T &s) |
in place multiplication with s | |
template<typename S > | |
vec< T > & | operator*= (const vec< S > &v) |
in place componentwise vector multiplication | |
vec< T > & | operator/= (const T &s) |
in place division by scalar s | |
template<typename S > | |
vec< T > & | operator/= (const vec< S > &v) |
in place componentwise vector division | |
template<typename S > | |
const vec< T > | operator+ (const vec< S > &v) const |
vector addition | |
const vec< T > | operator+ (const T &s) const |
componentwise addition of scalar | |
const vec< T > | operator- (const T &s) const |
componentwise subtraction of scalar | |
template<typename S > | |
vec< T > | operator- (const vec< S > &v) const |
vector subtraction | |
template<typename S > | |
const vec< T > | operator* (const vec< S > &v) const |
componentwise vector multiplication | |
template<typename S > | |
const vec< T > | operator/ (const vec< S > &v) const |
componentwise vector division | |
void | fill (const T &v) |
fill elements of vector with scalar v | |
void | zeros () |
fill the vector with zeros | |
void | zeros (unsigned n) |
resize the vector to size n and fills the vector with zeros | |
void | ones () |
fill the vector with ones | |
void | ones (unsigned n) |
resize the vector to size n and fills thevector with ones | |
template<typename S > | |
bool | operator== (const vec< S > &v) const |
test for equality | |
template<typename S > | |
bool | operator!= (const vec< S > &v) const |
test for inequality | |
T | length () const |
length of the vector L2-Norm | |
void | abs () |
componentwise absolute values | |
void | ceil () |
ceil componentwise | |
void | floor () |
floor componentwise | |
void | round () |
round componentwise | |
T | sqr_length () const |
square length of vector | |
void | normalize () |
normalize the vector using the L2-Norm | |
vec< T > | sub_vec (unsigned ifrom, unsigned size) const |
extracts sub vector beginning at index ifrom with given size | |
void | copy (unsigned ifrom, unsigned s, vec< T > &subvec) const |
copy sub vector beginning at index ifrom with given size s into subvec | |
void | paste (unsigned ifrom, const vec< T > &v) |
paste v into vector beginning at index pos ifrom | |
Protected Attributes | |
T * | _data |
pointer to _data storage | |
unsigned | _size |
number or elements | |
bool | data_is_external |
store whether data is not owned by vector | |
dimension independent implementation of quadric error metrics
|
inline |
compute point that minimizes distance to qem and is inside the sphere of radius max_distance around p_ref. If max_distance is -1, no sphere inclusion test is performed. relative_epsilon gives the absolute value of the fraction betweenan eigenvalue and the largest eigenvalue before it is set to zero. epsilon is a global limit on the absolute value of a singular value before accepted as non zero.