KrisLibrary  1.0.0
Classes | Typedefs | Functions
Math3D Namespace Reference

Contains all the definitions in the Math3D package. More...

Classes

struct  AABB2D
 A 2D axis-aligned bounding box. More...
 
struct  AABB3D
 A 3D axis-aligned bounding box. More...
 
struct  AABBTemplate
 
class  AngleAxisRotation
 Angle-axis 3D rotation parameterization. More...
 
struct  Box2D
 A 2D boxThe box is the unit square [0,1]^2 set in the scaled local coordinate system. That is, one corner is at the origin, and it has dimensions [dims.x,dims.y] in the coordinates given by {xbasis,ybasis}. More...
 
struct  Box3D
 A 3D boxThe box is the unit cube [0,1]^3 set in the scaled local coordinate system. That is, one corner is at the origin, and it has dimensions [dims.x,dims.y,dims.z] in the coordinates given by {xbasis,ybasis,zbasis}. More...
 
struct  Circle2D
 A 2D circle class. More...
 
struct  Circle3D
 A 2D circle in 3D space class. More...
 
struct  ConvexPolygon2D
 A convex connected polygon such that the vertices are in ccw order. More...
 
struct  ConvexPolyhedron3D
 A convex polyhedron given in a dual representation, planes and vertices of convex hull. More...
 
struct  Cylinder3D
 A 3D cylinder. More...
 
struct  Ellipsoid3D
 A 3D ellipsoidThe ellipsoid is the centered unit sphere [-1,1]^3 set in the scaled local coordinate system. That is, the center is at the origin, and its major axes are {xbasis,ybasis,zbasis} with radii {dims.x,dims.y,dims.z}. More...
 
class  EulerAngleRotation
 Euler angle 3D rotation parameterization. More...
 
class  GeometricPrimitive2D
 
class  GeometricPrimitive3D
 A generic geometric primitive class. More...
 
struct  Line2D
 A 2D line class. More...
 
struct  Line3D
 A 3D line class. More...
 
struct  LocalCoordinates2D
 
struct  LocalCoordinates3D
 
class  Matrix2
 A 2x2 matrix class. More...
 
class  Matrix3
 A 3x3 matrix class. More...
 
class  Matrix4
 A 4x4 matrix class. More...
 
class  MomentRotation
 "Moment", a.k.a. exponential map, 3D rotation parameterization More...
 
struct  Plane2D
 A 2D plane classRepresents plane with a normal and offset such that x on the plane satisfy dot(normal,x) = offset. More...
 
struct  Plane3D
 A 3D plane classRepresents plane with a normal and offset such that x on the plane satisfy dot(normal,x) = offset. More...
 
struct  Polygon2D
 An arbitrary connected polygon given by a vertex list. More...
 
struct  Polygon3D
 An arbitrary connected polygon in 3D space given by a vertex list. More...
 
class  QuaternionRotation
 Quaternion, a.k.a. Euler parameter, 3D rotation parameterization. More...
 
struct  Ray3D
 
class  RigidTransform
 A rigid-body transformation. More...
 
class  RigidTransform2D
 Same as above, but in 2D. More...
 
struct  ScaledLocalCoordinates2D
 
struct  ScaledLocalCoordinates3D
 
struct  Segment2D
 A 2D segment class. More...
 
struct  Segment3D
 
struct  Sphere3D
 A 3D sphere class. More...
 
struct  Triangle2D
 A 2D triangle class. More...
 
struct  Triangle3D
 A 3D triangle class. More...
 
class  Vector2
 A 2D vector class. More...
 
class  Vector3
 A 3D vector class. More...
 
class  Vector4
 A 4D vector class. More...
 

Typedefs

typedef Real vec2_t[2]
 
typedef Real vec3_t[3]
 
typedef Real vec4_t[4]
 
typedef Real matrix3_t[3][4]
 
typedef Real matrix4_t[4][4]
 
typedef Line2D Ray2D
 
typedef Vector2 Point2D
 
typedef Vector3 Point3D
 
