38#define NMG_CK_LOOP(_p) NMG_CKMAG(_p, NMG_LOOP_MAGIC, "loop")
39#define NMG_CK_LOOP_A(_p) NMG_CKMAG(_p, NMG_LOOP_A_MAGIC, "loop_a")
40#define NMG_CK_LOOPUSE(_p) NMG_CKMAG(_p, NMG_LOOPUSE_MAGIC, "loopuse")
42#define GET_LOOP(p, m) {NMG_GETSTRUCT(p, loop); NMG_INCR_INDEX(p, m);}
43#define GET_LOOP_A(p, m) {NMG_GETSTRUCT(p, loop_a); NMG_INCR_INDEX(p, m);}
44#define GET_LOOPUSE(p, m) {NMG_GETSTRUCT(p, loopuse); NMG_INCR_INDEX(p, m);}
45#define GET_LOOPUSE_A(p, m) {NMG_GETSTRUCT(p, loopuse_a); NMG_INCR_INDEX(p, m);}
47#define FREE_LOOP(p) NMG_FREESTRUCT(p, loop)
48#define FREE_LOOP_A(p) NMG_FREESTRUCT(p, loop_a)
49#define FREE_LOOPUSE(p) NMG_FREESTRUCT(p, loopuse)
50#define FREE_LOOPUSE_A(p) NMG_FREESTRUCT(p, loopuse_a)
244 const struct bn_tol *tol);
251 const struct bn_tol *tol);
276 const struct bn_tol *tol);
290 const struct bn_tol *tol);
297 const struct bn_tol *tol);
315 const struct bn_tol *tol);
320 const struct bn_tol *tol);
324 const struct bn_tol *tol);
329 const struct bn_tol *tol);
332 const struct edge *e_p,
334 const struct bn_tol *tol);
336 const struct bn_tol *tolp);
Header file for the BRL-CAD common definitions.
void nmg_kill_accordions(struct loopuse *lu)
struct edgeuse * nmg_eusplit(struct vertex *v, struct edgeuse *oldeu, int share_geom)
struct edgeuse * nmg_ebreak(struct vertex *v, struct edgeuse *eu)
struct edgeuse * nmg_eins(struct edgeuse *eu)
void nmg_lu_reorient(struct loopuse *lu)
int nmg_loop_is_ccw(const struct loopuse *lu, const vect_t norm, const struct bn_tol *tol)
struct vertexuse * nmg_find_repeated_v_in_lu(struct vertexuse *vu)
int nmg_unbreak_shell_edge_unsafe(struct edgeuse *eu1_first)
struct vertex * nmg_e2break(struct edgeuse *eu1, struct edgeuse *eu2)
int nmg_is_vertex_in_looplist(const struct vertex *v, const struct bu_list *hd, int singletons)
fastf_t nmg_loop_plane_area2(const struct loopuse *lu, plane_t pl, const struct bn_tol *tol)
void nmg_break_crossed_loops(struct shell *is, const struct bn_tol *tol)
int nmg_lu_is_convex(struct loopuse *lu, struct bu_list *vlfree, const struct bn_tol *tol)
void nmg_jl(struct loopuse *lu, struct edgeuse *eu)
Join two loops together which share a common edge, such that both occurrences of the common edge are ...
int nmg_2lu_identical(const struct edgeuse *eu1, const struct edgeuse *eu2)
void nmg_loop_plane_newell(const struct loopuse *lu, plane_t pl)
int nmg_class_pnt_lu_except(point_t pt, const struct loopuse *lu, const struct edge *e_p, struct bu_list *vlfree, const struct bn_tol *tol)
struct edgeuse * nmg_esplit(struct vertex *v, struct edgeuse *eu, int share_geom)
struct vertexuse * nmg_join_singvu_loop(struct vertexuse *vu1, struct vertexuse *vu2)
vu1 is in a regular loop, vu2 is in a loop of a single vertex A jaunt is taken from vu1 to vu2 and ba...
int nmg_is_edge_in_looplist(const struct edge *e, const struct bu_list *hd)
int nmg_join_touchingloops(struct loopuse *lu)
struct loopuse * nmg_mlv(uint32_t *magic, struct vertex *v, int orientation)
Make a new loop (with specified orientation) and vertex, in a shell or face. XXX - vertex or vertexus...
int nmg_unbreak_edge(struct edgeuse *eu1_first)
int nmg_kill_snakes(struct loopuse *lu, struct bu_list *vlfree)
struct loopuse * nmg_split_lu_at_vu(struct loopuse *lu, struct vertexuse *vu)
const struct vertexuse * nmg_loop_touches_self(const struct loopuse *lu)
struct vertexuse * nmg_find_vertex_in_lu(const struct vertex *v, const struct loopuse *lu)
struct edgeuse * nmg_ebreaker(struct vertex *v, struct edgeuse *eu, const struct bn_tol *tol)
void nmg_mv_lu_between_shells(struct shell *dest, struct shell *src, struct loopuse *lu)
int nmg_loop_is_a_crack(const struct loopuse *lu)
void nmg_simplify_loop(struct loopuse *lu, struct bu_list *vlfree)
void nmg_set_lu_orientation(struct loopuse *lu, int is_opposite)
void nmg_loop_a(struct loop *l, const struct bn_tol *tol)
Build the bounding box for a loop.
void nmg_moveltof(struct faceuse *fu, struct shell *s)
void nmg_mv_eu_between_shells(struct shell *dest, struct shell *src, struct edgeuse *eu)
struct vertexuse * nmg_join_2loops(struct vertexuse *vu1, struct vertexuse *vu2)
Intended to join an interior and exterior loop together, by building a bridge between the two indicat...
void nmg_fix_overlapping_loops(struct shell *s, struct bu_list *vlfree, const struct bn_tol *tol)
struct vertexuse * nmg_find_pnt_in_lu(const struct loopuse *lu, const point_t pt, const struct bn_tol *tol)
int nmg_classify_lu_lu(const struct loopuse *lu1, const struct loopuse *lu2, struct bu_list *vlfree, const struct bn_tol *tol)
fastf_t nmg_loop_plane_area(const struct loopuse *lu, plane_t pl)
int nmg_klu(struct loopuse *lu1)
Kill loopuse, loopuse mate, and loop.
int nmg_classify_pnt_loop(const point_t pt, const struct loopuse *lu, struct bu_list *vlfree, const struct bn_tol *tol)
struct loopuse * nmg_dup_loop(struct loopuse *lu, uint32_t *parent, long **trans_tbl)
int nmg_get_touching_jaunts(const struct loopuse *lu, struct bu_ptbl *tbl, int *need_init)
void nmg_ck_lu_orientation(struct loopuse *lu, const struct bn_tol *tolp)
int nmg_demote_lu(struct loopuse *lu)
Demote a loopuse of edgeuses to a bunch of wire edges in the shell.
struct loopuse * nmg_cut_loop(struct vertexuse *vu1, struct vertexuse *vu2, struct bu_list *vlfree)
Divide a loop of edges between two vertexuses.
struct vertexuse * nmg_join_2singvu_loops(struct vertexuse *vu1, struct vertexuse *vu2)
Both vertices are part of single vertex loops. Converts loop on vu1 into a real loop that connects th...
void nmg_split_touchingloops(struct loopuse *lu, const struct bn_tol *tol)
struct loopuse * nmg_find_lu_of_vu(const struct vertexuse *vu)
int nmg_loop_split_at_touching_jaunt(struct loopuse *lu, const struct bn_tol *tol)
fastf_t vect_t[ELEMENTS_PER_VECT]
3-tuple vector
double fastf_t
fastest 64-bit (or larger) floating point type
fastf_t plane_t[ELEMENTS_PER_PLANE]
Definition of a plane equation.
fastf_t point_t[ELEMENTS_PER_POINT]
3-tuple point
NMG topological edge usage.
NMG topological face usage.
NMG topological loop usage.
int orientation
OT_SAME=outside loop.
NMG topological vertex - the simplest element of the topology system.
NMG topological vertex usage.
struct bu_list l
list of all vu's on a vertex
fundamental vector, matrix, quaternion math macros