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 | GLException |
Exception indicating an OpenGL error. More... | |
class | Matrix< Scalar, M, N > |
Generic class for \( M \times N \) matrices. More... | |
class | MemoryUsage |
A simple class to retrieve memory usage information. More... | |
class | StopWatch |
A simple stop watch class. 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 | SurfaceMesh |
A class for representing polygon surface meshes. More... | |
Typedefs | |
template<typename Scalar , int M> | |
using | Vector = Matrix< Scalar, M, 1 > |
template specialization for Vector as Nx1 matrix | |
template<typename Scalar > | |
using | Mat4 = Matrix< Scalar, 4, 4 > |
template specialization for 4x4 matrices | |
template<typename Scalar > | |
using | Mat3 = Matrix< Scalar, 3, 3 > |
template specialization for 3x3 matrices | |
template<typename Scalar > | |
using | Mat2 = Matrix< Scalar, 2, 2 > |
template specialization for 2x2 matrices | |
using | vec2 = Vector< float, 2 > |
template specialization for a vector of two float values | |
using | dvec2 = Vector< double, 2 > |
template specialization for a vector of two double values | |
using | bvec2 = Vector< bool, 2 > |
template specialization for a vector of two bool values | |
using | ivec2 = Vector< int, 2 > |
template specialization for a vector of two int values | |
using | uvec2 = Vector< unsigned int, 2 > |
template specialization for a vector of two unsigned int values | |
using | vec3 = Vector< float, 3 > |
template specialization for a vector of three float values | |
using | dvec3 = Vector< double, 3 > |
template specialization for a vector of three double values | |
using | bvec3 = Vector< bool, 3 > |
template specialization for a vector of three bool values | |
using | ivec3 = Vector< int, 3 > |
template specialization for a vector of three int values | |
using | uvec3 = Vector< unsigned int, 3 > |
template specialization for a vector of three unsigned int values | |
using | vec4 = Vector< float, 4 > |
template specialization for a vector of four float values | |
using | dvec4 = Vector< double, 4 > |
template specialization for a vector of four double values | |
using | bvec4 = Vector< bool, 4 > |
template specialization for a vector of four bool values | |
using | ivec4 = Vector< int, 4 > |
template specialization for a vector of four int values | |
using | uvec4 = Vector< unsigned int, 4 > |
template specialization for a vector of four unsigned int values | |
using | mat2 = Mat2< float > |
template specialization for a 2x2 matrix of float values | |
using | dmat2 = Mat2< double > |
template specialization for a 2x2 matrix of double values | |
using | mat3 = Mat3< float > |
template specialization for a 3x3 matrix of float values | |
using | dmat3 = Mat3< double > |
template specialization for a 3x3 matrix of double values | |
using | mat4 = Mat4< float > |
template specialization for a 4x4 matrix of float values | |
using | dmat4 = Mat4< double > |
template specialization for a 4x4 matrix of double values | |
using | Scalar = float |
Scalar type. | |
using | Point = Vector< Scalar, 3 > |
Point type. | |
using | Normal = Vector< Scalar, 3 > |
Normal type. | |
using | Color = Vector< Scalar, 3 > |
Color type. | |
using | TexCoord = Vector< Scalar, 2 > |
Texture coordinate type. | |
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 components | |
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 | |
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 | |
template<typename Scalar , int M, int N> | |
Matrix< Scalar, N, M > | transpose (const Matrix< Scalar, M, N > &m) |
transpose MxN matrix to NxM matrix | |
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 | |
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 | |
template<typename Scalar , int M, int N> | |
Matrix< Scalar, M, N > | operator- (const Matrix< Scalar, M, N > &m) |
matrix negation: -m | |
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 | |
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 | |
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 | |
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) | |
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) | |
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 | |
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 | |
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 | |
template<typename Scalar > | |
Mat4< Scalar > | viewport_matrix (Scalar l, Scalar b, Scalar w, Scalar h) |
OpenGL viewport matrix with parameters left, bottom, width, height. | |
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 | |
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. | |
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 | |
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. | |
template<typename Scalar > | |
Mat4< Scalar > | inverse_perspective_matrix (Scalar fovy, Scalar aspect, Scalar zNear, Scalar zFar) |
inverse of perspective matrix | |
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. | |
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. | |
template<typename Scalar > | |
Mat4< Scalar > | translation_matrix (const Vector< Scalar, 3 > &t) |
OpenGL matrix for translation by vector t. | |
template<typename Scalar > | |
Mat4< Scalar > | scaling_matrix (const Scalar s) |
OpenGL matrix for scaling x/y/z by s. | |
template<typename Scalar > | |
Mat4< Scalar > | scaling_matrix (const Vector< Scalar, 3 > &s) |
OpenGL matrix for scaling x/y/z by the components of s. | |
template<typename Scalar > | |
Mat4< Scalar > | rotation_matrix_x (Scalar angle) |
OpenGL matrix for rotation around x-axis by given angle (in degrees) | |
template<typename Scalar > | |
Mat4< Scalar > | rotation_matrix_y (Scalar angle) |
OpenGL matrix for rotation around y-axis by given angle (in degrees) | |
template<typename Scalar > | |
Mat4< Scalar > | rotation_matrix_z (Scalar angle) |
OpenGL matrix for rotation around z-axis by given angle (in degrees) | |
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) | |
template<typename Scalar > | |
Mat4< Scalar > | rotation_matrix (const Vector< Scalar, 4 > &quat) |
OpenGL matrix for rotation specified by unit quaternion. | |
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 | |
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 | |
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 | |
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 | |
template<typename Scalar > | |
Mat4< Scalar > | inverse (const Mat4< Scalar > &m) |
return the inverse of a 4x4 matrix | |
template<typename Scalar > | |
Scalar | determinant (const Mat3< Scalar > &m) |
return determinant of 3x3 matrix | |
template<typename Scalar > | |
Mat3< Scalar > | inverse (const Mat3< Scalar > &m) |
return the inverse of a 3x3 matrix | |
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 | |
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 | |
template<typename Scalar , int N> | |
std::ostream & | operator<< (std::ostream &os, const Vector< Scalar, N > &vec) |
output a vector by printing its space-separated components | |
template<typename Scalar , int N> | |
Scalar | dot (const Vector< Scalar, N > &v0, const Vector< Scalar, N > &v1) |
compute the dot product of two vectors | |
template<typename Scalar , int N> | |
Scalar | distance (const Vector< Scalar, N > &v0, const Vector< Scalar, N > &v1) |
compute the Euclidean distance between two points | |
template<typename Scalar > | |
Vector< Scalar, 2 > | perp (const Vector< Scalar, 2 > &v) |
compute perpendicular vector (rotate vector counter-clockwise by 90 degrees) | |
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) | |
std::ostream & | operator<< (std::ostream &os, Vertex v) |
output a Vertex to a stream | |
std::ostream & | operator<< (std::ostream &os, Halfedge h) |
output a Halfedge to a stream | |
std::ostream & | operator<< (std::ostream &os, Edge e) |
output an Edge to a stream | |
std::ostream & | operator<< (std::ostream &os, Face f) |
output a Face to a stream | |
static Matrix< Scalar, M, N > | identity () |
return identity matrix (only for square matrices, N==M) | |
Core data structure and utilities.
The central class of the library is SurfaceMesh: A class for representing polygon surface meshes.
The Matrix class provides basic matrix and vector operations.
Utility classes:
return identity matrix (only for square matrices, N==M)
identity matrix (work only for square matrices)
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
inverse of perspective matrix