typedef Vector4 Point4D
 
typedef vec4_t quat_t
 

Functions

ostream & operator<< (ostream &out, const AABB3D &bb)
 
istream & operator>> (istream &in, AABB3D &bb)
 
std::ostream & operator<< (std::ostream &out, const AABB3D &bb)
 
std::istream & operator>> (std::istream &in, AABB3D &bb)
 
void GetCanonicalBasis (const Vector2 &x, Vector2 &y)
 
void GetCanonicalBasis (const Vector3 &x, Vector3 &y, Vector3 &z)
 
std::ostream & operator<< (std::ostream &out, const Box3D &b)
 
std::istream & operator>> (std::istream &in, Box3D &b)
 
bool ClipLine1D (Real q, Real p, Real &umin, Real &umax)
 Clipping primitive in 1D. More...
 
bool ClipLine (const Vector2 &x, const Vector2 &v, const Plane2D &b, Real &u1, Real &u2)
 
bool ClipLine (const Vector2 &x, const Vector2 &v, const AABB2D &b, Real &u1, Real &u2)
 Clip the line to the interior of the bbox.
 
bool ClipLine (const Vector2 &x, const Vector2 &v, const ConvexPolygon2D &b, Real &u1, Real &u2)
 Clip the line to the interior of the convex polygon.
 
bool ClipLine (const Vector3 &x, const Vector3 &v, const Plane3D &b, Real &u1, Real &u2)
 
bool ClipLine (const Vector3 &x, const Vector3 &v, const Box3D &b, Real &u1, Real &u2)
 
bool ClipLine (const Vector3 &x, const Vector3 &v, const AABB3D &b, Real &u1, Real &u2)
 
bool ClipLine (const Vector3 &x, const Vector3 &v, const ConvexPolyhedron3D &p, Real &u1, Real &u2)
 
bool ClipLine1D (Real x0, Real a, Real b, Real &umin, Real &umax)
 
std::ostream & operator<< (std::ostream &out, const Cylinder3D &b)
 
std::istream & operator>> (std::istream &in, Cylinder3D &b)
 
std::ostream & operator<< (std::ostream &out, const Ellipsoid3D &b)
 
std::istream & operator>> (std::istream &in, Ellipsoid3D &b)
 
Vector3 Unit (const Vector3 &v)
 
std::ostream & operator<< (std::ostream &out, const GeometricPrimitive3D &g)
 
std::istream & operator>> (std::istream &in, GeometricPrimitive3D &g)
 
void interpolateRotation (const Matrix2 &a, const Matrix2 &b, Real u, Matrix2 &x)
 
void interpolateRotation (const Matrix3 &a, const Matrix3 &b, Real u, Matrix3 &x)
 
void interpolate (const Vector2 &a, const Vector2 &b, Real u, Vector2 &x)
 
void interpolate (const Vector3 &a, const Vector3 &b, Real u, Vector3 &x)
 
void interpolate (const Vector4 &a, const Vector4 &b, Real u, Vector4 &x)
 
void interpolate (const RigidTransform2D &a, const RigidTransform2D &b, Real u, RigidTransform2D &x)
 
void interpolate (const RigidTransform &a, const RigidTransform &b, Real u, RigidTransform &x)
 
template<class VectorT >
void interpolateDirection (const VectorT &a, const VectorT &b, Real u, VectorT &out)
 
Real SegmentZeroCrossing (Real a, Real b)
 if segment is x = a + u*(b-a), returns the value u s.t. x=0
 
Real SegmentCrossing (Real a, Real b, Real x0)
 if segment is x = a + u*(b-a), returns the value u s.t. x=x0
 
ostream & operator<< (ostream &out, const Line3D &line)
 
istream & operator>> (istream &in, Line3D &line)
 
std::ostream & operator<< (std::ostream &out, const Line3D &line)
 
std::istream & operator>> (std::istream &in, Line3D &line)
 
void Copy (Real v, Vector &mat)
 
void Copy (const Vector2 &v, Vector &mat)
 
