This topic documents some global utility functions for doing geometric computations.
BaryCoords() - Given three points in 2D space (or 3D
space) forming a triangle, and a fourth point in the plane of that
triangle, this function returns the barycentric coordinates of that
point relative to the triangle. Note: If the face (or set of 3
points) is degenerate, i.e. if it has a zero length normal vector
((p1-p0)^(p2-p0)), the methods return Point3(-1,1,1).RayHitsBox()
- Returns TRUE if the specified ray intersects the specified box;
otherwise FALSE.
DistPtToLine() - Computes the distance of point
q from the line with endpoints p0 and
p1.
Dist3DPtToLine() - Computes the distance of point
q from the line with endpoints p0 and
p1.ComputeBumpVectors()
- Computes the 3 Bump basis vectors from the UVW's at the triangle.
Takes as input the coordinates of triangle vertices (usually in
camera space). The output is the 3 bump basis vectors (normalized)
corresponding to the U,V,and W axes
ComputeBumpVec2D() - Computes the 2 Bump basis vectors
from the UV, VW, or WU at a triangle. The axis value is 0 for UV
(AXIS_UV), 1 for VW (AXIS_VW), and 2 for WU (AXIS_WU). The output
of this function are 2 bump basis vectors (normalized)
corresponding to the specified axes.CompressNormal()
- Compresses a unit vector from a Point3 to a ULONG and
returns it. Note that it is only accurate to 1 part in 512.
DeCompressNormal() - Decompresses a unit vector into a
Point3.ArbAxies() - This is used to come
up with an arbitrary axis system given an "up" direction. This
conforms to the AutoCAD algorithm.