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.