void Copy (const Vector3 &v, Vector &mat)
 
void Copy (const Vector4 &v, Vector &mat)
 
void Copy (const Vector &vec, Real &v)
 
void Copy (const Vector &vec, Vector2 &v)
 
void Copy (const Vector &vec, Vector3 &v)
 
void Copy (const Vector &vec, Vector4 &v)
 
void Copy (Real m, Matrix &mat)
 
void Copy (const Matrix2 &m, Matrix &mat)
 
void Copy (const Matrix3 &m, Matrix &mat)
 
void Copy (const Matrix4 &m, Matrix &mat)
 
void Copy (const Matrix &mat, Real &m)
 
void Copy (const Matrix &mat, Matrix2 &m)
 
void Copy (const Matrix &mat, Matrix3 &m)
 
void Copy (const Matrix &mat, Matrix4 &m)
 
void Lasv2 (double *smin, double *smax, double *sv, double *cv, double *su, double *cu, double f, double g, double h)
 
bool SVD (const Matrix2 &A, Matrix2 &U, Vector2 &W, Matrix2 &V)
 
bool SVD (const Matrix3 &A, Matrix3 &U, Vector3 &W, Matrix3 &V)
 
bool SVD (const Matrix4 &A, Matrix4 &U, Vector4 &W, Matrix4 &V)
 
void Eigenvalues (const Matrix2 &A, Complex &lambda1, Complex &lambda2)
 
bool Eigenvalues (const Matrix2 &A, Real &lambda1, Real &lambda2)
 
bool Eigendecomposition (const Matrix2 &A, Vector2 &lambda, Matrix2 &Q)
 
bool Eigendecomposition (const Matrix3 &A, Vector3 &lambda, Matrix3 &Q)
 
bool Eigendecomposition (const Matrix4 &A, Vector4 &lambda, Matrix4 &Q)
 
void Eigenvalues (const Matrix3 &A, Complex &lambda1, Complex &lambda2, Complex &lambda3)
 
bool Eigenvalues (const Matrix3 &A, Real &lambda1, Real &lambda2, Real &lambda3)
 
template<class VT , int n>
bool LinearlyDependent_Robust_Template (const VT &a, const VT &b, Real &c, bool &cb, Real eps)
 
bool LinearlyDependent_Robust (const Vector2 &a, const Vector2 &b, Real &c, bool &cb, Real eps)
 
bool LinearlyDependent_Robust (const Vector3 &a, const Vector3 &b, Real &c, bool &cb, Real eps)
 
bool LinearlyDependent_Robust (const Vector4 &a, const Vector4 &b, Real &c, bool &cb, Real eps)
 
void matrix4_zero (matrix4_t x)
 
void matrix4_identity (matrix4_t x)
 
void matrix4_from_basis (matrix4_t x, const vec4_t xbasis, const vec4_t ybasis, const vec4_t zbasis, const vec4_t trans)
 
void matrix4_to_basis (const matrix4_t x, vec4_t xbasis, vec4_t ybasis, vec4_t zbasis, vec4_t trans)
 
void matrix4_equal (matrix4_t x, const matrix4_t a)
 
void matrix4_add (matrix4_t x, const matrix4_t a, const matrix4_t b)
 
void matrix4_sub (matrix4_t x, const matrix4_t a, const matrix4_t b)
 
void matrix4_multiply (matrix4_t x, const matrix4_t a, const matrix4_t b)
 
void matrix4_transpose (matrix4_t x, const matrix4_t a)
 
void matrix4_vec3_multiply (vec3_t x, const matrix4_t a, const vec3_t v)
 
void matrix4_normal_multiply (vec3_t x, const matrix4_t a, const vec3_t v)
 
void matrix4_vec3_multiply_transpose (vec3_t x, const matrix4_t a, const vec3_t v)
 
void matrix4_vec4_multiply (vec4_t x, const matrix4_t a, const vec4_t v)
 
void matrix4_scale3 (matrix4_t x, Real scale)
 
