Collaboration diagram for Point/Line/Plane Geometry Math:
![]() |
Files | |
file | plane.c |
Some useful routines for dealing with planes and lines. | |
Defines | |
#define | UNIT_SQ_TOL 1.0e-13 |
Functions | |
double | bn_dist_pt3_pt3 (const fastf_t *a, const fastf_t *b) |
Returns distance between two points. | |
int | bn_pt3_pt3_equal (const fastf_t *a, const fastf_t *b, const struct bn_tol *tol) |
int | bn_pt2_pt2_equal (const fastf_t *a, const fastf_t *b, const struct bn_tol *tol) |
int | bn_3pts_collinear (fastf_t *a, fastf_t *b, fastf_t *c, const struct bn_tol *tol) |
Check to see if three points are collinear. | |
int | bn_3pts_distinct (const fastf_t *a, const fastf_t *b, const fastf_t *c, const struct bn_tol *tol) |
int | bn_mk_plane_3pts (fastf_t *plane, const fastf_t *a, const fastf_t *b, const fastf_t *c, const struct bn_tol *tol) |
int | bn_mkpoint_3planes (fastf_t *pt, const fastf_t *a, const fastf_t *b, const fastf_t *c) |
Given the description of three planes, compute the point of intersection, if any. | |
int | bn_2line3_colinear (const fastf_t *p1, const fastf_t *d1, const fastf_t *p2, const fastf_t *d2, double range, const struct bn_tol *tol) |
Returns non-zero if the 3 lines are colinear to within tol->dist over the given distance range. | |
int | bn_isect_line3_plane (fastf_t *dist, const fastf_t *pt, const fastf_t *dir, const fastf_t *plane, const struct bn_tol *tol) |
int | bn_isect_2planes (fastf_t *pt, fastf_t *dir, const fastf_t *a, const fastf_t *b, const fastf_t *rpp_min, const struct bn_tol *tol) |
Given two planes, find the line of intersection between them, if one exists. The line of intersection is returned in parametric line (point & direction vector) form. | |
int | bn_isect_line2_line2 (fastf_t *dist, const fastf_t *p, const fastf_t *d, const fastf_t *a, const fastf_t *c, const struct bn_tol *tol) |
int | bn_isect_line2_lseg2 (fastf_t *dist, const fastf_t *p, const fastf_t *d, const fastf_t *a, const fastf_t *c, const struct bn_tol *tol) |
Intersect a line in parametric form:. | |
int | bn_isect_lseg2_lseg2 (fastf_t *dist, const fastf_t *p, const fastf_t *pdir, const fastf_t *q, const fastf_t *qdir, const struct bn_tol *tol) |
Intersect two 2D line segments, defined by two points and two vectors. The vectors are unlikely to be unit length. | |
int | bn_isect_lseg3_lseg3 (fastf_t *dist, const fastf_t *p, const fastf_t *pdir, const fastf_t *q, const fastf_t *qdir, const struct bn_tol *tol) |
Intersect two 3D line segments, defined by two points and two vectors. The vectors are unlikely to be unit length. | |
int | bn_isect_line3_line3 (fastf_t *t, fastf_t *u, const fastf_t *p, const fastf_t *d, const fastf_t *a, const fastf_t *c, const struct bn_tol *tol) |
int | bn_isect_line_lseg (fastf_t *t, const fastf_t *p, const fastf_t *d, const fastf_t *a, const fastf_t *b, const struct bn_tol *tol) |
Intersect a line in parametric form:. | |
double | bn_dist_line3_pt3 (const fastf_t *pt, const fastf_t *dir, const fastf_t *a) |
Given a parametric line defined by PT + t * DIR and a point A, return the closest distance between the line and the point. | |
double | bn_distsq_line3_pt3 (const fastf_t *pt, const fastf_t *dir, const fastf_t *a) |
double | bn_dist_line_origin (const fastf_t *pt, const fastf_t *dir) |
Given a parametric line defined by PT + t * DIR, return the closest distance between the line and the origin. | |
double | bn_dist_line2_point2 (const fastf_t *pt, const fastf_t *dir, const fastf_t *a) |
Given a parametric line defined by PT + t * DIR and a point A, return the closest distance between the line and the point. | |
double | bn_distsq_line2_point2 (const fastf_t *pt, const fastf_t *dir, const fastf_t *a) |
Given a parametric line defined by PT + t * DIR and a point A, return the closest distance between the line and the point, squared. | |
double | bn_area_of_triangle (register const fastf_t *a, register const fastf_t *b, register const fastf_t *c) |
Returns the area of a triangle. Algorithm by Jon Leech 3/24/89. | |
int | bn_isect_pt_lseg (fastf_t *dist, const fastf_t *a, const fastf_t *b, const fastf_t *p, const struct bn_tol *tol) |
Intersect a point P with the line segment defined by two distinct points A and B. | |
int | bn_isect_pt2_lseg2 (fastf_t *dist, const fastf_t *a, const fastf_t *b, const fastf_t *p, const struct bn_tol *tol) |
Intersect a point P with the line segment defined by two distinct points A and B. | |
int | bn_dist_pt3_lseg3 (fastf_t *dist, fastf_t *pca, const fastf_t *a, const fastf_t *b, const fastf_t *p, const struct bn_tol *tol) |
Find the distance from a point P to a line segment described by the two endpoints A and B, and the point of closest approach (PCA). | |
int | bn_dist_pt2_lseg2 (fastf_t *dist_sq, fastf_t *pca, const fastf_t *a, const fastf_t *b, const fastf_t *p, const struct bn_tol *tol) |
Find the distance from a point P to a line segment described by the two endpoints A and B, and the point of closest approach (PCA). | |
void | bn_rotate_bbox (fastf_t *omin, fastf_t *omax, const fastf_t *mat, const fastf_t *imin, const fastf_t *imax) |
Transform a bounding box (RPP) by the given 4x4 matrix. There are 8 corners to the bounding RPP. Each one needs to be transformed and min/max'ed. This is not minimal, but does fully contain any internal object, using an axis-aligned RPP. | |
void | bn_rotate_plane (fastf_t *oplane, const fastf_t *mat, const fastf_t *iplane) |
Transform a plane equation by the given 4x4 matrix. | |
int | bn_coplanar (const fastf_t *a, const fastf_t *b, const struct bn_tol *tol) |
Test if two planes are identical. If so, their dot products will be either +1 or -1, with the distance from the origin equal in magnitude. | |
double | bn_angle_measure (fastf_t *vec, const fastf_t *x_dir, const fastf_t *y_dir) |
double | bn_dist_pt3_along_line3 (const fastf_t *p, const fastf_t *d, const fastf_t *x) |
Return the parametric distance t of a point X along a line defined as a ray, i.e. solve X = P + t * D. If the point X does not lie on the line, then t is the distance of the perpendicular projection of point X onto the line. | |
double | bn_dist_pt2_along_line2 (const fastf_t *p, const fastf_t *d, const fastf_t *x) |
Return the parametric distance t of a point X along a line defined as a ray, i.e. solve X = P + t * D. If the point X does not lie on the line, then t is the distance of the perpendicular projection of point X onto the line. | |
int | bn_between (double left, double mid, double right, const struct bn_tol *tol) |
int | bn_does_ray_isect_tri (const point_t pt, const vect_t dir, const point_t V, const point_t A, const point_t B, point_t inter) |
int | bn_hlf_class (const fastf_t *half_eqn, const fastf_t *min, const fastf_t *max, const struct bn_tol *tol) |
Classify a halfspace, specified by its plane equation, against a bounding RPP. | |
int | bn_distsq_line3_line3 (fastf_t *dist, fastf_t *P, fastf_t *d_in, fastf_t *Q, fastf_t *e_in, fastf_t *pt1, fastf_t *pt2) |
Calculate the square of the distance of closest approach for two lines. | |
int | bn_isect_planes (fastf_t *pt, const fastf_t(*planes)[4], const int pl_count) |
Calculates the point that is the minimum distance from all the planes in the "planes" array. If the planes intersect at a single point, that point is the solution. | |
int | bn_isect_lseg_rpp (fastf_t *a, fastf_t *b, register fastf_t *min, register fastf_t *max) |
Intersect a line segment with a rectangular parallelpiped (RPP) that has faces parallel to the coordinate planes (a clipping RPP). The RPP is defined by a minimum point and a maximum point. This is a very close relative to rt_in_rpp() from librt/shoot.c. |
|
|
|
Returns distance between two points. B N _ D I S T _ P T 3 _ P T 3 |
|
B N _ P T 3 _ P T 3 _ E Q U A L
Definition at line 81 of file plane.c. References BN_CK_TOL, bn_tol::dist_sq, MAGSQ, and VSUB2. |
|
B N _ P T 2 _ P T 2 _ E Q U A L
Definition at line 99 of file plane.c. References BN_CK_TOL, bn_tol::dist_sq, MAGSQ_2D, and VSUB2_2D. Referenced by bn_isect_line2_lseg2(). |
|
Check to see if three points are collinear. B N _ 3 P T S _ C O L L I N E A R The algorithm is designed to work properly regardless of the order in which the points are provided.
|
|
B N _ 3 P T S _ D I S T I N C T Check to see if three points are all distinct, i.e., ensure that there is at least sqrt(dist_tol_sq) distance between every pair of points.
Definition at line 187 of file plane.c. References BN_CK_TOL, bn_tol::dist_sq, MAGSQ, and VSUB2. |
|
B N _ M K _ P L A N E _ 3 P T S Find the equation of a plane that contains three points. Note that normal vector created is expected to point out (see vmath.h), so the vector from A to C had better be counter-clockwise (about the point A) from the vector from A to B. This follows the BRL-CAD outward-pointing normal convention, and the right-hand rule for cross products.
* * C * * * |\ * | \ * ^ N | \ * | \ | \ * | \ | \ * |C-A \ | \ * | \ | \ * | \ | \ * \| \ * *---------* * A B * -----> * B-A If the points are given in the order A B C (eg, *counter*-clockwise), then the outward pointing surface normal N = (B-A) x (C-A).
Definition at line 247 of file plane.c. References BN_CK_TOL, bu_log(), bn_tol::dist_sq, MAGNITUDE, MAGSQ, SMALL_FASTF, VCROSS, VDOT, VSCALE, and VSUB2. Here is the call graph for this function: ![]() |
|
Given the description of three planes, compute the point of intersection, if any. B N _ M K P O I N T _ 3 P L A N E S Find the solution to a system of three equations in three unknowns: * Px * Ax + Py * Ay + Pz * Az = -A3; * Px * Bx + Py * By + Pz * Bz = -B3; * Px * Cx + Py * Cy + Pz * Cz = -C3; * * or * * [ Ax Ay Az ] [ Px ] [ -A3 ] * [ Bx By Bz ] * [ Py ] = [ -B3 ] * [ Cx Cy Cz ] [ Pz ] [ -C3 ] *
Definition at line 323 of file plane.c. References NEAR_ZERO, SMALL_FASTF, VCROSS, VDOT, X, Y, and Z. |
|
Returns non-zero if the 3 lines are colinear to within tol->dist over the given distance range. B N _ 2 L I N E 3 _ C O L I N E A R Range should be at least one model diameter for most applications. 1e5 might be OK for a default for "vehicle sized" models. The direction vectors do not need to be unit length. Definition at line 361 of file plane.c. References BN_CK_TOL, bn_distsq_line3_pt3(), bu_bomb(), bu_debug, BU_DEBUG_MATH, bu_log(), bn_tol::dist_sq, MAGNITUDE, SMALL_FASTF, tail, VDOT, and VJOIN1. Here is the call graph for this function: ![]() |
|
B N _ I S E C T _ L I N E 3 _ P L A N E Intersect an infinite line (specified in point and direction vector form) with a plane that has an outward pointing normal. The direction vector need not have unit length. The first three elements of the plane equation must form a unit lengh vector.
Definition at line 425 of file plane.c. References BN_CK_TOL, bn_tol::dist, bn_tol::perp, SMALL_FASTF, VDOT, VMOVE, and VUNITIZE. |
|
Given two planes, find the line of intersection between them, if one exists. The line of intersection is returned in parametric line (point & direction vector) form. B N _ I S E C T _ 2 P L A N E S In order that all the geometry under consideration be in "front" of the ray, it is necessary to pass the minimum point of the model RPP. If this convention is unnecessary, just pass (0,0,0) as rpp_min.
Definition at line 490 of file plane.c. References bn_coplanar(), bn_mkpoint_3planes(), LOCAL, VCROSS, VREVERSE, VSET, VUNITIZE, X, Y, and Z. Here is the call graph for this function: ![]() |
|
B N _ I S E C T _ L I N E 2 _ L I N E 2 Intersect two lines, each in given in parametric form: X = P + t * D and X = A + u * C The direction vectors C and D need not have unit length.
Definition at line 602 of file plane.c. References BN_CK_TOL, bu_debug, BU_DEBUG_MATH, bu_log(), DETERMINANT_TOL, bn_tol::dist, bn_tol::dist_sq, MAGSQ_2D, NEAR_ZERO, bn_tol::para, V2ARGS, VDOT, VJOIN1_2D, VSUB2_2D, VUNITIZE, X, and Y. Here is the call graph for this function: ![]() |
|
Intersect a line in parametric form:. B N _ I S E C T _ L I N E 2 _ L S E G 2 X = P + t * D with a line segment defined by two distinct points A and B=(A+C). XXX probably should take point B, not vector C. Sigh.
Definition at line 825 of file plane.c. References bn_between(), BN_CK_TOL, bn_dist_pt2_along_line2(), bn_distsq_line2_point2(), bn_isect_line2_line2(), bn_isect_pt2_lseg2(), bn_pt2_pt2_equal(), bu_bomb(), bu_debug, BU_DEBUG_MATH, bu_log(), bn_tol::dist, bn_tol::dist_sq, MAGSQ_2D, V2ARGS, V2PRINT, VADD2_2D, VJOIN1_2D, X, and Y. Here is the call graph for this function: ![]() |
|
Intersect two 2D line segments, defined by two points and two vectors. The vectors are unlikely to be unit length. B N _ I S E C T _ L S E G 2 _ L S E G 2
Definition at line 1036 of file plane.c. References BN_CK_TOL, bn_isect_line2_line2(), bu_debug, BU_DEBUG_MATH, bu_log(), bn_tol::dist, MAGSQ_2D, status, and V2ARGS. Here is the call graph for this function: ![]() |
|
Intersect two 3D line segments, defined by two points and two vectors. The vectors are unlikely to be unit length. B N _ I S E C T _ L S E G 3 _ L S E G 3
Definition at line 1138 of file plane.c. References BN_CK_TOL, bn_isect_line3_line3(), bu_bomb(), bu_debug, BU_DEBUG_MATH, bu_log(), bn_tol::dist, MAGNITUDE, SMALL_FASTF, status, and V2ARGS. Here is the call graph for this function: ![]() |
|
B N _ I S E C T _ L I N E 3 _ L I N E 3 Intersect two lines, each in given in parametric form: X = P + t * D and X = A + u * C While the parametric form is usually used to denote a ray (ie, positive values of the parameter only), in this case the full line is considered. The direction vectors C and D need not have unit length.
XXX It would be sensible to change the t,u pair to dist[2]. Definition at line 1257 of file plane.c. References BN_CK_TOL, bn_isect_line2_line2(), bn_pt3_pt3_equal(), bn_vec_ortho(), DETERMINANT_TOL, bn_tol::dist, LOCAL, MAGSQ, NEAR_ZERO, SMALL_FASTF, VCROSS, VDOT, VJOIN1, VSUB2, X, Y, and Z. Here is the call graph for this function: ![]() |
|
Intersect a line in parametric form:. B N _ I S E C T _ L I N E _ L S E G X = P + t * D with a line segment defined by two distinct points A and B.
Definition at line 1507 of file plane.c. References BN_CK_TOL, bn_dist_pt3_along_line3(), bn_distsq_line3_pt3(), bn_isect_line3_line3(), bu_debug, BU_DEBUG_MATH, bu_log(), bn_tol::dist, bn_tol::dist_sq, LOCAL, MAGSQ, and VSUB2. Here is the call graph for this function: ![]() |
|
Given a parametric line defined by PT + t * DIR and a point A, return the closest distance between the line and the point. B N _ D I S T _ L I N E 3_ P T 3 'dir' need not have unit length. Find parameter for PCA along line with unitized DIR: d = VDOT(f, dir) / MAGNITUDE(dir); Find distance g from PCA to A using Pythagoras: g = sqrt( MAGSQ(f) - d**2 ) Return - Distance Definition at line 1595 of file plane.c. References bu_debug, BU_DEBUG_MATH, bu_log(), LOCAL, MAGNITUDE, MAGSQ, SMALL_FASTF, VDOT, and VSUB2. Here is the call graph for this function: ![]() |
|
B N _ D I S T S Q _ L I N E 3 _ P T 3 Given a parametric line defined by PT + t * DIR and a point A, return the square of the closest distance between the line and the point. 'dir' need not have unit length. Return - Distance squared Definition at line 1631 of file plane.c. References bu_debug, BU_DEBUG_MATH, bu_log(), LOCAL, MAGNITUDE, SMALL_FASTF, VDOT, and VSUB2. Here is the call graph for this function: ![]() |
|
Given a parametric line defined by PT + t * DIR, return the closest distance between the line and the origin. B N _ D I S T _ L I N E _ O R I G I N 'dir' need not have unit length.
Definition at line 1663 of file plane.c. References MAGNITUDE, SMALL_FASTF, and VDOT. |
|
Given a parametric line defined by PT + t * DIR and a point A, return the closest distance between the line and the point. B N _ D I S T _ L I N E 2 _ P O I N T 2 'dir' need not have unit length.
Definition at line 1685 of file plane.c. References LOCAL, MAGSQ_2D, SMALL_FASTF, VDOT_2D, and VSUB2_2D. |
|
Given a parametric line defined by PT + t * DIR and a point A, return the closest distance between the line and the point, squared. B N _ D I S T S Q _ L I N E 2 _ P O I N T 2 'dir' need not have unit length.
Definition at line 1711 of file plane.c. References LOCAL, MAGSQ_2D, SMALL_FASTF, VDOT_2D, and VSUB2_2D. |
|
Returns the area of a triangle. Algorithm by Jon Leech 3/24/89. B N _ A R E A _ O F _ T R I A N G L E |
|
Intersect a point P with the line segment defined by two distinct points A and B. B N _ I S E C T _ P T _ L S E G
Definition at line 1788 of file plane.c. References BN_CK_TOL, bn_tol::dist_sq, MAGSQ, VDOT, VMOVE, VSCALE, and VSUB2. |
|
Intersect a point P with the line segment defined by two distinct points A and B. B N _ I S E C T _ P T 2 _ L S E G 2
Definition at line 1874 of file plane.c. References BN_CK_TOL, bu_debug, BU_DEBUG_MATH, bu_log(), bn_tol::dist_sq, MAGSQ_2D, V2PRINT, VDOT_2D, VMOVE_2D, VSCALE_2D, and VSUB2_2D. Here is the call graph for this function: ![]() |
|
Find the distance from a point P to a line segment described by the two endpoints A and B, and the point of closest approach (PCA). B N _ D I S T _ P T 3 _ L S E G 3 * * P * * * /. * / . * / . * / . (dist) * / . * / . * *------*--------* * A PCA B
XXX For efficiency, a version of this routine that provides the XXX distance squared would be faster. Definition at line 1969 of file plane.c. References BN_CK_TOL, bu_debug, BU_DEBUG_MATH, bu_log(), bn_tol::dist, bn_tol::dist_sq, MAGSQ, V3ARGS, VDOT, VJOIN1, VMOVE, and VSUB2. Here is the call graph for this function: ![]() |
|
Find the distance from a point P to a line segment described by the two endpoints A and B, and the point of closest approach (PCA). B N _ D I S T _ P T 2 _ L S E G 2 * P * * * /. * / . * / . * / . (dist) * / . * / . * *------*--------* * A PCA B
Definition at line 2090 of file plane.c. References BN_CK_TOL, bu_debug, BU_DEBUG_MATH, bu_log(), bn_tol::dist, bn_tol::dist_sq, MAGSQ_2D, V2JOIN1, V2MOVE, V3ARGS, VDOT_2D, and VSUB2_2D. Here is the call graph for this function: ![]() |
|
Transform a bounding box (RPP) by the given 4x4 matrix. There are 8 corners to the bounding RPP. Each one needs to be transformed and min/max'ed. This is not minimal, but does fully contain any internal object, using an axis-aligned RPP. B N _ R O T A T E _ B B O X Definition at line 2187 of file plane.c. References ROT_VERT. |
|
Transform a plane equation by the given 4x4 matrix. B N _ R O T A T E _ P L A N E |
|
Test if two planes are identical. If so, their dot products will be either +1 or -1, with the distance from the origin equal in magnitude. B N _ C O P L A N A R
Definition at line 2248 of file plane.c. References BN_CK_TOL, bn_tol::dist, NEAR_ZERO, and VDOT. |
|
B N _ A N G L E _ M E A S U R E Using two perpendicular vectors (x_dir and y_dir) which lie in the same plane as 'vec', return the angle (in radians) of 'vec' from x_dir, going CCW around the perpendicular x_dir CROSS y_dir. Trig note - theta = atan2(x,y) returns an angle in the range -pi to +pi. Here, we need an angle in the range of 0 to 2pi. This could be implemented by adding 2pi to theta when theta is negative, but this could have nasty numeric ambiguity right in the vicinity of theta = +pi, which is a very critical angle for the applications using this routine. So, an alternative formulation is to compute gamma = atan2(-x,-y), and then theta = gamma + pi. Now, any error will occur in the vicinity of theta = 0, which can be handled much more readily. If theta is negative, or greater than two pi, wrap it around. These conditions only occur if there are problems in atan2().
Definition at line 2313 of file plane.c. References bn_pi, bn_twopi, bu_bomb(), and VDOT. Here is the call graph for this function: ![]() |
|
Return the parametric distance t of a point X along a line defined as a ray, i.e. solve X = P + t * D. If the point X does not lie on the line, then t is the distance of the perpendicular projection of point X onto the line. B N _ D I S T _ P T 3 _ A L O N G _ L I N E 3 |
|
Return the parametric distance t of a point X along a line defined as a ray, i.e. solve X = P + t * D. If the point X does not lie on the line, then t is the distance of the perpendicular projection of point X onto the line. B N _ D I S T _ P T 2 _ A L O N G _ L I N E 2 Definition at line 2363 of file plane.c. References bu_debug, BU_DEBUG_MATH, bu_log(), V2ARGS, VDOT_2D, and VSUB2_2D. Here is the call graph for this function: ![]() |
|
Definition at line 2386 of file plane.c. References BN_CK_TOL, bu_debug, BU_DEBUG_MATH, bu_log(), bn_tol::dist, and NEAR_ZERO. Referenced by bn_isect_line2_lseg2(), nmg_break_eg_on_v(), and nmg_isect_line2_edge2p(). Here is the call graph for this function: ![]() |
|
B N _ D O E S _ R A Y _ I S E C T _ T R I
Definition at line 2421 of file plane.c. References NEAR_ZERO, SMALL_FASTF, VCROSS, VDOT, VJOIN1, VSUB2, and VUNITIZE. |
|
Classify a halfspace, specified by its plane equation, against a bounding RPP. B N _ H L F _ C L A S S
Definition at line 2589 of file plane.c. References BN_CLASSIFY_UNIMPLEMENTED, bu_log(), CHECK_PT, V3ARGS, X, Y, and Z. Here is the call graph for this function: ![]() |
|
Calculate the square of the distance of closest approach for two lines. B N _ D I S T S Q _ L I N E 3 _ L I N E 3 The lines are specifed as a point and a vector each. The vectors need not be unit length. P and d define one line; Q and e define the other.
This algoritm is based on expressing the distance sqaured, taking partials with respect to the two unknown parameters (dist[0] and dist[1]), seeting the two partails equal to 0, and solving the two simutaneous equations Definition at line 2647 of file plane.c. References bu_bomb(), MAGNITUDE, MAGSQ, NEAR_ZERO, SMALL_FASTF, VBLEND2, VDOT, VJOIN1, VSCALE, and VSUB2. Here is the call graph for this function: ![]() |
|
Calculates the point that is the minimum distance from all the planes in the "planes" array. If the planes intersect at a single point, that point is the solution. B N _ I S E C T _ P L A N E S The method used here is based on: An expression for the distance from a point to a plane is VDOT(pt,plane)-plane[H]. Square that distance and sum for all planes to get the "total" distance. For minimum total distance, the partial derivatives of this expression (with respect to x, y, and z) must all be zero. This produces a set of three equations in three unknowns (x, y, and z). This routine sets up the three equations as [matrix][pt] = [hpq] and solves by inverting "matrix" into "inverse" and [pt] = [inverse][hpq]. There is likely a more economical solution rather than matrix inversion, but bn_mat_inv was handy at the time. Checks if these planes form a singular matrix and returns.
Definition at line 2728 of file plane.c. References bu_debug, BU_DEBUG_MATH, bu_log(), and V4ARGS. Here is the call graph for this function: ![]() |
|
Intersect a line segment with a rectangular parallelpiped (RPP) that has faces parallel to the coordinate planes (a clipping RPP). The RPP is defined by a minimum point and a maximum point. This is a very close relative to rt_in_rpp() from librt/shoot.c. B N _ I S E C T _ L S E G _ R P P
Definition at line 2799 of file plane.c. References MAX_FASTF, SQRT_SMALL_FASTF, st, and VSUB2. |