38#define NMG_CK_FACE(_p) NMG_CKMAG(_p, NMG_FACE_MAGIC, "face")
39#define NMG_CK_FACE_G_PLANE(_p) NMG_CKMAG(_p, NMG_FACE_G_PLANE_MAGIC, "face_g_plane")
40#define NMG_CK_FACE_G_SNURB(_p) NMG_CKMAG(_p, NMG_FACE_G_SNURB_MAGIC, "face_g_snurb")
41#define NMG_CK_FACE_G_EITHER(_p) NMG_CK2MAG(_p, NMG_FACE_G_PLANE_MAGIC, NMG_FACE_G_SNURB_MAGIC, "face_g_plane|face_g_snurb")
42#define NMG_CK_FACEUSE(_p) NMG_CKMAG(_p, NMG_FACEUSE_MAGIC, "faceuse")
47#define NMG_GET_FU_PLANE(_N, _fu) { \
48 register const struct faceuse *_fu1 = (_fu); \
49 register const struct face_g_plane *_fg; \
50 NMG_CK_FACEUSE(_fu1); \
51 NMG_CK_FACE(_fu1->f_p); \
52 _fg = _fu1->f_p->g.plane_p; \
53 NMG_CK_FACE_G_PLANE(_fg); \
54 if ((_fu1->orientation != OT_SAME) != (_fu1->f_p->flip != 0)) { \
55 HREVERSE(_N, _fg->N); \
61#define NMG_GET_FU_NORMAL(_N, _fu) { \
62 register const struct faceuse *_fu1 = (_fu); \
63 register const struct face_g_plane *_fg; \
64 NMG_CK_FACEUSE(_fu1); \
65 NMG_CK_FACE(_fu1->f_p); \
66 _fg = _fu1->f_p->g.plane_p; \
67 NMG_CK_FACE_G_PLANE(_fg); \
68 if ((_fu1->orientation != OT_SAME) != (_fu1->f_p->flip != 0)) { \
69 VREVERSE(_N, _fg->N); \
77#define NMG_GET_FU_PLANE(_N, _fu) { \
78 register const struct faceuse *_fu1 = (_fu); \
79 register const struct face_g_plane *_fg; \
80 NMG_CK_FACEUSE(_fu1); \
81 NMG_CK_FACE(_fu1->f_p); \
82 _fg = _fu1->f_p->g.plane_p; \
83 NMG_CK_FACE_G_PLANE(_fg); \
84 if ((_fu1->orientation != OT_SAME) != (_fu1->f_p->flip != 0)) { \
85 HREVERSE(_N, _fg->N); \
90#define GET_FACE(p, m) {NMG_GETSTRUCT(p, face); NMG_INCR_INDEX(p, m);}
91#define GET_FACE_G_PLANE(p, m) {NMG_GETSTRUCT(p, face_g_plane); NMG_INCR_INDEX(p, m);}
92#define GET_FACE_G_SNURB(p, m) {NMG_GETSTRUCT(p, face_g_snurb); NMG_INCR_INDEX(p, m);}
93#define GET_FACEUSE(p, m) {NMG_GETSTRUCT(p, faceuse); NMG_INCR_INDEX(p, m);}
95#define FREE_FACE(p) NMG_FREESTRUCT(p, face)
96#define FREE_FACE_G_PLANE(p) NMG_FREESTRUCT(p, face_g_plane)
97#define FREE_FACE_G_SNURB(p) NMG_FREESTRUCT(p, face_g_snurb)
98#define FREE_FACEUSE(p) NMG_FREESTRUCT(p, faceuse)
105 const struct bn_tol *tol);
135 const struct bn_tol *tol);
139 const struct bn_tol *tol);
156 const struct bn_tol *tol);
158 const struct face *f);
185 const struct bn_tol *tol);
187 const struct bn_tol *tol);
189 const struct bn_tol *tol);
192 const struct bn_tol *tol);
195 const struct bn_tol *tol);
199 const struct bn_tol *tol);
203 const struct bn_tol *tol);
207 const int free_edges,
208 const int approximate,
210 const struct bn_tol *tol);
215 const struct bn_tol *tol);
218 const struct bn_tol *tol);
221 const struct loopuse *ignore_lu,
225 const int call_on_hits,
226 const int in_or_out_only,
228 const struct bn_tol *tol);
231 const struct bn_tol *tol);
235 const struct bn_tol *tol);
256 const struct bn_tol *tol);
266 const struct bn_tol *tol);
269 const char *manifolds);
272 const struct face *f2);
276 const struct bn_tol *tol);
279 const struct bn_tol *tol);
282 const struct bn_tol *tol);
Header file for the BRL-CAD common definitions.
int nmg_split_loops_into_faces(uint32_t *magic_p, struct bu_list *vlfree, const struct bn_tol *tol)
void nmg_jfg(struct face *f1, struct face *f2)
int nmg_move_lu_between_fus(struct faceuse *dest, struct faceuse *src, struct loopuse *lu)
int nmg_is_edge_in_facelist(const struct edge *e, const struct bu_list *hd)
int nmg_ck_fg_verts(struct faceuse *fu1, struct face *f2, const struct bn_tol *tol)
struct faceuse * nmg_find_fu_of_vu(const struct vertexuse *vu)
void nmg_purge_unwanted_intersection_points(struct bu_ptbl *vert_list, fastf_t *mag, const struct faceuse *fu, const struct bn_tol *tol)
void nmg_face_new_g(struct faceuse *fu, const plane_t pl)
int nmg_fu_planeeqn(struct faceuse *fu, const struct bn_tol *tol)
int nmg_class_pnt_f(const point_t pt, const struct faceuse *fu, const struct bn_tol *tol)
int nmg_class_pnt_fu_except(const point_t pt, const struct faceuse *fu, const struct loopuse *ignore_lu, void(*eu_func)(struct edgeuse *, point_t, const char *, struct bu_list *), void(*vu_func)(struct vertexuse *, point_t, const char *), const char *priv, const int call_on_hits, const int in_or_out_only, struct bu_list *vlfree, const struct bn_tol *tol)
int nmg_dangling_face(const struct faceuse *fu, const char *manifolds)
void nmg_reverse_face(struct faceuse *fu)
int nmg_is_vertex_in_facelist(const struct vertex *v, const struct bu_list *hd)
void nmg_make_faces_at_vert(struct vertex *new_v, struct bu_ptbl *int_faces, struct bu_list *vlfree, const struct bn_tol *tol)
struct faceuse * nmg_find_fu_with_fg_in_s(const struct shell *s1, const struct faceuse *fu2)
int nmg_complex_vertex_solve(struct vertex *new_v, const struct bu_ptbl *faces, const int free_edges, const int approximate, struct bu_list *vlfree, const struct bn_tol *tol)
struct vertexuse * nmg_find_pnt_in_face(const struct faceuse *fu, const point_t pt, const struct bn_tol *tol)
struct faceuse * nmg_dup_face(struct faceuse *fu, struct shell *s)
int nmg_kfu(struct faceuse *fu1)
void nmg_reverse_radials(struct faceuse *fu, const struct bn_tol *tol)
int nmg_simplify_face(struct faceuse *fu, struct bu_list *vlfree)
int nmg_calc_face_plane(struct faceuse *fu_in, plane_t pl, struct bu_list *vlfree)
void nmg_fcut_face_2d(struct bu_ptbl *vu_list, fastf_t *mag, struct faceuse *fu1, struct faceuse *fu2, struct bu_list *vlfree, struct bn_tol *tol)
fastf_t nmg_faceuse_area(const struct faceuse *fu)
int nmg_triangulate_fu(struct faceuse *fu, struct bu_list *vlfree, const struct bn_tol *tol)
struct faceuse * nmg_cmface(struct shell *s, struct vertex **vt[], int n)
int nmg_ck_vu_ptbl(struct bu_ptbl *p, struct faceuse *fu)
int nmg_extrude_face(struct faceuse *fu, const vect_t Vec, struct bu_list *vlfree, const struct bn_tol *tol)
void nmg_gluefaces(struct faceuse *fulist[], int n, struct bu_list *vlfree, const struct bn_tol *tol)
void nmg_jf(struct faceuse *dest_fu, struct faceuse *src_fu)
void nmg_mv_fu_between_shells(struct shell *dest, struct shell *src, struct faceuse *fu)
void nmg_sanitize_fu(struct faceuse *fu)
int nmg_two_face_fuse(struct face *f1, struct face *f2, const struct bn_tol *tol)
void nmg_kill_cracks_at_vertex(const struct vertex *vp)
struct faceuse * nmg_find_fu_of_lu(const struct loopuse *lu)
int nmg_is_common_bigloop(const struct face *f1, const struct face *f2)
struct faceuse * nmg_mf(struct loopuse *lu1)
int nmg_ck_vert_on_fus(const struct vertex *v, const struct bn_tol *tol)
void nmg_face_bb(struct face *f, const struct bn_tol *tol)
struct vertexuse * nmg_is_vertex_in_face(const struct vertex *v, const struct face *f)
struct faceuse * nmg_find_fu_of_eu(const struct edgeuse *eu)
void nmg_propagate_normals(struct faceuse *fu_in, long *flags, const struct bn_tol *tol)
void nmg_translate_face(struct faceuse *fu, const vect_t Vec, struct bu_list *vlfree)
struct edge_g_lseg * nmg_face_cutjoin(struct bu_ptbl *b1, struct bu_ptbl *b2, fastf_t *mag1, fastf_t *mag2, struct faceuse *fu1, struct faceuse *fu2, point_t pt, vect_t dir, struct edge_g_lseg *eg, struct bu_list *vlfree, const struct bn_tol *tol)
int nmg_find_isect_faces(const struct vertex *new_v, struct bu_ptbl *faces, int *free_edges, const struct bn_tol *tol)
struct faceuse * nmg_cface(struct shell *s, struct vertex **vt, int n)
int nmg_ck_fu_verts(struct faceuse *fu1, struct face *f2, const struct bn_tol *tol)
void nmg_tabulate_face_g_verts(struct bu_ptbl *tab, const struct face_g_plane *fg)
void nmg_reverse_face_and_radials(struct faceuse *fu, const struct bn_tol *tol)
void nmg_mesh_faces(struct faceuse *fu1, struct faceuse *fu2, struct bu_list *vlfree, const struct bn_tol *tol)
struct vertexuse * nmg_find_v_in_face(const struct vertex *, const struct faceuse *)
int nmg_mesh_two_faces(struct faceuse *fu1, struct faceuse *fu2, const struct bn_tol *tol)
struct faceuse * nmg_add_loop_to_face(struct shell *s, struct faceuse *fu, struct vertex **verts, int n, int dir)
void nmg_face_g(struct faceuse *fu, const plane_t p)
struct faceuse * nmg_mk_new_face_from_loop(struct loopuse *lu)
int nmg_faces_are_radial(const struct faceuse *fu1, const struct faceuse *fu2)
void nmg_face_tabulate(struct bu_ptbl *tab, const uint32_t *magic_p, struct bu_list *vlfree)
int nmg_is_loop_in_facelist(const struct loop *l, const struct bu_list *fu_hd)
int nmg_calc_face_g(struct faceuse *fu, struct bu_list *vlfree)
double nmg_measure_fu_angle(const struct edgeuse *eu, const vect_t xvec, const vect_t yvec, const vect_t zvec)
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.
NMG topological vertex - the simplest element of the topology system.
NMG topological vertex usage.
uint32_t * magic_p
for those times when we're not sure
struct bu_list l
list of all vu's on a vertex
fundamental vector, matrix, quaternion math macros