void matrix4_scale3 (matrix4_t x, const vec3_t v_scale)
 
Real matrix3_determinant (const matrix4_t a)
 
void matrix4_cross_product (matrix4_t x, const vec3_t v)
 
void matrix4_uncross (vec3_t x, const matrix4_t a)
 
void matrix4_invert (matrix4_t x, const matrix4_t a)
 
void matrix4_rotation (matrix4_t x, const vec3_t r)
 
void matrix4_rotation_axis (vec3_t r, const matrix4_t R)
 
void matrix4_rotate_x (matrix4_t x, Real fRads)
 
void matrix4_rotate_y (matrix4_t x, Real fRads)
 
void matrix4_rotate_z (matrix4_t x, Real fRads)
 
void matrix4_projection (matrix4_t x, const vec3_t v)
 
void matrix4_plane_projection (matrix4_t x, const vec4_t p, vec3_t v)
 
void matrix4_rigid_body_inverse (matrix4_t x, const matrix4_t a)
 
bool IsFinite (const Vector2 &x)
 
bool IsFinite (const Vector3 &x)
 
bool IsFinite (const Vector4 &x)
 
bool IsFinite (const Matrix2 &R)
 
bool IsFinite (const Matrix3 &R)
 
bool IsFinite (const Matrix4 &R)
 
bool IsInf (const Vector2 &x)
 
bool IsInf (const Vector3 &x)
 
bool IsInf (const Vector4 &x)
 
bool IsInf (const Matrix2 &R)
 
bool IsInf (const Matrix3 &R)
 
bool IsInf (const Matrix4 &R)
 
bool FuzzyZero (const Vector2 &x, Real tol=Epsilon)
 
bool FuzzyZero (const Vector3 &x, Real tol=Epsilon)
 
bool FuzzyZero (const Vector4 &x, Real tol=Epsilon)
 
template<class V >
bool NormLess (const V &x, Real d)
 
template<class V >
bool NormLEQ (const V &x, Real d)
 
template<class V >
bool NormGreater (const V &x, Real d)
 
template<class V >
bool NormGEQ (const V &x, Real d)
 
template<class V >
bool DistanceLess (const V &x, const V &y, Real d)
 
template<class V >
bool DistanceLEQ (const V &x, const V &y, Real d)
 
template<class V >
bool DistanceGreater (const V &x, const V &y, Real d)
 
template<class V >
bool DistanceGEQ (const V &x, const V &y, Real d)
 
Real Orient2D (const Vector2 &p0, const Vector2 &p1, const Vector2 &p2)
 Orientation test for 2d points. More...
 
Real DistanceSquared2D (Real x1, Real y1, Real x2, Real y2)
 
Real Distance2D (Real x1, Real y1, Real x2, Real y2)
 
bool IsSymmetric (const Matrix2 &R, Real tol=Epsilon)
 
bool IsSymmetric (const Matrix3 &R, Real tol=Epsilon)
 
bool IsSymmetric (const Matrix4 &R, Real tol=Epsilon)
 
bool IsUpperTriangular (const Matrix2 &R, Real tol=Epsilon)
 
bool IsUpperTriangular (const Matrix3 &R, Real tol=Epsilon)
 
bool IsUpperTriangular (const Matrix4 &R, Real tol=Epsilon)
 
ostream & operator<< (ostream &out, const Plane3D &p)
 
istream & operator>> (istream &in, Plane3D &p)
 
std::ostream & operator<< (std::ostream &out, const Plane3D &p)
 
std::istream & operator>> (std::istream &out, Plane3D &p)
 
void PolarToRectangular (const Vector2 &polar, Vector2 &rect)
 
void RectangularToPolar (const Vector2 &rect, Vector2 &polar)
 
void CylindricalToRectangular (const Vector3 &cyl, Vector3 &rect)
 
void RectangularToCylindrical (const Vector3 &rect, Vector3 &cyl)
 
void SphericalToRectangular (const Vector3 &sphere, Vector3 &rect)
 
