Support for intersecting geometric rays with NMG models.
More...
Support for intersecting geometric rays with NMG models.
TODO - these structs and ray_in_rpp are versions of librt functionality, and we need to think about how/where to merge them into a common function and struct that are available to both libraries without introducing a coupling dependency.
◆ NMG_HIT_LIST
Definition at line 48 of file ray.h.
◆ NMG_MISS_LIST
Definition at line 49 of file ray.h.
◆ HMG_INBOUND_STATE
#define HMG_INBOUND_STATE |
( |
|
_hm | ) |
(((_hm)->in_out & 0x0f0) >> 4) |
Definition at line 54 of file ray.h.
◆ HMG_OUTBOUND_STATE
#define HMG_OUTBOUND_STATE |
( |
|
_hm | ) |
((_hm)->in_out & 0x0f) |
Definition at line 55 of file ray.h.
◆ NMG_RAY_STATE_INSIDE
#define NMG_RAY_STATE_INSIDE 1 |
Definition at line 58 of file ray.h.
◆ NMG_RAY_STATE_ON
#define NMG_RAY_STATE_ON 2 |
Definition at line 59 of file ray.h.
◆ NMG_RAY_STATE_OUTSIDE
#define NMG_RAY_STATE_OUTSIDE 4 |
Definition at line 60 of file ray.h.
◆ NMG_RAY_STATE_ANY
#define NMG_RAY_STATE_ANY 8 |
Definition at line 61 of file ray.h.
◆ HMG_HIT_IN_IN
#define HMG_HIT_IN_IN 0x11 |
hit internal structure
Definition at line 63 of file ray.h.
◆ HMG_HIT_IN_OUT
#define HMG_HIT_IN_OUT 0x14 |
breaking out
Definition at line 64 of file ray.h.
◆ HMG_HIT_OUT_IN
#define HMG_HIT_OUT_IN 0x41 |
breaking in
Definition at line 65 of file ray.h.
◆ HMG_HIT_OUT_OUT
#define HMG_HIT_OUT_OUT 0x44 |
edge/vertex graze
Definition at line 66 of file ray.h.
◆ HMG_HIT_IN_ON
#define HMG_HIT_IN_ON 0x12 |
Definition at line 67 of file ray.h.
◆ HMG_HIT_ON_IN
#define HMG_HIT_ON_IN 0x21 |
Definition at line 68 of file ray.h.
◆ HMG_HIT_ON_ON
#define HMG_HIT_ON_ON 0x22 |
Definition at line 69 of file ray.h.
◆ HMG_HIT_OUT_ON
#define HMG_HIT_OUT_ON 0x42 |
Definition at line 70 of file ray.h.
◆ HMG_HIT_ON_OUT
#define HMG_HIT_ON_OUT 0x24 |
Definition at line 71 of file ray.h.
◆ HMG_HIT_ANY_ANY
#define HMG_HIT_ANY_ANY 0x88 |
hit on non-3-manifold
Definition at line 72 of file ray.h.
◆ NMG_VERT_ENTER
Definition at line 74 of file ray.h.
◆ NMG_VERT_ENTER_LEAVE
#define NMG_VERT_ENTER_LEAVE 0 |
Definition at line 75 of file ray.h.
◆ NMG_VERT_LEAVE
#define NMG_VERT_LEAVE -1 |
Definition at line 76 of file ray.h.
◆ NMG_VERT_UNKNOWN
#define NMG_VERT_UNKNOWN -2 |
Definition at line 77 of file ray.h.
◆ NMG_HITMISS_SEG_IN
#define NMG_HITMISS_SEG_IN 0x696e00 |
"in"
Definition at line 79 of file ray.h.
◆ NMG_HITMISS_SEG_OUT
#define NMG_HITMISS_SEG_OUT 0x6f757400 |
"out"
Definition at line 80 of file ray.h.
◆ NMG_CK_RD
Definition at line 82 of file ray.h.
◆ NMG_CK_HITMISS
#define NMG_CK_HITMISS |
( |
|
hm | ) |
|
Value: {\
switch (hm->l.magic) { \
break; \
bu_log(
CPP_FILELINE ": struct hitmiss has NMG_MISS_LIST magic #\n"); \
bu_bomb("NMG_CK_HITMISS: going down in flames\n"); \
break; \
bu_log(
CPP_FILELINE ": struct hitmiss has NMG_MISS_LIST magic #\n"); \
bu_bomb("NMG_CK_HITMISS: going down in flames\n"); \
break; \
default: \
bu_log(
CPP_FILELINE ": bad struct hitmiss magic: %u:(0x%08x)\n", \
hm->l.magic, hm->l.magic); \
bu_bomb("NMG_CK_HITMISS: going down in flames\n"); \
}\
if (!hm->hit.hit_private) { \
bu_log(
CPP_FILELINE ": NULL hit_private in hitmiss struct\n"); \
bu_bomb("NMG_CK_HITMISS: going down in flames\n"); \
} \
}
#define NMG_RT_HIT_SUB_MAGIC
#define NMG_RT_MISS_MAGIC
Definition at line 87 of file ray.h.
◆ NMG_CK_HITMISS_LISTS
#define NMG_CK_HITMISS_LISTS |
( |
|
rd | ) |
|
Value: { \
}
#define BU_LIST_FOR(p, structure, headp)
#define NMG_CK_HITMISS(hm)
Definition at line 117 of file ray.h.
◆ NMG_GET_HITMISS
#define NMG_GET_HITMISS |
( |
|
_p | ) |
|
Value: { \
}
#define BU_LIST_DEQUEUE(cur)
#define BU_LIST_FIRST(structure, headp)
#define BU_LIST_IS_HEAD(p, headp)
struct bu_list re_nmgfree
head of NMG hitmiss freelist
Definition at line 125 of file ray.h.
◆ NMG_FREE_HITLIST
#define NMG_FREE_HITLIST |
( |
|
_p | ) |
|
Value: { \
BU_CK_LIST_HEAD((_p)); \
}
Definition at line 134 of file ray.h.
◆ nmg_bu_bomb
#define nmg_bu_bomb |
( |
|
rd, |
|
|
|
vlfree, |
|
|
|
str |
|
) |
| |
Value: { \
bu_log("%s", str); \
BU_LIST_INIT(&rd->rd_hit); \
BU_LIST_INIT(&rd->rd_miss); \
nmg_isect_ray_model(rd,vlfree); \
bu_bomb("Should have bombed before this\n"); \
}
NORETURN void bu_bomb(const char *str)
#define NMG_DEBUG_NMGRT
17 ray tracing
uint32_t nmg_debug
debug bits for NMG's
Definition at line 142 of file ray.h.
◆ HIT
a hit on a face
Definition at line 154 of file ray.h.
◆ MISS
a miss on the face
Definition at line 155 of file ray.h.
◆ ray_in_rpp()
◆ nmg_class_ray_vs_shell()
int nmg_class_ray_vs_shell |
( |
struct nmg_ray * |
rp, |
|
|
const struct shell * |
s, |
|
|
const int |
in_or_out_only, |
|
|
struct bu_list * |
vlfree, |
|
|
const struct bn_tol * |
tol |
|
) |
| |
◆ nmg_isect_ray_model()
◆ re_nmgfree
head of NMG hitmiss freelist