BRL-CAD
loop.h File Reference
#include "common.h"
#include "vmath.h"
#include "bu/list.h"
#include "nmg/defines.h"
#include "nmg/topology.h"
Include dependency graph for loop.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define NMG_CK_LOOP(_p)   NMG_CKMAG(_p, NMG_LOOP_MAGIC, "loop")
 
#define NMG_CK_LOOP_A(_p)   NMG_CKMAG(_p, NMG_LOOP_A_MAGIC, "loop_a")
 
#define NMG_CK_LOOPUSE(_p)   NMG_CKMAG(_p, NMG_LOOPUSE_MAGIC, "loopuse")
 
#define GET_LOOP(p, m)   {NMG_GETSTRUCT(p, loop); NMG_INCR_INDEX(p, m);}
 
#define GET_LOOP_A(p, m)   {NMG_GETSTRUCT(p, loop_a); NMG_INCR_INDEX(p, m);}
 
#define GET_LOOPUSE(p, m)   {NMG_GETSTRUCT(p, loopuse); NMG_INCR_INDEX(p, m);}
 
#define GET_LOOPUSE_A(p, m)   {NMG_GETSTRUCT(p, loopuse_a); NMG_INCR_INDEX(p, m);}
 
#define FREE_LOOP(p)   NMG_FREESTRUCT(p, loop)
 
#define FREE_LOOP_A(p)   NMG_FREESTRUCT(p, loop_a)
 
#define FREE_LOOPUSE(p)   NMG_FREESTRUCT(p, loopuse)
 
#define FREE_LOOPUSE_A(p)   NMG_FREESTRUCT(p, loopuse_a)
 

Functions

void nmg_loop_a (struct loop *l, const struct bn_tol *tol)
 Build the bounding box for a loop. More...
 
int nmg_demote_lu (struct loopuse *lu)
 Demote a loopuse of edgeuses to a bunch of wire edges in the shell. More...
 
struct loopusenmg_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 vertexuse? or both? ctj. More...
 
int nmg_klu (struct loopuse *lu1)
 Kill loopuse, loopuse mate, and loop. More...
 
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 deleted. More...
 
struct vertexusenmg_join_2loops (struct vertexuse *vu1, struct vertexuse *vu2)
 Intended to join an interior and exterior loop together, by building a bridge between the two indicated vertices. More...
 
struct vertexusenmg_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 back to vu1, and the old loop at vu2 is destroyed. More...
 
struct vertexusenmg_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 them together, with a single edge (two edgeuses). Loop on vu2 is killed. More...
 
struct loopusenmg_cut_loop (struct vertexuse *vu1, struct vertexuse *vu2, struct bu_list *vlfree)
 Divide a loop of edges between two vertexuses. More...
 
struct loopusenmg_split_lu_at_vu (struct loopuse *lu, struct vertexuse *vu)
 
struct vertexusenmg_find_repeated_v_in_lu (struct vertexuse *vu)
 
void nmg_split_touchingloops (struct loopuse *lu, const struct bn_tol *tol)
 
int nmg_join_touchingloops (struct loopuse *lu)
 
int nmg_get_touching_jaunts (const struct loopuse *lu, struct bu_ptbl *tbl, int *need_init)
 
void nmg_kill_accordions (struct loopuse *lu)
 
int nmg_loop_split_at_touching_jaunt (struct loopuse *lu, const struct bn_tol *tol)
 
void nmg_simplify_loop (struct loopuse *lu, struct bu_list *vlfree)
 
int nmg_kill_snakes (struct loopuse *lu, struct bu_list *vlfree)
 
void nmg_mv_lu_between_shells (struct shell *dest, struct shell *src, struct loopuse *lu)
 
void nmg_moveltof (struct faceuse *fu, struct shell *s)
 
struct loopusenmg_dup_loop (struct loopuse *lu, uint32_t *parent, long **trans_tbl)
 
void nmg_set_lu_orientation (struct loopuse *lu, int is_opposite)
 
void nmg_lu_reorient (struct loopuse *lu)
 
struct edgeusenmg_eusplit (struct vertex *v, struct edgeuse *oldeu, int share_geom)
 
struct edgeusenmg_esplit (struct vertex *v, struct edgeuse *eu, int share_geom)
 
struct edgeusenmg_ebreak (struct vertex *v, struct edgeuse *eu)
 
struct edgeusenmg_ebreaker (struct vertex *v, struct edgeuse *eu, const struct bn_tol *tol)
 
struct vertexnmg_e2break (struct edgeuse *eu1, struct edgeuse *eu2)
 
int nmg_unbreak_edge (struct edgeuse *eu1_first)
 
int nmg_unbreak_shell_edge_unsafe (struct edgeuse *eu1_first)
 
struct edgeusenmg_eins (struct edgeuse *eu)
 
void nmg_mv_eu_between_shells (struct shell *dest, struct shell *src, struct edgeuse *eu)
 
struct loopusenmg_find_lu_of_vu (const struct vertexuse *vu)
 
int nmg_loop_is_a_crack (const struct loopuse *lu)
 
int nmg_loop_is_ccw (const struct loopuse *lu, const vect_t norm, const struct bn_tol *tol)
 
const struct vertexusenmg_loop_touches_self (const struct loopuse *lu)
 
int nmg_2lu_identical (const struct edgeuse *eu1, const struct edgeuse *eu2)
 
struct vertexusenmg_find_pnt_in_lu (const struct loopuse *lu, const point_t pt, const struct bn_tol *tol)
 
int nmg_is_vertex_in_looplist (const struct vertex *v, const struct bu_list *hd, int singletons)
 
int nmg_is_edge_in_looplist (const struct edge *e, const struct bu_list *hd)
 
struct vertexusenmg_find_vertex_in_lu (const struct vertex *v, const struct loopuse *lu)
 
void nmg_fix_overlapping_loops (struct shell *s, struct bu_list *vlfree, const struct bn_tol *tol)
 
void nmg_break_crossed_loops (struct shell *is, const struct bn_tol *tol)
 
void nmg_loop_plane_newell (const struct loopuse *lu, plane_t pl)
 
fastf_t nmg_loop_plane_area (const struct loopuse *lu, plane_t pl)
 
fastf_t nmg_loop_plane_area2 (const struct loopuse *lu, plane_t pl, const struct bn_tol *tol)
 
int nmg_lu_is_convex (struct loopuse *lu, struct bu_list *vlfree, const struct bn_tol *tol)
 
int nmg_classify_pnt_loop (const point_t pt, const struct loopuse *lu, struct bu_list *vlfree, 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)
 
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)
 
void nmg_ck_lu_orientation (struct loopuse *lu, const struct bn_tol *tolp)