void RectangularToSpherical (const Vector3 &rect, Vector3 &sphere)
 
void PolarDR (const Vector2 &polar, Vector2 &drect)
 
void PolarDTheta (const Vector2 &polar, Vector2 &drect)
 
void CylindricalDR (const Vector3 &cyl, Vector3 &drect)
 
void CylindricalDTheta (const Vector3 &cyl, Vector3 &drect)
 
void CylindricalDZ (const Vector3 &cyl, Vector3 &drect)
 
void SphericalDR (const Vector3 &sphere, Vector3 &drect)
 
void SphericalDTheta (const Vector3 &sphere, Vector3 &drect)
 
void SphericalDPhi (const Vector3 &sphere, Vector3 &drect)
 
std::ostream & operator<< (std::ostream &out, const Polygon3D &b)
 
std::istream & operator>> (std::istream &in, Polygon3D &b)
 
std::ostream & operator<< (std::ostream &out, const Vector2 &v)
 
std::istream & operator>> (std::istream &in, Vector2 &v)
 
std::ostream & operator<< (std::ostream &out, const Vector3 &v)
 
std::istream & operator>> (std::istream &in, Vector3 &v)
 
std::ostream & operator<< (std::ostream &out, const Vector4 &v)
 
std::istream & operator>> (std::istream &in, Vector4 &v)
 
std::ostream & operator<< (std::ostream &out, const Matrix2 &m)
 
std::istream & operator>> (std::istream &in, Matrix2 &m)
 
std::ostream & operator<< (std::ostream &out, const Matrix3 &m)
 
std::istream & operator>> (std::istream &in, Matrix3 &m)
 
std::ostream & operator<< (std::ostream &out, const Matrix4 &m)
 
std::istream & operator>> (std::istream &in, Matrix4 &m)
 
std::ostream & operator<< (std::ostream &out, const RigidTransform &x)
 
std::istream & operator>> (std::istream &in, RigidTransform &x)
 
std::ostream & operator<< (std::ostream &out, const RigidTransform2D &x)
 
std::istream & operator>> (std::istream &in, RigidTransform2D &x)
 
Real dot (const Vector2 &a, const Vector2 &b)
 
Real cross (const Vector2 &a, const Vector2 &b)
 
void normalize (Vector2 &a)
 
Vector2 project (const Vector2 &a, const Vector2 &b)
 
Vector2 operator- (const Vector2 &a)
 
Vector2 operator+ (const Vector2 &a, const Vector2 &b)
 
Vector2 operator- (const Vector2 &a, const Vector2 &b)
 
Vector2 operator* (const Vector2 &a, Real b)
 
Vector2 operator* (Real a, const Vector2 &b)
 
Vector2 operator/ (const Vector2 &a, Real b)
 
Real dot (const Vector3 &a, const Vector3 &b)
 
Vector3 cross (const Vector3 &a, const Vector3 &b)
 
void normalize (Vector3 &a)
 
Vector3 project (const Vector3 &a, const Vector3 &b)
 
Vector3 operator- (const Vector3 &a)
 
Vector3 operator+ (const Vector3 &a, const Vector3 &b)
 
Vector3 operator- (const Vector3 &a, const Vector3 &b)
 
Vector3 operator* (const Vector3 &a, Real b)
 
Vector3 operator* (Real a, const Vector3 &b)
 
Vector3 operator/ (const Vector3 &a, Real b)
 
Real dot (const Vector4 &a, const Vector4 &b)
 
Real dot3 (const Vector4 &a, const Vector4 &b)
 
Real dot3 (const Vector4 &a, const Vector3 &b)
 
Real dot3 (const Vector3 &a, const Vector4 &b)
 
void normalize (Vector4 &a)
 
Vector4 project (const Vector4 &a, const Vector4 &b)
 
Vector4 operator- (const Vector4 &a)
 
Vector4 operator+ (const Vector4 &a, const Vector4 &b)
 
Vector4 operator- (const Vector4 &a, const Vector4 &b)
 
