Classes | |
class | Line |
Templated class defining an oriented line and/or a line segment.
The Line class keeps a point and a vector. For the Line object to be valid, the vector must not be null. More... | |
class | Mat4 |
A 4x4 matrix class with double precision floating point elements.
Mat4 is a 4x4 matrix class that can be used to perform general affine or projective transformations in 3D space. More... | |
class | Plane |
Declaration of a class plane, keeping a definition of an oriented plane in 3D.
The plane is defined by its (unit) normal vector and parameter 'd', which is the signed distance of the plane from the origin of the coordinate system. More... | |
class | Point2 |
A 2D point class with double precision floating point elements.
This class is designed to be base class of more specific types of 2D points. Specifically, 2D points in different coordinate systems. The template argument P is the type of the derived point class. This allows the Point2 to return new points of the same type as the derived class. The template argument V is the type of the corresponding 2D vector class for the coordinate system of the derived 2D point class. More... | |
class | Point2list |
A class containing a list of Point2's. Contains functions to aid in using this list of points as a piecewise continuous curve in some 2D coordinate system. More... | |
class | Vec2i |
A 2D vector class with integer components. More... | |
class | Point2i |
A 2D point class with integer components. More... | |
class | Point3 |
A 3D point class with double precision floating point elements.
This class is designed to be base class of more specific types of 3D points. Specifically, 3D points in different coordinate systems. The template argument P is the type of the derived point class. This allows the Point3 to return new points of the same type as the derived class. The template argument V is the type of the corresponding 3D vector class for the coordinate system of the derived 3D point class. More... | |
class | Point3list |
A class containing a list of Point3's. Contains functions to aid in using this list of points as a piecewise continuous curve in some 3D coordinate system.
Like the Point3 class, Point3list is designed to be the base class for more specific types of lists of 3D points. Specifically, lists of 3D points in different coordinate systems. The template argument L is the type of the derived point list class. This allows the Point3list to return new lists of the same type as the derived class. The template arguments M, P, V, and S are the types of the corresponding matrix, point, vector and line classes (respectively) for the coordinate system of the derived 3D point list class. More... | |
class | Point3i |
A 3D point class with integer components. More... | |
class | Pointlist |
A class containing a list of points. Contains functions to aid in using this list of points as a piecewise continuous curve in some coordinate system.
Pointlist is designed to be the base class for more specific types of lists of points. Specifically, lists of points with different numbers of dimensions. The template argument L is the type of the derived point list class. This allows the Pointlist to return new lists of the same type as the derived class. The template arguments P, V, and S are the types of the corresponding point, vector and line classes (respectively) for the derived class. More... | |
class | Wvec |
A vector in World coordinates. More... | |
class | Wpt |
A point in World coordinates. More... | |
class | Wline |
A line in World coordinates. More... | |
class | Wtransf |
A tranform (or matrix) in World coordinates. More... | |
class | Wplane |
A plane in World coordinates. More... | |
class | Wpt_list |
A list of points in World coordinates. More... | |
class | Wquat |
A quaternion in World coordinates. More... | |
class | XYvec |
A vector in XY coordinates. More... | |
class | XYpt |
A point in XY coordinates. More... | |
class | XYline |
A line in XY coordinates. More... | |
class | XYpt_list |
A list of points in XY coordinates. More... | |
class | NDCZvec |
A vector in NDCZ coordinates. More... | |
class | NDCZpt |
A point in NDCZ coordinates. More... | |
class | NDCZpt_list |
A list of points in NDCZ coordinates. More... | |
class | NDCZvec_list |
A list of vectors in NDCZ coordinates. More... | |
class | NDCvec |
A vector in NDC coordinates. More... | |
class | NDCpt |
A point in NDC coordinates. More... | |
class | NDCline |
A line in NDC coordinates. More... | |
class | NDCpt_list |
A list of points in NDC coordinates. More... | |
class | VEXEL |
A vector in pixel coordinates. More... | |
class | PIXEL |
A point in pixel coordinates. More... | |
class | PIXELline |
A line in pixel coordinates. More... | |
class | PIXEL_list |
A list of points in pixel coordinates. More... | |
class | UVvec |
A vector in UV coordinates. More... | |
class | UVpt |
A point in UV coordinates. More... | |
class | UVline |
A line in UV coordinates. More... | |
class | UVpt_list |
A list of points in UV coordinates. More... | |
class | EDGElist |
A list of edges in World coordinates. More... | |
class | Quat |
A quaternion class.
The Quat class is designed to be the base class for more specific types of quaternions. Specifically, quaternions in different 3D coordinates systems. The QUAT template argument is the type of the derived quaternion class. This allows the Quat class to return new quaternions of the same type as the derived quaternion class. The M, P, V, and L template arguments are the types of the corresponding matrix, point, vector, and line (respectively) for the coordinate system of the derived quaternion class. More... | |
class | RandomGen |
Random number generator class.
Private to objects (a la meshes) who need their own source of random variables. More... | |
class | TabulatedFunction |
Tabulates values of a given function over an interval [a,b] using a specified resolution.
Approximations of the function at values in [a,b) are returned as interpolations of the tabulated values. at values outside that range the function itself is used to compute the value. More... | |
class | Vec2 |
A 2D vector class with double precision floating point elements.
This class is designed to be base class of more specific types of 2D vectors. Specifically, 2D vectors in different coordinate systems. The template argument V is the type of the derived vector class. This allows the Vec2 to return new vectors of the same type as the derived class. More... | |
class | Vec3 |
A 3D vector class with double precision floating point elements.
This class is designed to be base class of more specific types of 3D vectors. Specifically, 3D vectors in different coordinate systems. The template argument V is the type of the derived vector class. This allows the Vec3 to return new vectors of the same type as the derived class. More... | |
class | Vec4 |
A 4D vector class with double precision floating point elements. More... | |
Epsilon Value Accessor Functions | |
Use these inline functions to access the epsilon value variables rather than accessing the variables directly. | |
void | setEpsAbsMath (double eps) |
Set the value of the absolute epsilon constant (and the absolute epsilon squared constant as well). | |
double | epsAbsMath () |
double | epsAbsSqrdMath () |
double | epsNorMath () |
double | epsNorSqrdMath () |
double | epsZeroMath () |
bool | isZero (double x) |
Tell if a double is so small that it is essentially zero:. | |
bool | isEqual (double x, double y) |
Tell if two doubles are so close that they are essentially equal:. | |
Epsilon Values | |
Don't use these global variables directly, use the inline functions instead. We have to keep these variables in the header file to be able to inline the access functions. | |
double | gEpsAbsMath = 1e-8 |
Absolute epsilon. | |
double | gEpsAbsSqrdMath = 1e-16 |
Absolute epsilon squared. | |
const double | gEpsNorMath = 1e-10 |
Normalized epsilon. | |
const double | gEpsNorSqrdMath = 1e-20 |
Normalized epsilon squared. | |
const double | gEpsZeroMath = 1e-12 |
Really a very small value. | |
Typedefs | |
typedef const class Wvec | CWvec |
typedef const class Wpt | CWpt |
typedef const class Wpt_list | CWpt_list |
typedef const class Wtransf | CWtransf |
typedef const class Wplane | CWplane |
typedef const class Wline | CWline |
typedef const class Wquat | CWquat |
typedef const class XYvec | CXYvec |
typedef const class XYpt | CXYpt |
typedef const class XYpt_list | CXYpt_list |
typedef const class XYline | CXYline |
typedef const class NDCvec | CNDCvec |
typedef const class NDCpt | CNDCpt |
typedef const class NDCpt_list | CNDCpt_list |
typedef const class NDCZvec | CNDCZvec |
typedef const class NDCZvec_list | CNDCZvec_list |
typedef const class NDCZpt | CNDCZpt |
typedef const class NDCZpt_list | CNDCZpt_list |
typedef const class VEXEL | CVEXEL |
typedef const class PIXEL | CPIXEL |
typedef const class PIXEL_list | CPIXEL_list |
typedef const class UVvec | CUVvec |
typedef const class UVpt | CUVpt |
typedef const class UVpt_list | CUVpt_list |
typedef const class UVline | CUVline |
Functions | |
void | fn_gdb_will_recognize_so_i_can_set_a_fuggin_breakpoint () |
double | deg2rad (double degrees) |
Converts degrees to radians. | |
double | rad2deg (double radians) |
Converts radians to degrees. | |
double | Acos (double x) |
Safe arc cosine function. | |
template<class T, int N> | |
bool | ludcmp (T a[N][N], int indx[N], T *d=NULL) |
LU decomposition. | |
template<class T, int N> | |
void | lubksb (T a[N][N], int indx[N], T b[N]) |
Backsubstitution after ludcmp(). | |
template<class T, int N> | |
bool | ldltdc (T A[N][N], T rdiag[N]) |
Perform LDL^T decomposition of a symmetric positive definite matrix. | |
template<class T, int N> | |
void | ldltsl (T A[N][N], T rdiag[N], T B[N], T x[N]) |
Solve Ax=B after ldltdc(). | |
template<int N, class T> | |
void | eigdc (T A[N][N], T d[N]) |
Eigenvector decomposition for real, symmetric matrices, a la Bowdler et al. / EISPACK / JAMA. | |
template<int N, class T> | |
void | eigmult (T A[N][N], T d[N], T b[N], T x[N]) |
x <- A * d * A' * b | |
template<typename M, typename P, typename V, typename L, typename Q> | |
MLIB_INLINE M | operator * (const Mat4< M, P, V, L, Q > &m, const Mat4< M, P, V, L, Q > &m2) |
template<typename M, typename P, typename V, typename L, typename Q> | |
MLIB_INLINE P | operator * (const Mat4< M, P, V, L, Q > &m, const P &p) |
template<typename M, typename P, typename V, typename L, typename Q> | |
MLIB_INLINE V | operator * (const Mat4< M, P, V, L, Q > &m, const Vec3< V > &v) |
template<typename M, typename P, typename V, typename L, typename Q> | |
MLIB_INLINE L | operator * (const Mat4< M, P, V, L, Q > &m, const Line< L, P, V > &l) |
template<typename M, typename P, typename V, typename L, typename Q> | |
MLIB_INLINE ostream & | operator<< (ostream &os, const Mat4< M, P, V, L, Q > &x) |
template<class P> | |
P | nearest_pt_to_line_seg (const P &pt, const P &st, const P &en) |
Returns the nearest point on the line segment (st ,en ) to the point, pt . | |
template<class P, class V> | |
MLIB_INLINE double | ray_pt_dist2 (const P &p, const V &v, const P &q) |
template<class P, class V> | |
P | intersect2d (const Point2< P, V > &p1, const Vec2< V > &v1, const Point2< P, V > &p2, const Vec2< V > &v2, bool &succeeded) |
Intersection of two infinite 2d lines (p1,v1) and (p2,v2). | |
template<class P, class V> | |
MLIB_INLINE bool | ray_seg_intersect (const Point2< P, V > &rayp, const Vec2< V > &rayv, const Point2< P, V > &startpt, const Point2< P, V > &endpt, Point2< P, V > &inter) |
intersect ray starting at rayp w/ vector rayv with line segment between startpt and endpt . inter is set to the intersection point. | |
template<typename P> | |
MLIB_INLINE bool | areCoplanar (const P &p1, const P &p2, const P &p3, const P &p4) |
NDCZvec | normal_to_ndcz (CWpt &p, CWvec &world_normal) |
Wvec | operator * (double s, const Wvec &p) |
Wpt | operator * (double s, const Wpt &p) |
XYvec | operator * (double s, const XYvec &p) |
XYpt | operator * (double s, const XYpt &p) |
NDCZvec | operator * (double s, const NDCZvec &p) |
NDCvec | operator * (double s, const NDCvec &p) |
VEXEL | operator * (double s, const VEXEL &p) |
UVvec | operator * (double s, const UVvec &p) |
UVpt | operator * (double s, const UVpt &p) |
double | world_length (CWpt &p, double r) |
Given point p in world space and pixel length r, return the world space length of a segment passing through p, parallel to the film plane, with pixel length r. | |
double | obj_length (CWpt &o, double r, CWtransf &M, CWtransf &I) |
Same as world_length(CWpt& p, double r), but for object-space point o, with transform M from object to world and its inverse I. | |
template<class T> | |
void | statistics (CARRAY< T > &list, bool print, double *average, double *std_d, T *_max, T *_min) |
Calculates standard statistical information like average, standard deviation, min and max and optionally print it or return them. | |
std::ostream & | operator<< (std::ostream &out, const Vec4 &v) |
std::istream & | operator>> (std::istream &in, Vec4 &v) |
mlib::Vec4 | cross (const Vec4 &a, const Vec4 &b, const Vec4 &c) |
mlib::Vec3< mlib::Wvec > | proj (const Vec4 &v) |
Variables | |
CWtransf | Identity |
|
Safe arc cosine function. Ensures that numerical error doesn't cause a value outside the range [-1,1] to be passed to the acos function by clamping the input value. Definition at line 103 of file global.H. Referenced by mlib::Mat4< M, P, V, L, Q >::anchor_scale_rot(), mlib::Vec3< V >::angle(), GESTURE::angle(), mlib::Plane< PLANE, P, V, L >::axis_ang(), Bedge::dihedral_angle(), Cam_int_fp::orbit_rot(), Cam_int::rot(), Cam_int_fp::rot(), Cam_int_edit::rot(), rotate_camera(), mlib::Mat4< M, P, V, L, Q >::rotation(), mlib::Vec2< V >::signed_angle(), mlib::Quat< QUAT, M, P, V, L >::slerp(), Bedge::swapable(), and CamOrbit::tick(). |
|
Definition at line 19 of file point3.C. References epsNorMath(). |
|
|
Converts degrees to radians.
Definition at line 47 of file global.H. Referenced by SharpEdgeFilter::set_angle(), and GESTURE::trim(). |
|
Eigenvector decomposition for real, symmetric matrices, a la Bowdler et al. / EISPACK / JAMA. Entries of d are eigenvalues, sorted smallest to largest. A changed in-place to have its columns hold the corresponding eigenvectors.
Definition at line 176 of file linear_sys.H. |
|
x <- A * d * A' * b
Definition at line 349 of file linear_sys.H. References j. |
|
Definition at line 70 of file global.H. References gEpsAbsMath. Referenced by mlib::Point2list< L, P, V, S >::fix_endpoints(). |
|
Definition at line 71 of file global.H. References gEpsAbsSqrdMath. Referenced by intersect2d(), mlib::Line< NDCline, NDCpt, NDCvec >::project_to_seg(), and mlib::Mat4< M, P, V, L, Q >::shear(). |
|
Definition at line 73 of file global.H. References gEpsNorMath. Referenced by areCoplanar(), mlib::Mat4< M, P, V, L, Q >::is_equal_scaling_orthogonal(), mlib::Vec3< V >::is_perpend(), mlib::Plane< Wplane, Wpt, Wvec, Wline >::is_valid(), and mlib::Mat4< M, P, V, L, Q >::is_valid(). |
|
Definition at line 74 of file global.H. References gEpsNorSqrdMath. Referenced by mlib::Vec3< V >::is_parallel(), and mlib::Vec2< V >::is_parallel(). |
|
Definition at line 76 of file global.H. References gEpsZeroMath. Referenced by isZero(), and Patch::update_dynamic_samples(). |
|
Definition at line 33 of file global.C. Referenced by mlib::Mat4< M, P, V, L, Q >::inverse(). |
|
Intersection of two infinite 2d lines (p1,v1) and (p2,v2).
Definition at line 39 of file point2.C. References epsAbsSqrdMath(). Referenced by mlib::Point2list< L, P, V, S >::ray_intersect(), and ray_seg_intersect(). |
|
Tell if two doubles are so close that they are essentially equal:.
Definition at line 81 of file global.H. References isZero(). Referenced by ZCrossExtractor< ScalarField, Confidence, FaceGenerator >::get_zcross_points(). |
|
Tell if a double is so small that it is essentially zero:.
Definition at line 79 of file global.H. References epsZeroMath(). Referenced by ZCrossExtractor< ScalarField, Confidence, FaceGenerator >::add_seg(), mlib::Mat4< M, P, V, L, Q >::inverse(), isEqual(), mlib::Vec3< Wvec >::tlen(), mlib::Vec2< VEXEL >::tlen(), and Patch::update_dynamic_samples(). |
|
Perform LDL^T decomposition of a symmetric positive definite matrix. Like Cholesky, but no square roots. Overwrites lower triangle of matrix. Definition at line 123 of file linear_sys.H. |
|
Solve Ax=B after ldltdc().
Definition at line 150 of file linear_sys.H. |
|
Backsubstitution after ludcmp().
Definition at line 95 of file linear_sys.H. References j. |
|
LU decomposition.
Definition at line 34 of file linear_sys.H. |
|
Returns the nearest point on the line segment (
The template paramenter
Definition at line 26 of file nearest_pt.H. Referenced by mlib::Pointlist< L, P, V, S >::closest(), and mlib::Pointlist< L, P, V, S >::dist_to_seg(). |
|
Same as world_length(CWpt& p, double r), but for object-space point o, with transform M from object to world and its inverse I.
|
|
Definition at line 777 of file mat4.C. References mlib::Line< L, P, V >::point(), and mlib::Line< L, P, V >::vector(). |
|
|
|
Definition at line 741 of file mat4.C. References mlib::Mat4< M, P, V, L, Q >::is_perspective(). |
|
Definition at line 444 of file mat4.C. References mlib::Mat4< M, P, V, L, Q >::is_perspective(). |
|
|
|
|
|
|
|
|
|
Converts radians to degrees.
Definition at line 49 of file global.H. Referenced by GEOM::do_cam_focus(), and GESTURE::is_corner(). |
|
Definition at line 22 of file point2.C. Referenced by mlib::Point2list< L, P, V, S >::ray_intersect(). |
|
intersect ray starting at
Definition at line 68 of file point2.C. References intersect2d(). Referenced by mlib::Point2list< L, P, V, S >::ray_intersect(). |
|
Set the value of the absolute epsilon constant (and the absolute epsilon squared constant as well).
Definition at line 24 of file global.C. References gEpsAbsMath, and gEpsAbsSqrdMath. |
|
Calculates standard statistical information like average, standard deviation, min and max and optionally print it or return them.
The template parameter
Definition at line 32 of file statistics.H. Referenced by LMESH::fit(). |
|
Given point p in world space and pixel length r, return the world space length of a segment passing through p, parallel to the film plane, with pixel length r.
Definition at line 1457 of file points.H. Referenced by XF_DRAW::draw(). |
|
Absolute epsilon.
Definition at line 17 of file global.C. Referenced by mlib::Mat4< M, P, V, L, Q >::anchor_scale_rot(), epsAbsMath(), mlib::Line< NDCline, NDCpt, NDCvec >::intersect(), mlib::Mat4< M, P, V, L, Q >::is_identity(), ELLIPSE::rebuild(), and setEpsAbsMath(). |
|
Absolute epsilon squared.
Definition at line 18 of file global.C. Referenced by epsAbsSqrdMath(), and setEpsAbsMath(). |
|
Normalized epsilon.
Definition at line 20 of file global.C. Referenced by epsNorMath(). |
|
Normalized epsilon squared.
Definition at line 21 of file global.C. Referenced by epsNorSqrdMath(). |
|
Really a very small value.
Definition at line 15 of file global.C. Referenced by epsZeroMath(), UVMapping::intersect(), Bedge::nearest_pt_ndc(), mlib::Vec4::normalized(), mlib::Vec3< V >::normalized(), mlib::Vec2< V >::normalized(), mlib::Plane< PLANE, P, V, L >::Plane(), pt_near_seg(), pt_near_seg_ndc(), and snap(). |
|
Definition at line 13 of file points.C. Referenced by DEFINER::clear_deltas(), VIEW::intersect(), BMESH::inv_xform(), VIEW::nearest(), and BMESH::xform(). |