BRL-CAD
|
#include <ray.h>
Data Fields | |
uint32_t | magic |
struct model * | rd_m |
char * | manifolds |
structure 1-3manifold table More... | |
vect_t | rd_invdir |
struct nmg_ray * | rp |
void ** | ap |
struct nmg_seg * | seghead |
void ** | stp |
const struct bn_tol * | tol |
struct nmg_hitmiss ** | hitmiss |
1 struct hitmiss ptr per elem. More... | |
struct bu_list | rd_hit |
list of hit elements More... | |
struct bu_list | rd_miss |
list of missed/sub-hit elements More... | |
point_t | plane_pt |
ray/plane(face) intercept point More... | |
fastf_t | ray_dist_to_plane |
ray parametric dist to plane More... | |
int | face_subhit |
int | classifying_ray |
Ray Data structure
A) the hitmiss table has one element for each nmg structure in the nmgmodel. The table keeps track of which elements have been processed before and which haven't. Elements in this table will either be: (NULL) item not previously processed hitmiss ptr item previously processed
the 0th item in the array is a pointer to the head of the "hit" list. The 1th item in the array is a pointer to the head of the "miss" list.
B) If plane_pt is non-null then we are currently processing a face intersection. The plane_dist and ray_dist_to_plane are valid. The ray/edge intersector should check the distance from the plane intercept to the edge and update "plane_closest" if the current edge is closer to the intercept than the previous closest object.
struct nmg_hitmiss** hitmiss |
point_t plane_pt |
fastf_t ray_dist_to_plane |
int face_subhit |
the "face_subhit" element is a boolean used by isect_ray_face and [e|v]u_touch_func to record the fact that the ray/(plane/face) intercept point was within tolerance of an edge/vertex of the face. In such instances, isect_ray_face does NOT need to generate a hit point for the face, as the hit point for the edge/vertex will suffice.
int classifying_ray |