Vector4 operator* (const Vector4 &a, Real b)
 
Vector4 operator* (Real a, const Vector4 &b)
 
Vector4 operator/ (const Vector4 &a, Real b)
 
Real determinant (const Matrix2 &)
 
Real trace (const Matrix2 &)
 
Matrix2 operator+ (const Matrix2 &a, const Matrix2 &b)
 
Matrix2 operator- (const Matrix2 &a, const Matrix2 &b)
 
Matrix2 operator* (const Matrix2 &a, const Matrix2 &b)
 
Vector2 operator* (const Matrix2 &a, const Vector2 &b)
 
Vector2 operator* (const Vector2 &a, const Matrix2 &b)
 
Real determinant (const Matrix3 &)
 
Real trace (const Matrix3 &)
 
Matrix3 operator+ (const Matrix3 &a, const Matrix3 &b)
 
Matrix3 operator- (const Matrix3 &a, const Matrix3 &b)
 
Matrix3 operator* (const Matrix3 &a, const Matrix3 &b)
 
Vector3 operator* (const Matrix3 &a, const Vector3 &b)
 
Vector3 operator* (const Vector3 &a, const Matrix3 &b)
 
Real determinant (const Matrix4 &)
 
Real trace (const Matrix4 &)
 
Matrix4 operator+ (const Matrix4 &a, const Matrix4 &b)
 
Matrix4 operator- (const Matrix4 &a, const Matrix4 &b)
 
Matrix4 operator* (const Matrix4 &a, const Matrix4 &b)
 
Vector4 operator* (const Matrix4 &a, const Vector4 &b)
 
Vector4 operator* (const Vector4 &a, const Matrix4 &b)
 
Vector3 operator* (const Matrix4 &a, const Vector3 &b)
 WARNING: vector multiply.
 
Vector3 operator* (const Vector3 &a, const Matrix4 &b)
 WARNING: vector multiply (transpose)
 
RigidTransform operator* (const RigidTransform &, const RigidTransform &)
 
RigidTransform operator* (const RigidTransform &, const Matrix3 &)
 
RigidTransform operator* (const Matrix3 &a, const RigidTransform &b)
 
Vector3 operator* (const RigidTransform &, const Vector3 &)
 
RigidTransform operator+ (const RigidTransform &, const Vector3 &)
 
RigidTransform operator- (const RigidTransform &, const Vector3 &)
 
RigidTransform2D operator* (const RigidTransform2D &, const RigidTransform2D &)
 
Vector2 operator* (const RigidTransform2D &, const Vector2 &)
 
Matrix2 transpose (const Matrix2 &m)
 
Matrix2 inverse (const Matrix2 &m)
 
Matrix2 outerProduct (const Vector2 &a, const Vector2 &b)
 
Matrix2 operator* (const Matrix2 &a, Real b)
 
Matrix2 operator/ (const Matrix2 &a, Real b)
 
Matrix3 transpose (const Matrix3 &m)
 
Matrix3 inverse (const Matrix3 &m)
 
Matrix3 outerProduct (const Vector3 &a, const Vector3 &b)
 
Matrix3 operator* (const Matrix3 &a, Real b)
 
Matrix3 operator/ (const Matrix3 &a, Real b)
 
Matrix4 transpose (const Matrix4 &m)
 
Matrix4 inverse (const Matrix4 &m)
 
Matrix4 outerProduct (const Vector4 &a, const Vector4 &b)
 
Matrix4 operator* (const Matrix4 &a, Real b)
 
Matrix4 operator/ (const Matrix4 &a, Real b)
 
void quat_slerp (quat_t out, const quat_t a, const quat_t b, Real t)
 
void RandRotation (Quaternion &q)
 
void SampleCircle (Real r, Vector2 &v)
 
void SampleDisk (Real r, Vector2 &v)
 
void SampleSphere (Real r, Vector3 &v)
 
void SampleBall (Real r, Vector3 &v)
 
void SampleSquare (Real d, Vector2 &v)
 
