Core data structure and utilities. More...
Classes | |
class | BoundingBox |
Simple class for representing a bounding box. More... | |
class | InvalidInputException |
Exception indicating invalid input passed to a function. More... | |
class | SolverException |
Exception indicating failure so solve an equation system. More... | |
class | AllocationException |
Exception indicating failure to allocate a new resource. More... | |
class | TopologyException |
Exception indicating a topological error has occurred. More... | |
class | IOException |
Exception indicating an error occurred while performing IO. More... | |
class | Matrix< Scalar, M, N > |
Base class for MxN matrix. More... | |
class | MemoryUsage |
A simple class to retrieve memory usage information. More... | |
class | Handle |
Base class for all entity handles types. More... | |
class | Vertex |
this type represents a vertex (internally it is basically an index) More... | |
class | Halfedge |
this type represents a halfedge (internally it is basically an index) More... | |
class | Edge |
this type represents an edge (internally it is basically an index) More... | |
class | Face |
this type represents a face (internally it is basically an index) More... | |
class | VertexProperty< T > |
Vertex property of type T. More... | |
class | HalfedgeProperty< T > |
Halfedge property of type T. More... | |
class | EdgeProperty< T > |
Edge property of type T. More... | |
class | FaceProperty< T > |
Face property of type T. More... | |
class | ObjectProperty< T > |
Object property of type T. More... | |
class | SurfaceMesh |
A halfedge data structure for polygonal meshes. More... | |
class | Timer |
A simple timer class. More... | |
struct | IOFlags |
Common IO flags for reading and writing. More... | |
Typedefs | |
template<typename Scalar , int M> | |
using | Vector = Matrix< Scalar, M, 1 > |
template specialization for Vector as Nx1 matrix More... | |
template<typename Scalar > | |
using | Mat4 = Matrix< Scalar, 4, 4 > |
template specialization for 4x4 matrices More... | |
template<typename Scalar > | |
using | Mat3 = Matrix< Scalar, 3, 3 > |
template specialization for 3x3 matrices More... | |
template<typename Scalar > | |
using | Mat2 = Matrix< Scalar, 2, 2 > |
template specialization for 2x2 matrices More... | |
using | vec2 = Vector< float, 2 > |
template specialization for a vector of two float values More... | |
using | dvec2 = Vector< double, 2 > |
template specialization for a vector of two double values More... | |
using | bvec2 = Vector< bool, 2 > |
template specialization for a vector of two bool values More... | |
using | ivec2 = Vector< int, 2 > |
template specialization for a vector of two int values More... | |
using | uvec2 = Vector< unsigned int, 2 > |
template specialization for a vector of two unsigned int values More... | |
using | vec3 = Vector< float, 3 > |
template specialization for a vector of three float values More... | |
using | dvec3 = Vector< double, 3 > |
template specialization for a vector of three double values More... | |
using | bvec3 = Vector< bool, 3 > |
template specialization for a vector of three bool values More... | |
using | ivec3 = Vector< int, 3 > |
template specialization for a vector of three int values More... | |
using | uvec3 = Vector< unsigned int, 3 > |
template specialization for a vector of three unsigned int values More... | |
using | vec4 = Vector< float, 4 > |
template specialization for a vector of four float values More... | |
using | dvec4 = Vector< double, 4 > |
template specialization for a vector of four double values More... | |
using | bvec4 = Vector< bool, 4 > |
template specialization for a vector of four bool values More... | |
using | ivec4 = Vector< int, 4 > |
template specialization for a vector of four int values More... | |
using | uvec4 = Vector< unsigned int, 4 > |
template specialization for a vector of four unsigned int values More... | |
using | mat2 = Mat2< float > |
template specialization for a 2x2 matrix of float values More... | |
using | dmat2 = Mat2< double > |
template specialization for a 2x2 matrix of double values More... | |
using | mat3 = Mat3< float > |
template specialization for a 3x3 matrix of float values More... | |
using | dmat3 = Mat3< double > |
template specialization for a 3x3 matrix of double values More... | |
using | mat4 = Mat4< float > |
template specialization for a 4x4 matrix of float values More... | |
using | dmat4 = Mat4< double > |
template specialization for a 4x4 matrix of double values More... | |
using | Scalar = float |
Scalar type. More... | |
using | Point = Vector< Scalar, 3 > |
Point type. More... | |
using | Normal = Vector< Scalar, 3 > |
Normal type. More... | |
using | Color = Vector< Scalar, 3 > |
Color type. More... | |
using | TexCoord = Vector< Scalar, 2 > |
Texture coordinate type. More... | |
Functions | |
template<typename Scalar , int M, int N> | |
std::ostream & | operator<< (std::ostream &os, const Matrix< Scalar, M, N > &m) |
output a matrix by printing its space-separated compontens More... | |
template<typename Scalar , int M, int N, int K> | |
Matrix< Scalar, M, N > | operator* (const Matrix< Scalar, M, K > &m1, const Matrix< Scalar, K, N > &m2) |
matrix-matrix multiplication More... | |
template<typename Scalar , int M, int N> | |
Matrix< Scalar, M, N > | cmult (const Matrix< Scalar, M, N > &m1, const Matrix< Scalar, M, N > &m2) |
component-wise multiplication More... | |
template<typename Scalar , int M, int N> | |
Matrix< Scalar, N, M > | transpose (const Matrix< Scalar, M, N > &m) |
transpose MxN matrix to NxM matrix More... | |
template<typename Scalar , int M, int N> | |
Matrix< Scalar, M, N > | operator+ (const Matrix< Scalar, M, N > &m1, const Matrix< Scalar, M, N > &m2) |
matrix addition: m1 + m2 More... | |
template<typename Scalar , int M, int N> | |
Matrix< Scalar, M, N > | operator- (const Matrix< Scalar, M, N > &m1, const Matrix< Scalar, M, N > &m2) |
matrix subtraction: m1 - m2 More... | |
template<typename Scalar , int M, int N> | |
Matrix< Scalar, M, N > | operator- (const Matrix< Scalar, M, N > &m) |
matrix negation: -m More... | |
template<typename Scalar , typename Scalar2 , int M, int N> | |
Matrix< Scalar, M, N > | operator* (const Scalar2 s, const Matrix< Scalar, M, N > &m) |
scalar multiplication of matrix: s*m More... | |
template<typename Scalar , typename Scalar2 , int M, int N> | |
Matrix< Scalar, M, N > | operator* (const Matrix< Scalar, M, N > &m, const Scalar2 s) |
scalar multiplication of matrix: m*s More... | |
template<typename Scalar , typename Scalar2 , int M, int N> | |
Matrix< Scalar, M, N > | operator/ (const Matrix< Scalar, M, N > &m, const Scalar2 s) |
divide matrix by scalar: m/s More... | |
template<typename Scalar , int M, int N> | |
Scalar | norm (const Matrix< Scalar, M, N > &m) |
compute the Frobenius norm of a matrix (or Euclidean norm of a vector) More... | |
template<typename Scalar , int M, int N> | |
Scalar | sqrnorm (const Matrix< Scalar, M, N > &m) |
compute the squared Frobenius norm of a matrix (or squared Euclidean norm of a vector) More... | |
template<typename Scalar , int M, int N> | |
Matrix< Scalar, M, N > | normalize (const Matrix< Scalar, M, N > &m) |
return a normalized copy of a matrix or a vector More... | |
template<typename Scalar , int M, int N> | |
Matrix< Scalar, M, N > | min (const Matrix< Scalar, M, N > &m1, const Matrix< Scalar, M, N > &m2) |
return component-wise minimum More... | |
template<typename Scalar , int M, int N> | |
Matrix< Scalar, M, N > | max (const Matrix< Scalar, M, N > &m1, const Matrix< Scalar, M, N > &m2) |
return component-wise maximum More... | |
template<typename Scalar > | |
Mat4< Scalar > | viewport_matrix (Scalar l, Scalar b, Scalar w, Scalar h) |
OpenGL viewport matrix with parameters left, bottom, width, height. More... | |
template<typename Scalar > | |
Mat4< Scalar > | inverse_viewport_matrix (Scalar l, Scalar b, Scalar w, Scalar h) |
inverse of OpenGL viewport matrix with parameters left, bottom, width, height More... | |
template<typename Scalar > | |
Mat4< Scalar > | frustum_matrix (Scalar l, Scalar r, Scalar b, Scalar t, Scalar n, Scalar f) |
OpenGL frustum matrix with parameters left, right, bottom, top, near, far. More... | |
template<typename Scalar > | |
Mat4< Scalar > | inverse_frustum_matrix (Scalar l, Scalar r, Scalar b, Scalar t, Scalar n, Scalar f) |
inverse of OpenGL frustum matrix with parameters left, right, bottom, top, near, far More... | |
template<typename Scalar > | |
Mat4< Scalar > | perspective_matrix (Scalar fovy, Scalar aspect, Scalar zNear, Scalar zFar) |
OpenGL perspective matrix with parameters field of view in y-direction, aspect ratio, and distance of near and far planes. More... | |
template<typename Scalar > | |
Mat4< Scalar > | inverse_perspective_matrix (Scalar fovy, Scalar aspect, Scalar zNear, Scalar zFar) |
inverse of perspective matrix More... | |
template<typename Scalar > | |
Mat4< Scalar > | ortho_matrix (Scalar left, Scalar right, Scalar bottom, Scalar top, Scalar zNear=-1, Scalar zFar=1) |
OpenGL orthogonal projection matrix with parameters left, right, bottom, top, near, far. More... | |
template<typename Scalar > | |
Mat4< Scalar > | look_at_matrix (const Vector< Scalar, 3 > &eye, const Vector< Scalar, 3 > ¢er, const Vector< Scalar, 3 > &up) |
OpenGL look-at camera matrix with parameters eye position, scene center, up-direction. More... | |
template<typename Scalar > | |
Mat4< Scalar > | translation_matrix (const Vector< Scalar, 3 > &t) |
OpenGL matrix for translation by vector t. More... | |
template<typename Scalar > | |
Mat4< Scalar > | scaling_matrix (const Scalar s) |
OpenGL matrix for scaling x/y/z by s. More... | |
template<typename Scalar > | |
Mat4< Scalar > | scaling_matrix (const Vector< Scalar, 3 > &s) |
OpenGL matrix for scaling x/y/z by the components of s. More... | |
template<typename Scalar > | |
Mat4< Scalar > | rotation_matrix_x (Scalar angle) |
OpenGL matrix for rotation around x-axis by given angle (in degrees) More... | |
template<typename Scalar > | |
Mat4< Scalar > | rotation_matrix_y (Scalar angle) |
OpenGL matrix for rotation around y-axis by given angle (in degrees) More... | |
template<typename Scalar > | |
Mat4< Scalar > | rotation_matrix_z (Scalar angle) |
OpenGL matrix for rotation around z-axis by given angle (in degrees) More... | |
template<typename Scalar > | |
Mat4< Scalar > | rotation_matrix (const Vector< Scalar, 3 > &axis, Scalar angle) |
OpenGL matrix for rotation around given axis by given angle (in degrees) More... | |
template<typename Scalar > | |
Mat4< Scalar > | rotation_matrix (const Vector< Scalar, 4 > &quat) |
OpenGL matrix for rotation specified by unit quaternion. More... | |
template<typename Scalar > | |
Mat3< Scalar > | linear_part (const Mat4< Scalar > &m) |
return upper 3x3 matrix from given 4x4 matrix, corresponding to the linear part of an affine transformation More... | |
template<typename Scalar > | |
Vector< Scalar, 3 > | projective_transform (const Mat4< Scalar > &m, const Vector< Scalar, 3 > &v) |
projective transformation of 3D vector v by a 4x4 matrix m: add 1 as 4th component of v, multiply m*v, divide by 4th component More... | |
template<typename Scalar > | |
Vector< Scalar, 3 > | affine_transform (const Mat4< Scalar > &m, const Vector< Scalar, 3 > &v) |
affine transformation of 3D vector v by a 4x4 matrix m: add 1 as 4th component of v, multiply m*v, do NOT divide by 4th component More... | |
template<typename Scalar > | |
Vector< Scalar, 3 > | linear_transform (const Mat4< Scalar > &m, const Vector< Scalar, 3 > &v) |
linear transformation of 3D vector v by a 4x4 matrix m: transform vector by upper-left 3x3 submatrix of m More... | |
template<typename Scalar > | |
Mat4< Scalar > | inverse (const Mat4< Scalar > &m) |
return the inverse of a 4x4 matrix More... | |
template<typename Scalar > | |
Scalar | determinant (const Mat3< Scalar > &m) |
return determinant of 3x3 matrix More... | |
template<typename Scalar > | |
Mat3< Scalar > | inverse (const Mat3< Scalar > &m) |
return the inverse of a 3x3 matrix More... | |
template<typename Scalar > | |
bool | symmetric_eigendecomposition (const Mat3< Scalar > &m, Scalar &eval1, Scalar &eval2, Scalar &eval3, Vector< Scalar, 3 > &evec1, Vector< Scalar, 3 > &evec2, Vector< Scalar, 3 > &evec3) |
compute eigenvector/eigenvalue decomposition of a 3x3 matrix More... | |
template<typename Scalar , int N> | |
std::istream & | operator>> (std::istream &is, Vector< Scalar, N > &vec) |
read the space-separated components of a vector from a stream More... | |
template<typename Scalar , int N> | |
std::ostream & | operator<< (std::ostream &os, const Vector< Scalar, N > &vec) |
output a vector by printing its space-separated compontens More... | |
template<typename Scalar , int N> | |
Scalar | dot (const Vector< Scalar, N > &v0, const Vector< Scalar, N > &v1) |
compute the dot product of two vectors More... | |
template<typename Scalar , int N> | |
Scalar | distance (const Vector< Scalar, N > &v0, const Vector< Scalar, N > &v1) |
compute the Euclidean distance between two points More... | |
template<typename Scalar > | |
Vector< Scalar, 2 > | perp (const Vector< Scalar, 2 > &v) |
compute perpendicular vector (rotate vector counter-clockwise by 90 degrees) More... | |
template<typename Scalar > | |
Vector< Scalar, 3 > | cross (const Vector< Scalar, 3 > &v0, const Vector< Scalar, 3 > &v1) |
compute the cross product of two vectors (only valid for 3D vectors) More... | |
std::ostream & | operator<< (std::ostream &os, Vertex v) |
output a Vertex to a stream More... | |
std::ostream & | operator<< (std::ostream &os, Halfedge h) |
output a Halfedge to a stream More... | |
std::ostream & | operator<< (std::ostream &os, Edge e) |
output an Edge to a stream More... | |
std::ostream & | operator<< (std::ostream &os, Face f) |
output a Face to a stream More... | |
static Matrix< Scalar, M, N > | identity () |
return identity matrix (only for square matrices, N==M) More... | |
Core data structure and utilities.
using Scalar = float |
Scalar type.
template specialization for a vector of two unsigned int values
template specialization for a vector of three unsigned int values
template specialization for a vector of four unsigned int values
Vector< Scalar, 3 > pmp::affine_transform | ( | const Mat4< Scalar > & | m, |
const Vector< Scalar, 3 > & | v | ||
) |
affine transformation of 3D vector v by a 4x4 matrix m: add 1 as 4th component of v, multiply m*v, do NOT divide by 4th component
Matrix< Scalar, M, N > pmp::cmult | ( | const Matrix< Scalar, M, N > & | m1, |
const Matrix< Scalar, M, N > & | m2 | ||
) |
component-wise multiplication
|
inline |
compute the cross product of two vectors (only valid for 3D vectors)
compute the Euclidean distance between two points
compute the dot product of two vectors
OpenGL frustum matrix with parameters left, right, bottom, top, near, far.
return identity matrix (only for square matrices, N==M)
identity matrix (work only for square matrices)
Mat4< Scalar > pmp::inverse_frustum_matrix | ( | Scalar | l, |
Scalar | r, | ||
Scalar | b, | ||
Scalar | t, | ||
Scalar | n, | ||
Scalar | f | ||
) |
inverse of OpenGL frustum matrix with parameters left, right, bottom, top, near, far
Mat4< Scalar > pmp::inverse_perspective_matrix | ( | Scalar | fovy, |
Scalar | aspect, | ||
Scalar | zNear, | ||
Scalar | zFar | ||
) |
inverse of perspective matrix
inverse of OpenGL viewport matrix with parameters left, bottom, width, height
return upper 3x3 matrix from given 4x4 matrix, corresponding to the linear part of an affine transformation
Vector< Scalar, 3 > pmp::linear_transform | ( | const Mat4< Scalar > & | m, |
const Vector< Scalar, 3 > & | v | ||
) |
linear transformation of 3D vector v by a 4x4 matrix m: transform vector by upper-left 3x3 submatrix of m
Mat4< Scalar > pmp::look_at_matrix | ( | const Vector< Scalar, 3 > & | eye, |
const Vector< Scalar, 3 > & | center, | ||
const Vector< Scalar, 3 > & | up | ||
) |
OpenGL look-at camera matrix with parameters eye position, scene center, up-direction.
|
inline |
return component-wise maximum
|
inline |
return component-wise minimum
compute the Frobenius norm of a matrix (or Euclidean norm of a vector)
return a normalized copy of a matrix or a vector
Matrix< Scalar, M, N > pmp::operator* | ( | const Matrix< Scalar, M, K > & | m1, |
const Matrix< Scalar, K, N > & | m2 | ||
) |
matrix-matrix multiplication
scalar multiplication of matrix: m*s
scalar multiplication of matrix: s*m
|
inline |
matrix addition: m1 + m2
matrix negation: -m
|
inline |
matrix subtraction: m1 - m2
divide matrix by scalar: m/s
output a matrix by printing its space-separated compontens
output a vector by printing its space-separated compontens
|
inline |
output a Halfedge to a stream
read the space-separated components of a vector from a stream
Mat4< Scalar > pmp::ortho_matrix | ( | Scalar | left, |
Scalar | right, | ||
Scalar | bottom, | ||
Scalar | top, | ||
Scalar | zNear = -1 , |
||
Scalar | zFar = 1 |
||
) |
OpenGL orthogonal projection matrix with parameters left, right, bottom, top, near, far.
compute perpendicular vector (rotate vector counter-clockwise by 90 degrees)
OpenGL perspective matrix with parameters field of view in y-direction, aspect ratio, and distance of near and far planes.
Vector< Scalar, 3 > pmp::projective_transform | ( | const Mat4< Scalar > & | m, |
const Vector< Scalar, 3 > & | v | ||
) |
projective transformation of 3D vector v by a 4x4 matrix m: add 1 as 4th component of v, multiply m*v, divide by 4th component
OpenGL matrix for rotation around given axis by given angle (in degrees)
OpenGL matrix for rotation specified by unit quaternion.
OpenGL matrix for rotation around x-axis by given angle (in degrees)
OpenGL matrix for rotation around y-axis by given angle (in degrees)
OpenGL matrix for rotation around z-axis by given angle (in degrees)
OpenGL matrix for scaling x/y/z by the components of s.
compute the squared Frobenius norm of a matrix (or squared Euclidean norm of a vector)
bool pmp::symmetric_eigendecomposition | ( | const Mat3< Scalar > & | m, |
Scalar & | eval1, | ||
Scalar & | eval2, | ||
Scalar & | eval3, | ||
Vector< Scalar, 3 > & | evec1, | ||
Vector< Scalar, 3 > & | evec2, | ||
Vector< Scalar, 3 > & | evec3 | ||
) |
compute eigenvector/eigenvalue decomposition of a 3x3 matrix
OpenGL matrix for translation by vector t.
transpose MxN matrix to NxM matrix