void SampleCube (Real d, Vector3 &v)
 
void SampleHyperCube (Real d, Vector4 &v)
 
void SampleAABB (const Vector2 &bmin, const Vector2 &bmax, Vector2 &v)
 
void SampleAABB (const Vector3 &bmin, const Vector3 &bmax, Vector3 &v)
 
void SampleAABB (const Vector4 &bmin, const Vector4 &bmax, Vector4 &v)
 
Vector2 SampleCircle (Real r)
 
Vector2 SampleDisk (Real r)
 
Vector3 SampleSphere (Real r)
 
Vector3 SampleBall (Real r)
 
Vector2 SampleSquare (Real d)
 
Vector3 SampleCube (Real d)
 
Vector4 SampleHyperCube (Real d)
 
Vector2 SampleAABB (const Vector2 &bmin, const Vector2 &bmax)
 
Vector3 SampleAABB (const Vector3 &bmin, const Vector3 &bmax)
 
Vector4 SampleAABB (const Vector4 &bmin, const Vector4 &bmax)
 
Quaternion RandRotation ()
 
void SLerp (const Quaternion &q0, const Quaternion &q1, Quaternion &out, Real t)
 Linear quaternion rotation interpolation.
 
void SCerp (const Quaternion &q_1, const Quaternion &q0, const Quaternion &q1, const Quaternion &q2, Quaternion &out, Real t)
 Cubic quaternion rotation interpolation.
 
void SBezier (const Quaternion &q0, const Quaternion &c0, const Quaternion &c1, const Quaternion &q1, Quaternion &out, Real t)
 Bezier-style quaternion rotation interpolation. More...
 
void SetMatrixRotationZYX (Matrix3 &m, const Vector3 &v)
 
void SetMatrixRotationZYX (Matrix4 &m, const Vector3 &v)
 
void SetMatrixRotationVector (Matrix3 &m, const Vector3 &v)
 
void SetMatrixRotationVector (Matrix4 &m, const Vector3 &v)
 
void SetMatrixRotationVector (Matrix3 &m, const Vector3 &v, Real angle)
 
void SetMatrixRotationVector (Matrix4 &m, const Vector3 &v, Real angle)
 
void SetMatrixRotationQuaternion (Matrix3 &m, const Quaternion &q)
 
void SetMatrixRotationQuaternion (Matrix4 &m, const Quaternion &q)
 
Real RotationFit (const vector< Vector3 > &a, const vector< Vector3 > &b, Matrix3 &R)
 Calculates the least squares rotation fit min_R sum||R*a[i]-b[i]||^2. Returns the sum-of-squared errors.
 
void AxisRotationFit (const std::vector< Vector3 > &a, const std::vector< Vector3 > &b, const Vector3 &z, Real &theta)
 Calculates the least squares rotation angle min_theta sum||R(theta,z)*a[i]-b[i]||^2.
 
Real TransformFit (vector< Vector3 > &a, vector< Vector3 > &b, Matrix3 &R, Vector3 &t)
 Calculate the least squares rotation fit min_R,t sum||R*a[i]+t-b[i]||^2. Returns the sum-of-squared errors. More...
 
Real WeightedTransformFit (const vector< Point3D > &a, const vector< Point3D > &b, const vector< Real > &w, const vector< Vector3 > &c, const vector< Vector3 > &d, const vector< Real > &v, Matrix3 &R, Vector3 &t)
 Solve the mixed point/vector fitting problem min sum_j wj||R*aj+t-bj||^2 + sum_k vk||Rc-d||^2. More...
 
Real FitFrames (const std::vector< Vector3 > &a, const std::vector< Vector3 > &b, RigidTransform &Ta, RigidTransform &Tb, Vector3 &cov)
 Calculate the translations and rotations that match a,b in an axis-aligned frame. The cov vector stores the covariance in each axis.
 
Real RotationFit (const std::vector< Vector3 > &a, const std::vector< Vector3 > &b, Matrix3 &R)
 Calculates the least squares rotation fit min_R sum||R*a[i]-b[i]||^2. Returns the sum-of-squared errors.
 
Real TransformFit (std::vector< Vector3 > &a, std::vector< Vector3 > &b, Matrix3 &R, Vector3 &t)
 Calculate the least squares rotation fit min_R,t sum||R*a[i]+t-b[i]||^2. Returns the sum-of-squared errors. More...
 
Real WeightedTransformFit (const std::vector< Point3D > &a, const std::vector< Point3D > &b, const std::vector< Real > &w, const std::vector< Vector3 > &c, const std::vector< Vector3 > &d, const std::vector< Real > &v, Matrix3 &R, Vector3 &t)
 Solve the mixed point/vector fitting problem min sum_j wj||R*aj+t-bj||^2 + sum_k vk||Rc-d||^2. More...
 
ostream & operator<< (ostream &out, const Segment3D &s)
 
istream & operator>> (istream &in, Segment3D &s)
 
std::ostream & operator<< (std::ostream &out, const Segment3D &s)
 
std::istream & operator>> (std::istream &in, Segment3D &s)
 
ostream & operator<< (ostream &out, const Triangle3D &tri)
 
istream & operator>> (istream &in, Triangle3D &tri)
 
std::ostream & operator<< (std::ostream &out, const Triangle3D &tri)
 
std::istream & operator>> (std::istream &in, Triangle3D &tri)
 
void vec2_zero (vec2_t x)
 
void vec2_make (vec2_t x, Real a, Real b)
 
void vec2_equal (vec2_t x, const vec2_t a)
 
void vec2_add (vec2_t x, const vec2_t a, const vec2_t b)
 
void vec2_sub (vec2_t x, const vec2_t a, const vec2_t b)
 
void vec2_multiply (vec2_t x, const vec2_t a, Real c)
 
void vec2_madd (vec2_t x, const vec2_t a, Real c)
 
void vec2_negate (vec2_t x, const vec2_t a)
 
Real vec2_dot (const vec2_t a, const vec2_t b)
 
float vec2_cross (const vec2_t a, const vec2_t b)
 
Real vec2_length (const vec2_t x)
 
void vec2_normalize (vec2_t x)
 
void vec2_project (vec2_t x, const vec2_t a, const vec2_t b)
 
void vec3_zero (vec3_t x)
 
void vec3_make (vec3_t x, Real a, Real b, Real c)
 
void vec3_equal (vec3_t x, const vec3_t a)
 
void vec3_add (vec3_t x, const vec3_t a, const vec3_t b)
 
void vec3_sub (vec3_t x, const vec3_t a, const vec3_t b)
 
void vec3_multiply (vec3_t x, const vec3_t a, Real c)
 
void vec3_madd (vec3_t x, const vec3_t a, Real c)
 
void vec3_negate (vec3_t x, const vec3_t a)
 
Real vec3_dot (const vec3_t a, const vec3_t b)
 
void vec3_cross (vec3_t x, const vec3_t a, const vec3_t b)
 
Real vec3_length (const vec3_t x)
 
void vec3_normalize (vec3_t x)
 
void vec3_project (vec3_t x, const vec3_t a, const vec3_t b)
 
void vec4_zero (vec4_t x)
 
void vec4_make (vec4_t x, Real a, Real b, Real c, Real d)
 
void vec4_equal (vec4_t x, const vec4_t a)
 
void vec4_add (vec4_t x, const vec4_t a, const vec4_t b)
 
void vec4_sub (vec4_t x, const vec4_t a, const vec4_t b)
 
void vec4_multiply (vec4_t x, const vec4_t a, Real c)
 
void vec4_madd (vec4_t x, const vec4_t a, Real c)
 
void vec4_negate (vec4_t x, const vec4_t a)
 
Real vec4_dot (const vec4_t a, const vec4_t b)
 
void vec4_normalize (vec4_t x)
 
void vec4_plane_project (vec4_t x, const vec4_t a, const vec4_t b)
 

Detailed Description

Contains all the definitions in the Math3D package.