librt geometry, raytracing

Collaboration diagram for librt geometry, raytracing:


Files

file  light.h
 Declarations related to light sources.
file  mater.h
 Information about mapping between region IDs and material information (colors and outboard database "handles").
file  photonmap.h
 Declarations related to Photon Mapping.
file  raytrace.h
file  solid.h
file  bomb.c
file  bundle.c
file  dg_obj.c
file  fixpt.h
file  global.c
file  htbl.c
file  importFg4Section.c
file  many.c
file  mater.c
file  memalloc.c
file  mkbundle.c
file  nirt.c
file  oslo_calc.c
file  parse.c
file  plane.h
file  pmalloc.c
file  pr.c
file  qray.c
file  regionfix.c
file  roots.c
file  rt_dspline.c
file  spectrum.c
file  storage.c
file  tcl.c
file  track.c
file  tree.c
file  vdraw.c
file  view_obj.c
file  vlist.c

Modules

 Database IO
 Primitives
 Ray Tracing
 Timer
 Fortran

Data Structures

struct  light_pt
struct  light_specific
struct  mater
struct  Photon
struct  PSN
struct  PhotonSearch
struct  NearestPhotons
struct  PNode
struct  PhotonMap
struct  IrradNode
struct  IrradCache
struct  rt_tess_tol
struct  rt_db_internal
struct  db_full_path
struct  xray
struct  hit
struct  curvature
struct  uvcoord
struct  seg
struct  bound_rpp
struct  soltab
struct  mater_info
struct  region
struct  partition
union  cutter
struct  mem_map
struct  db_i
struct  directory
struct  rt_comb_internal
struct  rt_binunif_internal
struct  db_tree_state
struct  db_traverse
struct  combined_tree_state
union  tree
struct  rt_tree_array
struct  rt_wdb
struct  vd_curve
struct  run_rt
struct  dg_qray_color
struct  dg_qray_fmt
struct  dg_obj
struct  view_obj
struct  anim_mat
struct  rt_anim_property
struct  rt_anim_color
struct  animate
struct  rt_htbl
struct  rt_piecestate
struct  rt_piecelist
struct  resource
struct  rt_reprep_obj_list
struct  pixel_ext
struct  application
 This structure is the only parameter to rt_shootray(). The entire structure should be zeroed (e.g. by memset(,0,) ) before it is used the first time. More...
struct  rt_g
struct  rt_i
struct  command_tab
struct  rt_point_labels
struct  rt_pt_node
struct  line_seg
 line segment More...
struct  carc_seg
 circular arc segment More...
struct  nurb_seg
 NURB curve segment. More...
struct  bezier_seg
 Bezier curve segment. More...
struct  rt_functab
struct  rt_shootray_status
struct  hitmiss
struct  ray_data
struct  nmg_radial
struct  nmg_inter_struct
struct  solid
struct  dg_client_data
struct  dg_rt_client_data
struct  rtcheck
struct  rtcheck_output

Defines

#define SEEN_LIGHT_H   seen
#define OPTICAL_EXPORT
#define LPT_MAGIC   0x327649
#define SOME_LIGHT_SAMPLES   128
#define LIGHT_NULL   ((struct light_specific *)0)
#define LIGHT_MAGIC   0xdbddbdb7
#define RT_CK_LIGHT(_p)   BU_CKMAG((_p), LIGHT_MAGIC, "light_specific")
#define RT_EXPORT
#define MATER_NULL   ((struct mater *)0)
#define MATER_NO_ADDR   (-1L)
 invalid mt_daddr
#define PM_MAPS   4
#define PM_GLOBAL   0
#define PM_CAUSTIC   1
#define PM_SHADOW   2
#define PM_IMPORTANCE   3
#define PM_SEM   RT_SEM_LAST-1
#define PM_SEM_INIT   RT_SEM_LAST
#define RAYTRACE_H   seen
#define RT_EXPORT
#define RAYTRACE_H_VERSION   "@(#)$Header: /cvsroot/brlcad/brlcad/include/raytrace.h,v 14.45 2006/09/18 05:24:07 lbutler Exp $ (BRL)"
#define DEBUG_OFF   0
 No debugging.
#define DEBUG_ALLRAYS   0x00000001
 1 Print calls to rt_shootray()
#define DEBUG_ALLHITS   0x00000002
 2 Print partitions passed to a_hit()
#define DEBUG_SHOOT   0x00000004
 3 Info about rt_shootray() processing
#define DEBUG_INSTANCE   0x00000008
 4 regionid instance revectoring
#define DEBUG_DB   0x00000010
 5 Database debugging
#define DEBUG_SOLIDS   0x00000020
 6 Print prep'ed solids
#define DEBUG_REGIONS   0x00000040
 7 Print regions & boolean trees
#define DEBUG_ARB8   0x00000080
 8 Print voluminus ARB8 details
#define DEBUG_SPLINE   0x00000100
 9 Splines
#define DEBUG_ANIM   0x00000200
 10 Animation
#define DEBUG_ANIM_FULL   0x00000400
 11 Animation matrices
#define DEBUG_VOL   0x00000800
 12 Volume & opaque Binary solid
#define DEBUG_ROOTS   0x00001000
 13 Print rootfinder details
#define DEBUG_PARTITION   0x00002000
 14 Info about bool_weave()
#define DEBUG_CUT   0x00004000
 15 Print space cutting statistics
#define DEBUG_BOXING   0x00008000
 16 Object/box checking details
#define DEBUG_MEM   0x00010000
 17 -->> BU_DEBUG_MEM_LOG
#define DEBUG_MEM_FULL   0x00020000
 18 -->> BU_DEBUG_MEM_CHECK
#define DEBUG_FDIFF   0x00040000
 19 bool/fdiff debugging
#define DEBUG_PARALLEL   0x00080000
 20 -->> BU_DEBUG_PARALLEL
#define DEBUG_CUTDETAIL   0x00100000
 21 Print space cutting details
#define DEBUG_TREEWALK   0x00200000
 22 Database tree traversal
#define DEBUG_TESTING   0x00400000
 23 One-shot debugging flag
#define DEBUG_ADVANCE   0x00800000
 24 Cell-to-cell space partitioning
#define DEBUG_MATH   0x01000000
 25 nmg math routines
#define DEBUG_EBM   0x02000000
 26 Extruded bit-map solids
#define DEBUG_HF   0x04000000
 27 Height Field solids
#define DEBUG_PLOTSOLIDS   0x40000000
 31 plot all solids
#define DEBUG_PLOTBOX   0x80000000
 32 Plot(3) bounding boxes and cuts
#define DEBUG_FORMAT   "\020\040PLOTBOX\\037PLOTSOLIDS\\033HF\032EBM\031MATH\030ADVANCE\\027TESTING\026TREEWALK\025CUTDETAIL\024PARALLEL\023FDIFF\022MEM_FULL\\021MEM\020BOXING\017CUTTING\016PARTITION\015ROOTS\014VOL\\013ANIM_FULL\012ANIM\011SPLINE\010ARB8\7REGIONS\6SOLIDS\5DB\\4INSTANCE\3SHOOT\2ALLHITS\1ALLRAYS"
#define INFINITY   (1.0e40)
#define RT_BADNUM(n)   (!((n) >= -INFINITY && (n) <= INFINITY))
#define RT_BADVEC(v)   (RT_BADNUM((v)[X]) || RT_BADNUM((v)[Y]) || RT_BADNUM((v)[Z]))
#define RT_LEN_TOL   (1.0e-8)
#define RT_DOT_TOL   (0.001)
#define RT_PCOEF_TOL   (1.0e-10)
#define RT_TESS_TOL_MAGIC   0xb9090dab
#define RT_CK_TESS_TOL(_p)   BU_CKMAG(_p, RT_TESS_TOL_MAGIC, "rt_tess_tol")
#define idb_type   idb_minor_type
#define RT_DB_INTERNAL_MAGIC   0x0dbbd867
#define RT_INIT_DB_INTERNAL(_p)
#define RT_CK_DB_INTERNAL(_p)   BU_CKMAG(_p, RT_DB_INTERNAL_MAGIC, "rt_db_internal")
#define DB_FULL_PATH_POP(_pp)   {(_pp)->fp_len--;}
#define DB_FULL_PATH_CUR_DIR(_pp)   ((_pp)->fp_names[(_pp)->fp_len-1])
#define DB_FULL_PATH_GET(_pp, _i)   ((_pp)->fp_names[(_i)])
#define DB_FULL_PATH_MAGIC   0x64626670
#define RT_CK_FULL_PATH(_p)   BU_CKMAG(_p, DB_FULL_PATH_MAGIC, "db_full_path")
#define RAY_NULL   ((struct xray *)0)
#define RT_RAY_MAGIC   0x78726179
 "xray"
#define RT_CK_RAY(_p)   BU_CKMAG(_p,RT_RAY_MAGIC,"struct xray");
#define HIT_NULL   ((struct hit *)0)
#define RT_HIT_MAGIC   0x20686974
 " hit"
#define RT_CK_HIT(_p)   BU_CKMAG(_p,RT_HIT_MAGIC,"struct hit")
#define RT_HIT_NORM(_hitp, _stp, _unused)
#define RT_HIT_NORMAL(_normal, _hitp, _stp, _unused, _flipflag)
#define CURVE_NULL   ((struct curvature *)0)
#define RT_CURVATURE(_curvp, _hitp, _flipflag, _stp)
#define RT_HIT_UVCOORD(ap, _stp, _hitp, uvp)
#define RT_SEG_NULL   ((struct seg *)0)
#define RT_SEG_MAGIC   0x98bcdef1
#define RT_CHECK_SEG(_p)   BU_CKMAG(_p, RT_SEG_MAGIC, "struct seg")
#define RT_CK_SEG(_p)   BU_CKMAG(_p, RT_SEG_MAGIC, "struct seg")
#define RT_GET_SEG(p, res)
#define RT_FREE_SEG(p, res)
#define RT_FREE_SEG_LIST(_segheadp, _res)
#define st_name   st_dp->d_namep
#define RT_SOLTAB_NULL   ((struct soltab *)0)
#define SOLTAB_NULL   RT_SOLTAB_NULL
 backwards compat
#define RT_SOLTAB_MAGIC   0x92bfcde0
 l.magic
#define RT_SOLTAB2_MAGIC   0x92bfcde2
 l2.magic
#define RT_CHECK_SOLTAB(_p)   BU_CKMAG( _p, RT_SOLTAB_MAGIC, "struct soltab")
#define RT_CK_SOLTAB(_p)   BU_CKMAG( _p, RT_SOLTAB_MAGIC, "struct soltab")
#define ID_NULL   0
 Unused.
#define ID_TOR   1
 Toroid.
#define ID_TGC   2
 Generalized Truncated General Cone.
#define ID_ELL   3
 Ellipsoid.
#define ID_ARB8   4
 Generalized ARB. V + 7 vectors.
#define ID_ARS   5
 ARS.
#define ID_HALF   6
 Half-space.
#define ID_REC   7
 Right Elliptical Cylinder [TGC special].
#define ID_POLY   8
 Polygonal facted object.
#define ID_BSPLINE   9
 B-spline object.
#define ID_SPH   10
 Sphere.
#define ID_NMG   11
 n-Manifold Geometry solid
#define ID_EBM   12
 Extruded bitmap solid.
#define ID_VOL   13
 3-D Volume
#define ID_ARBN   14
 ARB with N faces.
#define ID_PIPE   15
 Pipe (wire) solid.
#define ID_PARTICLE   16
 Particle system solid.
#define ID_RPC   17
 Right Parabolic Cylinder.
#define ID_RHC   18
 Right Hyperbolic Cylinder.
#define ID_EPA   19
 Elliptical Paraboloid.
#define ID_EHY   20
 Elliptical Hyperboloid.
#define ID_ETO   21
 Elliptical Torus.
#define ID_GRIP   22
 Pseudo Solid Grip.
#define ID_JOINT   23
 Pseudo Solid/Region Joint.
#define ID_HF   24
 Height Field.
#define ID_DSP   25
 Displacement map.
#define ID_SKETCH   26
 2D sketch
#define ID_EXTRUDE   27
 Solid of extrusion.
#define ID_SUBMODEL   28
 Instanced submodel.
#define ID_CLINE   29
 FASTGEN4 CLINE solid.
#define ID_BOT   30
 Bag o' triangles.
#define ID_MAX_SOLID   37
 Maximum defined ID_xxx for solids.
#define ID_COMBINATION   31
 Combination Record.
#define ID_BINEXPM   32
 Experimental binary.
#define ID_BINUNIF   33
 Uniform-array binary.
#define ID_BINMIME   34
 MIME-typed binary.
#define ID_SUPERELL   35
 Superquadratic ellipsoid.
#define ID_METABALL   36
 Metaball.
#define ID_MAXIMUM   37
 Maximum defined ID_xxx value.
#define REGION_NULL   ((struct region *)0)
#define RT_REGION_MAGIC   0xdffb8001
#define RT_CK_REGION(_p)   BU_CKMAG(_p,RT_REGION_MAGIC,"struct region")
#define PT_NULL   ((struct partition *)0)
#define PT_MAGIC   0x87687681
#define PT_HD_MAGIC   0x87687680
#define RT_CHECK_PT(_p)   RT_CK_PT(_p)
 compat
#define RT_CK_PT(_p)   BU_CKMAG(_p,PT_MAGIC, "struct partition")
#define RT_CK_PARTITION(_p)   BU_CKMAG(_p,PT_MAGIC, "struct partition")
#define RT_CK_PT_HD(_p)   BU_CKMAG(_p,PT_HD_MAGIC, "struct partition list head")
#define RT_PT_MIDDLE_START   pt_inseg
 1st elem to copy
#define RT_PT_MIDDLE_END   pt_seglist.l.magic
 copy up to this elem (non-inclusive)
#define RT_PT_MIDDLE_LEN(p)   (((char *)&(p)->RT_PT_MIDDLE_END) - ((char *)&(p)->RT_PT_MIDDLE_START))
#define RT_DUP_PT(ip, new, old, res)
#define GET_PT_INIT(ip, p, res)
#define GET_PT(ip, p, res)
#define FREE_PT(p, res)
#define RT_FREE_PT_LIST(_headp, _res)
#define INSERT_PT(_new, _old)   BU_LIST_INSERT((struct bu_list *)_old,(struct bu_list *)_new)
#define APPEND_PT(_new, _old)   BU_LIST_APPEND((struct bu_list *)_old,(struct bu_list *)_new)
#define DEQUEUE_PT(_cur)   BU_LIST_DEQUEUE((struct bu_list *)_cur)
#define CUTTER_NULL   ((union cutter *)0)
#define MAP_NULL   ((struct mem_map *) 0)
#define RT_DBNHASH   1024
 size of hash table
#define RT_DBHASH(sum)   ((unsigned)(sum) & ((RT_DBNHASH)-1))
#define DBI_NULL   ((struct db_i *)0)
#define DBI_MAGIC   0x57204381
#define RT_CHECK_DBI(_p)   BU_CKMAG(_p,DBI_MAGIC,"struct db_i")
#define RT_CHECK_DBI_TCL(_interp, _p)   BU_CKMAG_TCL(_interp,_p,DBI_MAGIC,"struct db_i")
#define RT_CK_DBI(_p)   RT_CHECK_DBI(_p)
#define RT_CK_DBI_TCL(_interp, _p)   RT_CHECK_DBI_TCL(_interp,_p)
#define DIR_NULL   ((struct directory *)0)
#define RT_DIR_MAGIC   0x05551212
 Directory assistance.
#define RT_CK_DIR(_dp)   BU_CKMAG(_dp, RT_DIR_MAGIC, "(librt)directory")
#define d_addr   d_un.file_offset
#define RT_DIR_PHONY_ADDR   (-1L)
 Special marker for d_addr field.
#define DIR_SOLID   0x1
 this name is a solid
#define DIR_COMB   0x2
 combination
#define DIR_REGION   0x4
 region
#define DIR_HIDDEN   0x8
 object name is hidden
#define DIR_NON_GEOM   0x10
 object is not geometry (e.g. binary object)
#define DIR_USED   0x80
 One bit, used similar to d_nref.
#define RT_DIR_INMEM   0x100
 object is in memory (only) Args to db_lookup()
#define LOOKUP_NOISY   1
#define LOOKUP_QUIET   0
#define FOR_ALL_DIRECTORY_START(_dp, _dbip)
#define FOR_ALL_DIRECTORY_END   }}}
#define RT_DIR_SET_NAMEP(_dp, _name)
#define RT_DIR_FREE_NAMEP(_dp)
#define RT_GET_DIRECTORY(_p, _res)
#define RT_COMB_MAGIC   0x436f6d49
 "ComI"
#define RT_CHECK_COMB(_p)   BU_CKMAG( _p , RT_COMB_MAGIC , "rt_comb_internal" )
#define RT_CK_COMB(_p)   RT_CHECK_COMB(_p)
#define RT_CHECK_COMB_TCL(_interp, _p)   BU_CKMAG_TCL(interp,_p,RT_COMB_MAGIC, "rt_comb_internal" )
#define RT_CK_COMB_TCL(_interp, _p)   RT_CHECK_COMB_TCL(_interp,_p)
#define RT_BINUNIF_INTERNAL_MAGIC   0x42696e55
#define RT_CHECK_BINUNIF(_p)   BU_CKMAG( _p , RT_BINUNIF_INTERNAL_MAGIC , "rt_binunif_internal" )
#define RT_CK_BINUNIF(_p)   RT_CHECK_BINUNIF(_p)
#define RT_CHECK_BINUNIF_TCL(_interp, _p)   BU_CKMAG_TCL(interp,_p,RT_BINUNIF_MAGIC, "rt_binunif_internal" )
#define RT_CK_BINUNIF_TCL(_interp, _p)   RT_CHECK_BINUNIF_TCL(_interp,_p)
#define TS_SOFAR_MINUS   1
 Subtraction encountered above.
#define TS_SOFAR_INTER   2
 Intersection encountered above.
#define TS_SOFAR_REGION   4
 Region encountered above.
#define RT_DBTS_MAGIC   0x64627473
 "dbts"
#define RT_CK_DBTS(_p)   BU_CKMAG(_p, RT_DBTS_MAGIC, "db_tree_state")
#define RT_DBTR_MAGIC   0x64627472
 "dbtr"
#define RT_INIT_DBTR(_p)
#define RT_CK_DBTR(_p)   BU_CKMAG(_p, RT_DBTR_MAGIC, "db_traverse")
#define RT_CTS_MAGIC   0x98989123
#define RT_CK_CTS(_p)   BU_CKMAG(_p, RT_CTS_MAGIC, "combined_tree_state")
#define MKOP(x)   (x)
#define OP_SOLID   MKOP(1)
 Leaf: tr_stp -> solid.
#define OP_UNION   MKOP(2)
 Binary: L union R.
#define OP_INTERSECT   MKOP(3)
 Binary: L intersect R.
#define OP_SUBTRACT   MKOP(4)
 Binary: L subtract R.
#define OP_XOR   MKOP(5)
 Binary: L xor R, not both.
#define OP_REGION   MKOP(6)
 Leaf: tr_stp -> combined_tree_state.
#define OP_NOP   MKOP(7)
 Leaf with no effect.
#define OP_NOT   MKOP(8)
 Unary: not L.
#define OP_GUARD   MKOP(9)
 Unary: not L, or else!
#define OP_XNOP   MKOP(10)
 Unary: L, mark region.
#define OP_NMG_TESS   MKOP(11)
 Leaf: tr_stp -> nmgregion.
#define OP_DB_LEAF   MKOP(12)
 Leaf of combination, db fmt.
#define OP_FREE   MKOP(13)
 Unary: L has free chain.
#define tr_op   tr_a.tu_op
#define tr_regionp   tr_a.tu_regionp
#define TREE_NULL   ((union tree *)0)
#define RT_TREE_MAGIC   0x91191191
#define RT_CK_TREE(_p)   BU_CKMAG(_p, RT_TREE_MAGIC, "union tree")
#define TREE_LIST_NULL   ((struct tree_list *)0)
#define RT_MAXARGS   9000
#define RT_MAXLINE   10240
#define RT_WDB_MAGIC   0x5f576462
#define RT_CHECK_WDB(_p)   BU_CKMAG(_p,RT_WDB_MAGIC,"rt_wdb")
#define RT_CHECK_WDB_TCL(_interp, _p)   BU_CKMAG_TCL(_interp,_p,RT_WDB_MAGIC,"rt_wdb")
#define RT_CK_WDB(_p)   RT_CHECK_WDB(_p)
#define RT_CK_WDB_TCL(_interp, _p)   RT_CHECK_WDB_TCL(_interp,_p)
#define RT_WDB_NULL   ((struct rt_wdb *)NULL)
#define RT_WDB_TYPE_DB_DISK   2
#define RT_WDB_TYPE_DB_DISK_APPEND_ONLY   3
#define RT_WDB_TYPE_DB_INMEM   4
#define RT_WDB_TYPE_DB_INMEM_APPEND_ONLY   5
#define RT_VDRW_PREFIX   "_VDRW"
#define RT_VDRW_PREFIX_LEN   6
#define RT_VDRW_MAXNAME   31
#define RT_VDRW_DEF_COLOR   0xffff00
#define VD_CURVE_NULL   ((struct vd_curve *)NULL)
#define RT_DGO_NULL   ((struct dg_obj *)NULL)
#define RT_VIEW_OBJ_NULL   ((struct view_obj *)NULL)
#define RT_MINVIEWSIZE   0.0001
#define RT_MINVIEWSCALE   0.00005
#define ANM_RSTACK   1
 Replace stacked matrix.
#define ANM_RARC   2
 Replace arc matrix.
#define ANM_LMUL   3
 Left (root side) mul.
#define ANM_RMUL   4
 Right (leaf side) mul.
#define ANM_RBOTH   5
 Replace stack, arc=Idn.
#define RT_ANP_REPLACE   1
 Replace shader string.
#define RT_ANP_APPEND   2
 Append to shader string.
#define RT_ANP_MAGIC   0x41507270
 'APrp'
#define RT_CK_ANP(_p)   BU_CKMAG((_p), RT_ANP_MAGIC, "rt_anim_property")
#define RT_AN_MATRIX   1
 Matrix animation.
#define RT_AN_MATERIAL   2
 Material property anim.
#define RT_AN_COLOR   3
 Material color anim.
#define RT_AN_SOLID   4
 Solid parameter anim.
#define RT_AN_TEMPERATURE   5
 Region temperature.
#define ANIM_NULL   ((struct animate *)0)
#define ANIMATE_MAGIC   0x414e4963
#define RT_CK_ANIMATE(_p)   BU_CKMAG((_p), ANIMATE_MAGIC, "animate")
#define RT_HTBL_MAGIC   0x6874626c
 "htbl"
#define RT_CK_HTBL(_p)   BU_CKMAG(_p, RT_HTBL_MAGIC, "rt_htbl")
#define RT_PIECESTATE_MAGIC   0x70637374
 pcst
#define RT_CK_PIECESTATE(_p)   BU_CKMAG(_p, RT_PIECESTATE_MAGIC, "struct rt_piecestate")
#define RT_PIECELIST_MAGIC   0x70636c73
 pcls
#define RT_CK_PIECELIST(_p)   BU_CKMAG(_p, RT_PIECELIST_MAGIC, "struct rt_piecelist")
#define RT_DEFAULT_MINPIECES   32
#define RT_DEFAULT_TRIS_PER_PIECE   4
#define RESOURCE_NULL   ((struct resource *)0)
#define RESOURCE_MAGIC   0x83651835
#define RT_CK_RESOURCE(_p)   BU_CKMAG(_p, RESOURCE_MAGIC, "struct resource")
#define RT_GET_TREE(_tp, _res)
#define RT_FREE_TREE(_tp, _res)
#define CORNER_PTS   4
#define PIXEL_EXT_MAGIC   0x50787400
#define BU_CK_PIXEL_EXT(_p)   BU_CKMAG(_p, PIXEL_EXT_MAGIC, "struct pixel_ext")
#define RT_AFN_NULL   ((int (*)())0)
#define RT_AP_MAGIC   0x4170706c
 "Appl"
#define RT_CK_AP(_p)   BU_CKMAG(_p,RT_AP_MAGIC,"struct application")
#define RT_CK_APPLICATION(_p)   BU_CKMAG(_p,RT_AP_MAGIC,"struct application")
#define RT_CK_AP_TCL(_interp, _p)   BU_CKMAG_TCL(_interp,_p,RT_AP_MAGIC,"struct application")
#define RT_APPLICATION_INIT(_p)
#define RT_AP_CHECK(_ap)
#define RT_G_DEBUG   rt_g.debug
#define RT_SEM_TREE0   (BU_SEM_LAST)
#define RT_SEM_TREE1   (RT_SEM_TREE0+1)
#define RT_SEM_TREE2   (RT_SEM_TREE1+1)
#define RT_SEM_TREE3   (RT_SEM_TREE2+1)
#define RT_SEM_WORKER   (RT_SEM_TREE3+1)
#define RT_SEM_STATS   (RT_SEM_WORKER+1)
#define RT_SEM_RESULTS   (RT_SEM_STATS+1)
#define RT_SEM_MODEL   (RT_SEM_RESULTS+1)
#define RT_SEM_LAST   (RT_SEM_MODEL+1)
 Call bu_semaphore_init( RT_SEM_LAST );.
#define RT_NU_GFACTOR_DEFAULT   1.5
 see rt_cut_it() for a description of this
#define RTI_NULL   ((struct rt_i *)0)
#define RTI_MAGIC   0x99101658
 magic # for integrity check
#define RT_CHECK_RTI(_p)   BU_CKMAG(_p,RTI_MAGIC,"struct rt_i")
#define RT_CHECK_RTI_TCL(_interp, _p)   BU_CKMAG_TCL(_interp,_p,RTI_MAGIC,"struct rt_i")
#define RT_CK_RTI(_p)   RT_CHECK_RTI(_p)
#define RT_CK_RTI_TCL(_interp, _p)   RT_CHECK_RTI_TCL(_interp,_p)
#define RT_PART_NUBSPT   0
#define RT_PART_NUGRID   1
#define RT_VISIT_ALL_SOLTABS_START(_s, _rti)
#define RT_VISIT_ALL_SOLTABS_END   } }
#define RT_GET_VLIST(p)   BN_GET_VLIST(&rt_g.rtg_vlfree, p)
#define RT_FREE_VLIST(hd)   BN_FREE_VLIST(&rt_g.rtg_vlfree, hd)
#define RT_ADD_VLIST(hd, pnt, draw)   BN_ADD_VLIST(&rt_g.rtg_vlfree,hd,pnt,draw)
#define V2PRINT(a, b)   bu_log("%s (%g, %g)\n", a, (b)[0], (b)[1] );
#define VPRINT(a, b)   bu_log("%s (%g, %g, %g)\n", a, (b)[0], (b)[1], (b)[2])
#define HPRINT(a, b)   bu_log("%s (%g, %g, %g, %g)\n", a, (b)[0], (b)[1], (b)[2], (b)[3])
#define CURVE_LSEG_MAGIC   0x6c736567
 lseg
#define CURVE_CARC_MAGIC   0x63617263
 carc
#define CURVE_NURB_MAGIC   0x6e757262
 nurb
#define CURVE_BEZIER_MAGIC   0x62657a69
 bezi
#define RT_FUNCTAB_MAGIC   0x46754e63
#define RT_CK_FUNCTAB(_p)   BU_CKMAG(_p, RT_FUNCTAB_MAGIC, "functab" );
#define RT_CLASSIFY_UNIMPLEMENTED   BN_CLASSIFY_UNIMPLEMENTED
#define RT_CLASSIFY_INSIDE   BN_CLASSIFY_INSIDE
#define RT_CLASSIFY_OVERLAPPING   BN_CLASSIFY_OVERLAPPING
#define RT_CLASSIFY_OUTSIDE   BN_CLASSIFY_OUTSIDE
#define NUGRID_T_SETUP(_ax, _cval, _cno)
#define NUGRID_T_ADV(_ax, _cno)
#define BACKING_DIST   (-2.0)
 mm to look behind start point
#define OFFSET_DIST   0.01
 mm to advance point into box
#define FAST_NMG   1
#define NMG_HIT_LIST   0
#define NMG_MISS_LIST   1
#define NMG_RT_HIT_MAGIC   0x48697400
 "Hit"
#define NMG_RT_HIT_SUB_MAGIC   0x48696d00
 "Him"
#define NMG_RT_MISS_MAGIC   0x4d697300
 "Mis"
#define HMG_INBOUND_STATE(_hm)   (((_hm)->in_out & 0x0f0) >> 4)
#define HMG_OUTBOUND_STATE(_hm)   ((_hm)->in_out & 0x0f)
#define NMG_RAY_STATE_INSIDE   1
#define NMG_RAY_STATE_ON   2
#define NMG_RAY_STATE_OUTSIDE   4
#define NMG_RAY_STATE_ANY   8
#define HMG_HIT_IN_IN   0x11
 hit internal structure
#define HMG_HIT_IN_OUT   0x14
 breaking out
#define HMG_HIT_OUT_IN   0x41
 breaking in
#define HMG_HIT_OUT_OUT   0x44
 edge/vertex graze
#define HMG_HIT_IN_ON   0x12
#define HMG_HIT_ON_IN   0x21
#define HMG_HIT_ON_ON   0x22
#define HMG_HIT_OUT_ON   0x42
#define HMG_HIT_ON_OUT   0x24
#define HMG_HIT_ANY_ANY   0x88
 hit on non-3-mainifold
#define NMG_VERT_ENTER   1
#define NMG_VERT_ENTER_LEAVE   0
#define NMG_VERT_LEAVE   -1
#define NMG_VERT_UNKNOWN   -2
#define NMG_HITMISS_SEG_IN   0x696e00
 "in"
#define NMG_HITMISS_SEG_OUT   0x6f757400
 "out"
#define NMG_CK_HITMISS(hm)
#define NMG_CK_HITMISS_LISTS(a_hit, rd)
#define NMG_PCA_EDGE   1
#define NMG_PCA_EDGE_VERTEX   2
#define NMG_PCA_VERTEX   3
#define NMG_RAY_DATA_MAGIC   0x1651771
#define NMG_CK_RD(_rd)   NMG_CKMAG(_rd, NMG_RAY_DATA_MAGIC, "ray data");
#define GET_HITMISS(_p, _ap)
#define NMG_FREE_HITLIST(_p, _ap)
#define HIT   1
 a hit on a face
#define MISS   0
 a miss on the face
#define nmg_rt_bomb(rd, str)
#define NMG_RADIAL_MAGIC   0x52614421
 RaD!
#define NMG_CK_RADIAL(_p)   NMG_CKMAG(_p, NMG_RADIAL_MAGIC, "nmg_radial")
#define NMG_INTER_STRUCT_MAGIC   0x99912120
#define NMG_CK_INTER_STRUCT(_p)   NMG_CKMAG(_p, NMG_INTER_STRUCT_MAGIC, "nmg_inter_struct")
#define rt_fwrite_internal5   +++__deprecated_rt_fwrite_internal5__+++
#define db_ident(a, b, c)   +++error+++
#define nmg_moveeu(a, b)   nmg_je(a,b)
#define nmg_mev(_v, _u)   nmg_me((_v), (struct vertex *)NULL, (_u))
#define UP   0
#define DOWN   1
#define SOLID_NULL   ((struct solid *)0)
#define GET_SOLID(p, fp)
#define LAST_SOLID(_sp)   DB_FULL_PATH_CUR_DIR( &(_sp)->s_fullpath )
#define FIRST_SOLID(_sp)   ((_sp)->s_fullpath.fp_names[0])
#define FREE_SOLID(p, fp)
#define FOR_ALL_SOLIDS(p, hp)   for(BU_LIST_FOR(p,solid,hp))
#define FOR_REST_OF_SOLIDS(p1, p2, hp)   for(BU_LIST_PFOR(p1,p2,solid,hp))
#define BU_LIST_PFOR(p1, p2, structure, hp)
#define DGO_WIREFRAME   0
#define DGO_SHADED_MODE_BOTS   1
#define DGO_SHADED_MODE_ALL   2
#define DGO_BOOL_EVAL   3
#define DGO_CHECK_WDBP_NULL(_dgop, _interp)
#define PLATE_MODE   1
#define VOLUME_MODE   2
#define POS_CENTER   1
#define POS_FRONT   2
#define END_OPEN   1
#define END_CLOSED   2
#define GRID_BLOCK   256
#define CLINE   'l'
#define CHEX1   'p'
#define CHEX2   'b'
#define CTRI   't'
#define CQUAD   'q'
#define CCONE1   'c'
#define CCONE2   'd'
#define CCONE3   'e'
#define CSPHERE   's'
#define NMG   'n'
#define BOT   't'
#define COMPSPLT   'h'
#define FIND_NEWLINE(_cp, _eosFlag)
#define AMAX(i, j)   ( (i) > (j) ? (i) : (j) )
#define AMIN(i, j)   ( (i) < (j) ? (i) : (j) )

Functions

OPTICAL_EXPORT void light_cleanup (void)
OPTICAL_EXPORT void light_maker (int num, mat_t v2m)
OPTICAL_EXPORT int light_init (struct application *ap)
OPTICAL_EXPORT void light_obs (struct application *ap, struct shadework *swp, int have)
RT_EXPORT void rt_insert_color (struct mater *newp)
OPTICAL_EXPORT void BuildPhotonMap (struct application *ap, point_t eye_pos, int cpus, int width, int height, int Hypersample, int GlobalPhotons, double CausticsPercent, int Rays, double AngularTolerance, int RandomSeed, int ImportanceMapping, int IrradianceHypersampling, int VisualizeIrradiance, double LightIntensity, char pmfile[255])
OPTICAL_EXPORT void IrradianceEstimate (struct application *ap, vect_t irrad, point_t pos, vect_t normal, fastf_t rad, int np)
RT_EXPORT struct rt_irt_dirbuild (const char *filename, char *buf, int len)
RT_EXPORT struct rt_irt_new_rti (struct db_i *dbip)
RT_EXPORT void rt_free_rti (struct rt_i *rtip)
RT_EXPORT void rt_prep (struct rt_i *rtip)
RT_EXPORT void rt_prep_parallel (struct rt_i *rtip, int ncpu)
RT_EXPORT int rt_overlap_quietly (struct application *ap, struct partition *pp, struct region *reg1, struct region *reg2, struct partition *pheadp)
RT_EXPORT void rt_default_multioverlap (struct application *ap, struct partition *pp, struct bu_ptbl *regiontable, struct partition *InputHdp)
RT_EXPORT void rt_silent_logoverlap (struct application *ap, const struct partition *pp, const struct bu_ptbl *regiontable, const struct partition *InputHdp)
RT_EXPORT void rt_default_logoverlap (struct application *ap, const struct partition *pp, const struct bu_ptbl *regiontable, const struct partition *InputHdp)
RT_EXPORT int rt_shootray (struct application *ap)
RT_EXPORT const char * rt_basename (const char *str)
RT_EXPORT void rt_free_soltab (struct soltab *stp)
RT_EXPORT int rt_gettree (struct rt_i *rtip, const char *node)
RT_EXPORT int rt_gettrees (struct rt_i *rtip, int argc, const char **argv, int ncpus)
RT_EXPORT int rt_gettrees_and_attrs (struct rt_i *rtip, const char **attrs, int argc, const char **argv, int ncpus)
RT_EXPORT int rt_gettrees_muves (struct rt_i *rtip, const char **attrs, int argc, const char **argv, int ncpus)
RT_EXPORT int rt_load_attrs (struct rt_i *rtip, char **attrs)
RT_EXPORT void rt_pr_seg (const struct seg *segp)
RT_EXPORT void rt_pr_partitions (const struct rt_i *rtip, const struct partition *phead, const char *title)
RT_EXPORT struct soltabrt_find_solid (const struct rt_i *rtip, const char *name)
RT_EXPORT void rt_prep_timer (void)
RT_EXPORT double rt_get_timer (struct bu_vls *vp, double *elapsed)
RT_EXPORT double rt_read_timer (char *str, int len)
int rt_plot_solid (FILE *fp, struct rt_i *rtip, const struct soltab *stp, struct resource *resp)
RT_EXPORT void rt_clean (struct rt_i *rtip)
RT_EXPORT int rt_del_regtree (struct rt_i *rtip, struct region *delregp, struct resource *resp)
RT_EXPORT void rt_ck (struct rt_i *rtip)
RT_EXPORT void rt_pr_library_version ()
RT_EXPORT int rt_matrix_transform (struct rt_db_internal *output, const mat_t matrix, struct rt_db_internal *input, int free, struct db_i *dbip, struct resource *resource)
RT_EXPORT void rt_boolweave (struct seg *out_hd, struct seg *in_hd, struct partition *PartHeadp, struct application *ap)
RT_EXPORT int rt_boolfinal (struct partition *InputHdp, struct partition *FinalHdp, fastf_t startdist, fastf_t enddist, struct bu_ptbl *regionbits, struct application *ap, const struct bu_bitv *solidbits)
RT_EXPORT void rt_grow_boolstack (struct resource *res)
RT_EXPORT int rt_fdiff (double a, double b)
RT_EXPORT double rt_reldiff (double a, double b)
RT_EXPORT void rt_pr_soltab (const struct soltab *stp)
RT_EXPORT void rt_pr_region (const struct region *rp)
RT_EXPORT void rt_pr_tree (const union tree *tp, int lvl)
RT_EXPORT void rt_pr_tree_val (const union tree *tp, const struct partition *partp, int pr_name, int lvl)
RT_EXPORT void rt_pr_pt (const struct rt_i *rtip, const struct partition *pp)
RT_EXPORT void rt_pr_hit (const char *str, const struct hit *hitp)
RT_EXPORT void rt_get_seg (struct resource *res)
RT_EXPORT void rt_cut_it (struct rt_i *rtip, int ncpu)
RT_EXPORT void rt_pr_cut (const union cutter *cutp, int lvl)
RT_EXPORT void rt_fr_cut (struct rt_i *rtip, union cutter *cutp)
RT_EXPORT void rt_rebuild_overlaps (struct partition *PartHdp, struct application *ap, int rebuild_fastgen_plates_only)
RT_EXPORT int rt_partition_len (const struct partition *partheadp)
RT_EXPORT int rt_defoverlap (struct application *ap, struct partition *pp, struct region *reg1, struct region *reg2, struct partition *pheadp)
RT_EXPORT void rt_region_color_map (struct region *regp)
RT_EXPORT void rt_color_addrec (int low, int hi, int r, int g, int b, long addr)
RT_EXPORT void rt_color_free ()
RT_EXPORT void rt_pr_cut_info (const struct rt_i *rtip, const char *str)
RT_EXPORT void remove_from_bsp (struct soltab *stp, union cutter *cutp, struct bn_tol *tol)
RT_EXPORT void insert_in_bsp (struct soltab *stp, union cutter *cutp)
RT_EXPORT void fill_out_bsp (struct rt_i *rtip, union cutter *cutp, struct resource *resp, fastf_t bb[6])
RT_EXPORT void rt_cut_extend (union cutter *cutp, struct soltab *stp, const struct rt_i *rtip)
RT_EXPORT int rt_rpp_region (struct rt_i *rtip, const char *reg_name, fastf_t *min_rpp, fastf_t *max_rpp)
RT_EXPORT void rt_bomb (const char *s)
RT_EXPORT int rt_in_rpp (struct xray *rp, const fastf_t *invdir, const fastf_t *min, const fastf_t *max)
RT_EXPORT const union cutterrt_cell_n_on_ray (struct application *ap, int n)
RT_EXPORT void rt_cut_clean (struct rt_i *rtip)
RT_EXPORT char * rt_read_cmd (FILE *fp)
RT_EXPORT int rt_split_cmd (char **argv, int lim, char *lp)
RT_EXPORT int rt_do_cmd (struct rt_i *rtip, const char *ilp, const struct command_tab *tp)
RT_EXPORT struct rt_wdbwdb_fopen (const char *filename)
RT_EXPORT struct rt_wdbwdb_fopen_v (const char *filename, int version)
RT_EXPORT struct rt_wdbwdb_dbopen (struct db_i *dbip, int mode)
RT_EXPORT int wdb_import (struct rt_wdb *wdbp, struct rt_db_internal *internp, const char *name, const mat_t mat)
RT_EXPORT int wdb_export_external (struct rt_wdb *wdbp, struct bu_external *ep, const char *name, int flags, unsigned char minor_type)
RT_EXPORT int wdb_put_internal (struct rt_wdb *wdbp, const char *name, struct rt_db_internal *ip, double local2mm)
RT_EXPORT int wdb_export (struct rt_wdb *wdbp, const char *name, genptr_t gp, int id, double local2mm)
RT_EXPORT void wdb_close (struct rt_wdb *wdbp)
RT_EXPORT struct animatedb_parse_1anim (struct db_i *dbip, int argc, const char **argv)
RT_EXPORT int db_parse_anim (struct db_i *dbip, int argc, const char **argv)
RT_EXPORT int db_add_anim (struct db_i *dbip, struct animate *anp, int root)
RT_EXPORT int db_do_anim (struct animate *anp, mat_t stack, mat_t arc, struct mater_info *materp)
RT_EXPORT void db_free_anim (struct db_i *dbip)
RT_EXPORT void db_write_anim (FILE *fop, struct animate *anp)
RT_EXPORT void db_free_1anim (struct animate *anp)
RT_EXPORT void db_full_path_init (struct db_full_path *pathp)
RT_EXPORT void db_add_node_to_full_path (struct db_full_path *pp, struct directory *dp)
RT_EXPORT void db_dup_full_path (struct db_full_path *newp, const struct db_full_path *oldp)
RT_EXPORT void db_extend_full_path (struct db_full_path *pathp, int incr)
RT_EXPORT void db_append_full_path (struct db_full_path *dest, const struct db_full_path *src)
RT_EXPORT void db_dup_path_tail (struct db_full_path *newp, const struct db_full_path *oldp, int start)
RT_EXPORT char * db_path_to_string (const struct db_full_path *pp)
RT_EXPORT void db_path_to_vls (struct bu_vls *str, const struct db_full_path *pp)
RT_EXPORT void db_pr_full_path (const char *msg, const struct db_full_path *pathp)
RT_EXPORT int db_string_to_path (struct db_full_path *pp, const struct db_i *dbip, const char *str)
RT_EXPORT int db_argv_to_path (register struct db_full_path *pp, struct db_i *dbip, int argc, const char *const *argv)
RT_EXPORT void db_free_full_path (struct db_full_path *pp)
RT_EXPORT int db_identical_full_paths (const struct db_full_path *a, const struct db_full_path *b)
RT_EXPORT int db_full_path_subset (const struct db_full_path *a, const struct db_full_path *b)
RT_EXPORT int db_full_path_search (const struct db_full_path *a, const struct directory *dp)
RT_EXPORT void db_sync (struct db_i *dbip)
RT_EXPORT struct db_idb_open (const char *name, const char *mode)
RT_EXPORT struct db_idb_create (const char *name, int version)
RT_EXPORT void db_close_client (struct db_i *dbip, long *client)
RT_EXPORT void db_close (struct db_i *dbip)
RT_EXPORT int db_dump (struct rt_wdb *wdbp, struct db_i *dbip)
RT_EXPORT struct db_idb_clone_dbi (struct db_i *dbip, long *client)
RT_EXPORT int db5_write_free (struct db_i *dbip, struct directory *dp, long length)
RT_EXPORT int db5_realloc (struct db_i *dbip, struct directory *dp, struct bu_external *ep)
RT_EXPORT void db5_export_object3 (struct bu_external *out, int dli, const char *name, const unsigned char hidden, const struct bu_external *attrib, const struct bu_external *body, int major, int minor, int a_zzz, int b_zzz)
RT_EXPORT int rt_db_cvt_to_external5 (struct bu_external *ext, const char *name, const struct rt_db_internal *ip, double conv2mm, struct db_i *dbip, struct resource *resp, const int major)
RT_EXPORT int db_wrap_v5_external (struct bu_external *ep, const char *name)
RT_EXPORT int rt_db_get_internal5 (struct rt_db_internal *ip, const struct directory *dp, const struct db_i *dbip, const mat_t mat, struct resource *resp)
RT_EXPORT int rt_db_put_internal5 (struct directory *dp, struct db_i *dbip, struct rt_db_internal *ip, struct resource *resp, const int major)
RT_EXPORT void db5_make_free_object_hdr (struct bu_external *ep, long length)
RT_EXPORT void db5_make_free_object (struct bu_external *ep, long length)
RT_EXPORT int db5_decode_signed (long *lenp, const unsigned char *cp, int format)
RT_EXPORT int db5_decode_length (long *lenp, const unsigned char *cp, int format)
RT_EXPORT int db5_select_length_encoding (long len)
RT_EXPORT void db5_import_color_table (char *cp)
RT_EXPORT int db5_import_attributes (struct bu_attribute_value_set *avs, const struct bu_external *ap)
RT_EXPORT void db5_export_attributes (struct bu_external *ap, const struct bu_attribute_value_set *avs)
RT_EXPORT int db5_get_raw_internal_fp (struct db5_raw_internal *rip, FILE *fp)
RT_EXPORT int db5_header_is_valid (const unsigned char *hp)
RT_EXPORT int db5_fwrite_ident (FILE *, const char *, double)
RT_EXPORT int db5_put_color_table (struct db_i *dbip)
RT_EXPORT int db5_update_ident (struct db_i *dbip, const char *title, double local2mm)
RT_EXPORT int db_put_external5 (struct bu_external *ep, struct directory *dp, struct db_i *dbip)
RT_EXPORT int db5_update_attributes (struct directory *dp, struct bu_attribute_value_set *avsp, struct db_i *dbip)
RT_EXPORT int db5_update_attribute (const char *obj_name, const char *aname, const char *value, struct db_i *dbip)
RT_EXPORT int db5_replace_attributes (struct directory *dp, struct bu_attribute_value_set *avsp, struct db_i *dbip)
RT_EXPORT int db5_get_attributes (const struct db_i *dbip, struct bu_attribute_value_set *avs, const struct directory *dp)
RT_EXPORT int db_tree_nleaves (const union tree *tp)
RT_EXPORT struct rt_tree_arraydb_flatten_tree (struct rt_tree_array *rt_tree_array, union tree *tp, int op, int avail, struct resource *resp)
RT_EXPORT int rt_comb_import4 (struct rt_db_internal *ip, const struct bu_external *ep, const mat_t matrix, const struct db_i *dbip, struct resource *resp)
RT_EXPORT int rt_comb_export4 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip, struct resource *resp)
RT_EXPORT void db_tree_flatten_describe (struct bu_vls *vls, const union tree *tp, int indented, int lvl, double mm2local, struct resource *resp)
RT_EXPORT void db_tree_describe (struct bu_vls *vls, const union tree *tp, int indented, int lvl, double mm2local)
RT_EXPORT void db_comb_describe (struct bu_vls *str, const struct rt_comb_internal *comb, int verbose, double mm2local, struct resource *resp)
RT_EXPORT void rt_comb_ifree (struct rt_db_internal *ip, struct resource *resp)
RT_EXPORT int rt_comb_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local, struct resource *resp, struct db_i *db_i)
RT_EXPORT void db_wrap_v4_external (struct bu_external *op, const char *name)
RT_EXPORT int db_ck_left_heavy_tree (const union tree *tp, int no_unions)
RT_EXPORT int db_ck_v4gift_tree (const union tree *tp)
RT_EXPORT union treedb_mkbool_tree (struct rt_tree_array *rt_tree_array, int howfar, struct resource *resp)
RT_EXPORT union treedb_mkgift_tree (struct rt_tree_array *trees, int subtreecount, struct resource *resp)
RT_EXPORT void rt_pt_sort (register fastf_t t[], int npts)
RT_EXPORT void rt_ell_16pts (register fastf_t *ov, register fastf_t *V, fastf_t *A, fastf_t *B)
RT_EXPORT int rt_poly_roots (bn_poly_t *eqn, bn_complex_t roots[], const char *name)
RT_EXPORT int db_write (struct db_i *dbip, const genptr_t addr, long count, long offset)
RT_EXPORT int db_fwrite_external (FILE *fp, const char *name, struct bu_external *ep)
RT_EXPORT genptr_t db_getmrec (const struct db_i *, const struct directory *dp)
RT_EXPORT int db_get (const struct db_i *, const struct directory *dp, genptr_t where, int offset, int len)
RT_EXPORT int db_put (const struct db_i *, const struct directory *dp, genptr_t where, int offset, int len)
RT_EXPORT int db_get_external (struct bu_external *ep, const struct directory *dp, const struct db_i *dbip)
RT_EXPORT int db_put_external (struct bu_external *ep, struct directory *dp, struct db_i *dbip)
RT_EXPORT void db_free_external (struct bu_external *ep)
RT_EXPORT int db_scan (struct db_i *, int(*handler)(), int do_old_matter, genptr_t client_data)
RT_EXPORT int db_update_ident (struct db_i *dbip, const char *title, double local2mm)
RT_EXPORT int db_fwrite_ident (FILE *fp, const char *title, double local2mm)
RT_EXPORT void db_conversions (struct db_i *, int units)
RT_EXPORT int db_v4_get_units_code (const char *str)
RT_EXPORT int db_dirbuild (struct db_i *dbip)
RT_EXPORT struct directorydb5_diradd (struct db_i *dbip, const struct db5_raw_internal *rip, long laddr, genptr_t client_data)
RT_EXPORT int db_get_version (struct db_i *dbip)
RT_EXPORT int db5_scan (struct db_i *dbip, void(*handler)(struct db_i *, const struct db5_raw_internal *, long addr, genptr_t client_data), genptr_t client_data)
RT_EXPORT int rt_comb_import5 (struct rt_db_internal *ip, const struct bu_external *ep, const mat_t mat, const struct db_i *dbip, struct resource *resp, const int minor_type)
RT_EXPORT int rt_extrude_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const mat_t mat, const struct db_i *dbip, struct resource *resp, const int minor_type)
RT_EXPORT struct db_idb_open_inmem (void)
RT_EXPORT struct db_idb_create_inmem (void)
RT_EXPORT void db_inmem (struct directory *dp, struct bu_external *ext, int flags, struct db_i *dbip)
RT_EXPORT int db_get_directory_size (const struct db_i *dbip)
RT_EXPORT void db_ck_directory (const struct db_i *dbip)
RT_EXPORT int db_is_directory_non_empty (const struct db_i *dbip)
RT_EXPORT int db_dirhash (const char *str)
RT_EXPORT int db_dircheck (struct db_i *dbip, struct bu_vls *ret_name, int noisy, struct directory ***headp)
RT_EXPORT struct directorydb_lookup (const struct db_i *, const char *name, int noisy)
RT_EXPORT struct bu_ptbldb_lookup_by_attr (struct db_i *dbip, int dir_flags, struct bu_attribute_value_set *avs, int op)
RT_EXPORT struct directorydb_diradd (struct db_i *, const char *name, long laddr, int len, int flags, genptr_t ptr)
RT_EXPORT struct directorydb_diradd5 (struct db_i *dbip, const char *name, long laddr, unsigned char major_type, unsigned char minor_type, unsigned char name_hidden, long object_length, struct bu_attribute_value_set *avs)
RT_EXPORT int db_dirdelete (struct db_i *, struct directory *dp)
RT_EXPORT void db_pr_dir (const struct db_i *dbip)
RT_EXPORT int db_rename (struct db_i *, struct directory *, const char *newname)
RT_EXPORT void db_update_nref (struct db_i *dbip, struct resource *resp)
RT_EXPORT int db_regexp_match (const char *pattern, const char *string)
RT_EXPORT int db_regexp_match_all (struct bu_vls *dest, struct db_i *dbip, const char *pattern)
RT_EXPORT int db_flags_internal (const struct rt_db_internal *intern)
RT_EXPORT int db_flags_raw_internal (const struct db5_raw_internal *intern)
RT_EXPORT int db_alloc (struct db_i *, struct directory *dp, int count)
RT_EXPORT int db_delrec (struct db_i *, struct directory *dp, int recnum)
RT_EXPORT int db_delete (struct db_i *, struct directory *dp)
RT_EXPORT int db_zapper (struct db_i *, struct directory *dp, int start)
RT_EXPORT void db_dup_db_tree_state (struct db_tree_state *otsp, const struct db_tree_state *itsp)
RT_EXPORT void db_free_db_tree_state (struct db_tree_state *tsp)
RT_EXPORT void db_init_db_tree_state (struct db_tree_state *tsp, struct db_i *dbip, struct resource *resp)
RT_EXPORT struct combined_tree_statedb_new_combined_tree_state (const struct db_tree_state *tsp, const struct db_full_path *pathp)
RT_EXPORT struct combined_tree_statedb_dup_combined_tree_state (const struct combined_tree_state *old)
RT_EXPORT void db_free_combined_tree_state (struct combined_tree_state *ctsp)
RT_EXPORT void db_pr_tree_state (const struct db_tree_state *tsp)
RT_EXPORT void db_pr_combined_tree_state (const struct combined_tree_state *ctsp)
RT_EXPORT int db_apply_state_from_comb (struct db_tree_state *tsp, const struct db_full_path *pathp, const struct rt_comb_internal *comb)
RT_EXPORT int db_apply_state_from_memb (struct db_tree_state *tsp, struct db_full_path *pathp, const union tree *tp)
RT_EXPORT int db_apply_state_from_one_member (struct db_tree_state *tsp, struct db_full_path *pathp, const char *cp, int sofar, const union tree *tp)
RT_EXPORT union treedb_find_named_leaf (union tree *tp, const char *cp)
RT_EXPORT union treedb_find_named_leafs_parent (int *side, union tree *tp, const char *cp)
RT_EXPORT void db_tree_del_lhs (union tree *tp, struct resource *resp)
RT_EXPORT void db_tree_del_rhs (union tree *tp, struct resource *resp)
RT_EXPORT int db_tree_del_dbleaf (union tree **tp, const char *cp, struct resource *resp)
RT_EXPORT void db_tree_mul_dbleaf (union tree *tp, const mat_t mat)
RT_EXPORT void db_tree_funcleaf (struct db_i *dbip, struct rt_comb_internal *comb, union tree *comb_tree, void(*leaf_func)(), genptr_t user_ptr1, genptr_t user_ptr2, genptr_t user_ptr3)
RT_EXPORT int db_follow_path (struct db_tree_state *tsp, struct db_full_path *total_path, const struct db_full_path *new_path, int noisy, int depth)
RT_EXPORT int db_follow_path_for_state (struct db_tree_state *tsp, struct db_full_path *pathp, const char *orig_str, int noisy)
RT_EXPORT union treedb_recurse (struct db_tree_state *tsp, struct db_full_path *pathp, struct combined_tree_state **region_start_statepp, genptr_t client_data)
RT_EXPORT union treedb_dup_subtree (const union tree *tp, struct resource *resp)
RT_EXPORT void db_free_tree (union tree *tp, struct resource *resp)
RT_EXPORT void db_left_hvy_node (union tree *tp)
RT_EXPORT void db_non_union_push (union tree *tp, struct resource *resp)
RT_EXPORT int db_count_tree_nodes (const union tree *tp, int count)
RT_EXPORT int db_is_tree_all_unions (const union tree *tp)
RT_EXPORT int db_count_subtree_regions (const union tree *tp)
RT_EXPORT int db_tally_subtree_regions (union tree *tp, union tree **reg_trees, int cur, int lim, struct resource *resp)
RT_EXPORT int db_walk_tree (struct db_i *dbip, int argc, const char **argv, int ncpu, const struct db_tree_state *init_state, int(*reg_start_func)(struct db_tree_state *, struct db_full_path *, const struct rt_comb_internal *, genptr_t client_data), union tree *(*reg_end_func)(struct db_tree_state *, struct db_full_path *, union tree *, genptr_t client_data), union tree *(*leaf_func)(struct db_tree_state *, struct db_full_path *, struct rt_db_internal *, genptr_t client_data), genptr_t client_data)
RT_EXPORT int db_path_to_mat (struct db_i *dbip, struct db_full_path *pathp, mat_t mat, int depth, struct resource *resp)
RT_EXPORT void db_apply_anims (struct db_full_path *pathp, struct directory *dp, mat_t stck, mat_t arc, struct mater_info *materp)
RT_EXPORT int db_region_mat (mat_t m, struct db_i *dbip, const char *name, struct resource *resp)
RT_EXPORT int db_shader_mat (mat_t model_to_shader, const struct rt_i *rtip, const struct region *rp, point_t p_min, point_t p_max, struct resource *resp)
RT_EXPORT int rt_db_get_internal (struct rt_db_internal *ip, const struct directory *dp, const struct db_i *dbip, const mat_t mat, struct resource *resp)
RT_EXPORT int rt_db_put_internal (struct directory *dp, struct db_i *dbip, struct rt_db_internal *ip, struct resource *resp)
RT_EXPORT int rt_fwrite_internal (FILE *fp, const char *name, const struct rt_db_internal *ip, double conv2mm)
RT_EXPORT void rt_db_free_internal (struct rt_db_internal *ip, struct resource *resp)
RT_EXPORT int rt_db_lookup_internal (struct db_i *dbip, const char *obj_name, struct directory **dpp, struct rt_db_internal *ip, int noisy, struct resource *resp)
RT_EXPORT void rt_optim_tree (register union tree *tp, struct resource *resp)
RT_EXPORT void db_get_directory (register struct resource *resp)
RT_EXPORT void db_functree (struct db_i *dbip, struct directory *dp, void(*comb_func)(struct db_i *, struct directory *, genptr_t), void(*leaf_func)(struct db_i *, struct directory *, genptr_t), struct resource *resp, genptr_t client_data)
RT_EXPORT int rt_arb_get_cgtype ()
RT_EXPORT int rt_arb_std_type (const struct rt_db_internal *ip, const struct bn_tol *tol)
RT_EXPORT void rt_arb_centroid ()
RT_EXPORT int rt_arb_calc_points ()
RT_EXPORT int rt_arb_3face_intersect (point_t point, const plane_t planes[6], int type, int loc)
RT_EXPORT void rt_ell (fastf_t *ov, const fastf_t *V, const fastf_t *A, const fastf_t *B, int sides)
RT_EXPORT void rt_vls_pipept (struct bu_vls *vp, int seg_no, const struct rt_db_internal *ip, double mm2local)
RT_EXPORT void rt_pipept_print ()
RT_EXPORT int rt_pipe_ck (const struct bu_list *headp)
RT_EXPORT int rt_mk_parabola (struct rt_pt_node *pts, fastf_t r, fastf_t b, fastf_t dtol, fastf_t ntol)
RT_EXPORT struct rt_pt_nodert_ptalloc ()
RT_EXPORT unsigned long rt_memalloc (struct mem_map **pp, unsigned size)
RT_EXPORT struct mem_maprt_memalloc_nosplit (struct mem_map **pp, unsigned size)
RT_EXPORT unsigned long rt_memget (struct mem_map **pp, unsigned int size, unsigned int place)
RT_EXPORT void rt_memfree (struct mem_map **pp, unsigned size, unsigned long addr)
RT_EXPORT void rt_mempurge (struct mem_map **pp)
RT_EXPORT void rt_memprint (struct mem_map **pp)
RT_EXPORT void rt_memclose ()
RT_EXPORT struct bn_vlblockrt_vlblock_init ()
RT_EXPORT void rt_vlblock_free (struct bn_vlblock *vbp)
RT_EXPORT struct bu_listrt_vlblock_find (struct bn_vlblock *vbp, int r, int g, int b)
RT_EXPORT void rt_hitsort (struct hit h[], int nh)
RT_EXPORT int rt_pg_to_bot (struct rt_db_internal *ip, const struct bn_tol *tol, struct resource *resp0)
RT_EXPORT int rt_pg_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
RT_EXPORT int rt_pg_plot_poly (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
RT_EXPORT int rt_hf_to_dsp (struct rt_db_internal *db_intern, struct resource *resp)
RT_EXPORT int dsp_pos (point_t out, struct soltab *stp, point_t p)
RT_EXPORT void rt_pr_pt_vls (struct bu_vls *v, const struct rt_i *rtip, const struct partition *pp)
RT_EXPORT void rt_pr_seg_vls (struct bu_vls *, const struct seg *)
RT_EXPORT void rt_pr_hit_vls (struct bu_vls *v, const char *str, const struct hit *hitp)
RT_EXPORT void rt_pr_hitarray_vls (struct bu_vls *v, const char *str, const struct hit *hitp, int count)
RT_EXPORT void rt_pr_tree_vls (struct bu_vls *vls, const union tree *tp)
RT_EXPORT char * rt_pr_tree_str (const union tree *tree)
RT_EXPORT void rt_pr_fallback_angle (struct bu_vls *str, const char *prefix, const double angles[5])
RT_EXPORT void rt_find_fallback_angle (double angles[5], const vect_t vec)
RT_EXPORT void rt_pr_tol (const struct bn_tol *tol)
RT_EXPORT void rt_regionfix (struct rt_i *rtip)
RT_EXPORT int rt_id_solid (struct bu_external *ep)
RT_EXPORT const struct rt_functabrt_get_functab_by_label (const char *label)
RT_EXPORT int rt_generic_xform (struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, int avail, struct db_i *dbip, struct resource *resp)
RT_EXPORT void rt_nul_make (const struct rt_functab *ftp, struct rt_db_internal *intern, double diameter)
RT_EXPORT void rt_plot_all_bboxes (FILE *fp, struct rt_i *rtip)
RT_EXPORT void rt_plot_all_solids (FILE *fp, struct rt_i *rtip, struct resource *resp)
RT_EXPORT void rt_init_resource (struct resource *resp, int cpu_num, struct rt_i *rtip)
RT_EXPORT void rt_clean_resource (struct rt_i *rtip, struct resource *resp)
RT_EXPORT int rt_unprep (struct rt_i *rtip, struct rt_reprep_obj_list *objs, struct resource *resp)
RT_EXPORT int rt_reprep (struct rt_i *rtip, struct rt_reprep_obj_list *objs, struct resource *resp)
RT_EXPORT int re_prep_solids (struct rt_i *rtip, int num_solids, char **solid_names, struct resource *resp)
RT_EXPORT int rt_find_paths (struct db_i *dbip, struct directory *start, struct directory *end, struct bu_ptbl *paths, struct resource *resp)
RT_EXPORT struct bu_bitvget_solidbitv (long nbits, struct resource *resp)
RT_EXPORT void rt_add_res_stats (struct rt_i *rtip, struct resource *resp)
RT_EXPORT void rt_zero_res_stats (struct resource *resp)
RT_EXPORT void rt_res_pieces_clean (struct resource *resp, struct rt_i *rtip)
RT_EXPORT void rt_res_pieces_init (struct resource *resp, struct rt_i *rtip)
RT_EXPORT void rt_vstub (struct soltab *stp[], struct xray *rp[], struct seg segp[], int n, struct application *ap)
RT_EXPORT int rt_bound_tree (const union tree *tp, vect_t tree_min, vect_t tree_max)
RT_EXPORT int rt_tree_elim_nops (union tree *, struct resource *resp)
RT_EXPORT struct bn_vlblockbn_vlblock_init (struct bu_list *free_vlist_hd, int max_ent)
RT_EXPORT int rt_ck_vlist (const struct bu_list *vhead)
RT_EXPORT void rt_vlist_copy (struct bu_list *dest, const struct bu_list *src)
RT_EXPORT void bn_vlist_cleanup (struct bu_list *hd)
RT_EXPORT void rt_vlist_cleanup ()
RT_EXPORT void bn_vlist_rpp (struct bu_list *hd, const point_t minn, const point_t maxx)
RT_EXPORT void rt_vlist_export (struct bu_vls *vls, struct bu_list *hp, const char *name)
RT_EXPORT void rt_vlist_import (struct bu_list *hp, struct bu_vls *namevls, const unsigned char *buf)
RT_EXPORT void rt_plot_vlblock (FILE *fp, const struct bn_vlblock *vbp)
RT_EXPORT void rt_vlist_to_uplot (FILE *fp, const struct bu_list *vhead)
RT_EXPORT int rt_process_uplot_value (struct bu_list **vhead, struct bn_vlblock *vbp, FILE *fp, int c, double char_size, int mode)
RT_EXPORT int rt_uplot_to_vlist (struct bn_vlblock *vbp, FILE *fp, double char_size, int mode)
RT_EXPORT void rt_label_vlist_verts (struct bn_vlblock *vbp, struct bu_list *src, mat_t mat, double sz, double mm2local)
RT_EXPORT void rt_htbl_init (struct rt_htbl *b, int len, const char *str)
RT_EXPORT void rt_htbl_reset (struct rt_htbl *b)
RT_EXPORT void rt_htbl_free (struct rt_htbl *b)
RT_EXPORT struct hitrt_htbl_get (struct rt_htbl *b)
RT_EXPORT struct modelnmg_mm ()
RT_EXPORT struct modelnmg_mmr ()
RT_EXPORT struct nmgregionnmg_mrsv (struct model *m)
RT_EXPORT struct shellnmg_msv (struct nmgregion *r_p)
RT_EXPORT struct faceusenmg_mf (struct loopuse *lu1)
RT_EXPORT struct loopusenmg_mlv (long *magic, struct vertex *v, int orientation)
RT_EXPORT struct edgeusenmg_me (struct vertex *v1, struct vertex *v2, struct shell *s)
RT_EXPORT struct edgeusenmg_meonvu (struct vertexuse *vu)
RT_EXPORT struct loopusenmg_ml (struct shell *s)
RT_EXPORT int nmg_keg (struct edgeuse *eu)
RT_EXPORT int nmg_kvu (struct vertexuse *vu)
RT_EXPORT int nmg_kfu (struct faceuse *fu1)
RT_EXPORT int nmg_klu (struct loopuse *lu1)
RT_EXPORT int nmg_keu (struct edgeuse *eu)
RT_EXPORT int nmg_ks (struct shell *s)
RT_EXPORT int nmg_kr (struct nmgregion *r)
RT_EXPORT void nmg_km (struct model *m)
RT_EXPORT void nmg_vertex_gv (struct vertex *v, const point_t pt)
RT_EXPORT void nmg_vertex_g (struct vertex *v, fastf_t x, fastf_t y, fastf_t z)
RT_EXPORT void nmg_vertexuse_nv (struct vertexuse *vu, const vect_t norm)
RT_EXPORT void nmg_vertexuse_a_cnurb (struct vertexuse *vu, const fastf_t *uvw)
RT_EXPORT void nmg_edge_g (struct edgeuse *eu)
RT_EXPORT void nmg_edge_g_cnurb (struct edgeuse *eu, int order, int n_knots, fastf_t *kv, int n_pts, int pt_type, fastf_t *points)
RT_EXPORT void nmg_edge_g_cnurb_plinear (struct edgeuse *eu)
RT_EXPORT int nmg_use_edge_g (struct edgeuse *eu, long *eg)
RT_EXPORT void nmg_loop_g (struct loop *l, const struct bn_tol *tol)
RT_EXPORT void nmg_face_g (struct faceuse *fu, const plane_t p)
RT_EXPORT void nmg_face_new_g (struct faceuse *fu, const plane_t pl)
RT_EXPORT void nmg_face_g_snurb (struct faceuse *fu, int u_order, int v_order, int n_u_knots, int n_v_knots, fastf_t *ukv, fastf_t *vkv, int n_rows, int n_cols, int pt_type, fastf_t *mesh)
RT_EXPORT void nmg_face_bb (struct face *f, const struct bn_tol *tol)
RT_EXPORT void nmg_shell_a (struct shell *s, const struct bn_tol *tol)
RT_EXPORT void nmg_region_a (struct nmgregion *r, const struct bn_tol *tol)
RT_EXPORT int nmg_demote_lu (struct loopuse *lu)
RT_EXPORT int nmg_demote_eu (struct edgeuse *eu)
RT_EXPORT void nmg_movevu (struct vertexuse *vu, struct vertex *v)
RT_EXPORT void nmg_je (struct edgeuse *eudst, struct edgeuse *eusrc)
RT_EXPORT void nmg_unglueedge (struct edgeuse *eu)
RT_EXPORT void nmg_jv (struct vertex *v1, struct vertex *v2)
RT_EXPORT void nmg_jfg (struct face *f1, struct face *f2)
RT_EXPORT void nmg_jeg (struct edge_g_lseg *dest_eg, struct edge_g_lseg *src_eg)
RT_EXPORT void nmg_merge_regions (struct nmgregion *r1, struct nmgregion *r2, const struct bn_tol *tol)
RT_EXPORT void nmg_shell_coplanar_face_merge (struct shell *s, const struct bn_tol *tol, const int simplify)
RT_EXPORT int nmg_simplify_shell (struct shell *s)
RT_EXPORT void nmg_rm_redundancies (struct shell *s, const struct bn_tol *tol)
RT_EXPORT void nmg_sanitize_s_lv (struct shell *s, int orient)
RT_EXPORT void nmg_s_split_touchingloops (struct shell *s, const struct bn_tol *tol)
RT_EXPORT void nmg_s_join_touchingloops (struct shell *s, const struct bn_tol *tol)
RT_EXPORT void nmg_js (struct shell *s1, struct shell *s2, const struct bn_tol *tol)
RT_EXPORT void nmg_invert_shell (struct shell *s, const struct bn_tol *tol)
RT_EXPORT struct faceusenmg_cmface (struct shell *s, struct vertex **vt[], int n)
RT_EXPORT struct faceusenmg_cface (struct shell *s, struct vertex **vt, int n)
RT_EXPORT struct faceusenmg_add_loop_to_face (struct shell *s, struct faceuse *fu, struct vertex **verts, int n, int dir)
RT_EXPORT int nmg_fu_planeeqn (struct faceuse *fu, const struct bn_tol *tol)
RT_EXPORT void nmg_gluefaces (struct faceuse *fulist[], int n, const struct bn_tol *tol)
RT_EXPORT int nmg_simplify_face (struct faceuse *fu)
RT_EXPORT void nmg_reverse_face (struct faceuse *fu)
RT_EXPORT void nmg_mv_fu_between_shells (struct shell *dest, struct shell *src, struct faceuse *fu)
RT_EXPORT void nmg_jf (struct faceuse *dest_fu, struct faceuse *src_fu)
RT_EXPORT struct faceusenmg_dup_face (struct faceuse *fu, struct shell *s)
RT_EXPORT void nmg_jl (struct loopuse *lu, struct edgeuse *eu)
RT_EXPORT struct vertexusenmg_join_2loops (struct vertexuse *vu1, struct vertexuse *vu2)
RT_EXPORT struct vertexusenmg_join_singvu_loop (struct vertexuse *vu1, struct vertexuse *vu2)
RT_EXPORT struct vertexusenmg_join_2singvu_loops (struct vertexuse *vu1, struct vertexuse *vu2)
RT_EXPORT struct loopusenmg_cut_loop (struct vertexuse *vu1, struct vertexuse *vu2)
RT_EXPORT struct loopusenmg_split_lu_at_vu (struct loopuse *lu, struct vertexuse *vu)
RT_EXPORT struct vertexusenmg_find_repeated_v_in_lu (struct vertexuse *vu)
RT_EXPORT void nmg_split_touchingloops (struct loopuse *lu, const struct bn_tol *tol)
RT_EXPORT int nmg_join_touchingloops (struct loopuse *lu)
RT_EXPORT int nmg_get_touching_jaunts (const struct loopuse *lu, struct bu_ptbl *tbl, int *need_init)
RT_EXPORT void nmg_kill_accordions (struct loopuse *lu)
RT_EXPORT int nmg_loop_split_at_touching_jaunt (struct loopuse *lu, const struct bn_tol *tol)
RT_EXPORT void nmg_simplify_loop (struct loopuse *lu)
RT_EXPORT int nmg_kill_snakes (struct loopuse *lu)
RT_EXPORT void nmg_mv_lu_between_shells (struct shell *dest, struct shell *src, struct loopuse *lu)
RT_EXPORT void nmg_moveltof (struct faceuse *fu, struct shell *s)
RT_EXPORT struct loopusenmg_dup_loop (struct loopuse *lu, long *parent, long **trans_tbl)
RT_EXPORT void nmg_set_lu_orientation (struct loopuse *lu, int is_opposite)
RT_EXPORT void nmg_lu_reorient (struct loopuse *lu)
RT_EXPORT struct edgeusenmg_eusplit (struct vertex *v, struct edgeuse *oldeu, int share_geom)
RT_EXPORT struct edgeusenmg_esplit (struct vertex *v, struct edgeuse *eu, int share_geom)
RT_EXPORT struct edgeusenmg_ebreak (struct vertex *v, struct edgeuse *eu)
RT_EXPORT struct edgeusenmg_ebreaker (struct vertex *v, struct edgeuse *eu, const struct bn_tol *tol)
RT_EXPORT struct vertexnmg_e2break (struct edgeuse *eu1, struct edgeuse *eu2)
RT_EXPORT int nmg_unbreak_edge (struct edgeuse *eu1_first)
RT_EXPORT int nmg_unbreak_shell_edge_unsafe (struct edgeuse *eu1_first)
RT_EXPORT struct edgeusenmg_eins (struct edgeuse *eu)
RT_EXPORT void nmg_mv_eu_between_shells (struct shell *dest, struct shell *src, struct edgeuse *eu)
RT_EXPORT void nmg_mv_vu_between_shells (struct shell *dest, struct shell *src, struct vertexuse *vu)
RT_EXPORT struct modelnmg_find_model (const long *magic_p)
RT_EXPORT void nmg_model_bb (point_t min_pt, point_t max_pt, const struct model *m)
RT_EXPORT int nmg_shell_is_empty (const struct shell *s)
RT_EXPORT struct shellnmg_find_s_of_lu (const struct loopuse *lu)
RT_EXPORT struct shellnmg_find_s_of_eu (const struct edgeuse *eu)
RT_EXPORT struct shellnmg_find_s_of_vu (const struct vertexuse *vu)
RT_EXPORT struct faceusenmg_find_fu_of_eu (const struct edgeuse *eu)
RT_EXPORT struct faceusenmg_find_fu_of_lu (const struct loopuse *lu)
RT_EXPORT struct faceusenmg_find_fu_of_vu (const struct vertexuse *vu)
RT_EXPORT struct faceusenmg_find_fu_with_fg_in_s (const struct shell *s1, const struct faceuse *fu2)
RT_EXPORT double nmg_measure_fu_angle (const struct edgeuse *eu, const vect_t xvec, const vect_t yvec, const vect_t zvec)
RT_EXPORT struct loopusenmg_find_lu_of_vu (const struct vertexuse *vu)
RT_EXPORT int nmg_loop_is_a_crack (const struct loopuse *lu)
RT_EXPORT int nmg_loop_is_ccw (const struct loopuse *lu, const plane_t norm, const struct bn_tol *tol)
RT_EXPORT const struct vertexusenmg_loop_touches_self (const struct loopuse *lu)
RT_EXPORT int nmg_2lu_identical (const struct edgeuse *eu1, const struct edgeuse *eu2)
RT_EXPORT struct edgeusenmg_find_matching_eu_in_s (const struct edgeuse *eu1, const struct shell *s2)
RT_EXPORT struct edgeusenmg_findeu (const struct vertex *v1, const struct vertex *v2, const struct shell *s, const struct edgeuse *eup, int dangling_only)
RT_EXPORT struct edgeusenmg_find_eu_in_face (const struct vertex *v1, const struct vertex *v2, const struct faceuse *fu, const struct edgeuse *eup, int dangling_only)
RT_EXPORT struct edgeusenmg_find_e (const struct vertex *v1, const struct vertex *v2, const struct shell *s, const struct edge *ep)
RT_EXPORT struct edgeusenmg_find_eu_of_vu (const struct vertexuse *vu)
RT_EXPORT struct edgeusenmg_find_eu_with_vu_in_lu (const struct loopuse *lu, const struct vertexuse *vu)
RT_EXPORT const struct edgeusenmg_faceradial (const struct edgeuse *eu)
RT_EXPORT const struct edgeusenmg_radial_face_edge_in_shell (const struct edgeuse *eu)
RT_EXPORT const struct edgeusenmg_find_edge_between_2fu (const struct faceuse *fu1, const struct faceuse *fu2, const struct bn_tol *tol)
RT_EXPORT struct edgenmg_find_e_nearest_pt2 (long *magic_p, const point_t pt2, const mat_t mat, const struct bn_tol *tol)
RT_EXPORT void nmg_eu_2vecs_perp (vect_t xvec, vect_t yvec, vect_t zvec, const struct edgeuse *eu, const struct bn_tol *tol)
RT_EXPORT int nmg_find_eu_leftvec (vect_t left, const struct edgeuse *eu)
RT_EXPORT int nmg_find_eu_left_non_unit (vect_t left, const struct edgeuse *eu)
RT_EXPORT struct edgeusenmg_find_ot_same_eu_of_e (const struct edge *e)
RT_EXPORT struct vertexusenmg_find_v_in_face (const struct vertex *, const struct faceuse *)
RT_EXPORT struct vertexusenmg_find_v_in_shell (const struct vertex *v, const struct shell *s, int edges_only)
RT_EXPORT struct vertexusenmg_find_pt_in_lu (const struct loopuse *lu, const point_t pt, const struct bn_tol *tol)
RT_EXPORT struct vertexusenmg_find_pt_in_face (const struct faceuse *fu, const point_t pt, const struct bn_tol *tol)
RT_EXPORT struct vertexnmg_find_pt_in_shell (const struct shell *s, const point_t pt, const struct bn_tol *tol)
RT_EXPORT struct vertexnmg_find_pt_in_model (const struct model *m, const point_t pt, const struct bn_tol *tol)
RT_EXPORT int nmg_is_vertex_in_edgelist (const struct vertex *v, const struct bu_list *hd)
RT_EXPORT int nmg_is_vertex_in_looplist (const struct vertex *v, const struct bu_list *hd, int singletons)
RT_EXPORT struct vertexusenmg_is_vertex_in_face (const struct vertex *v, const struct face *f)
RT_EXPORT int nmg_is_vertex_a_selfloop_in_shell (const struct vertex *v, const struct shell *s)
RT_EXPORT int nmg_is_vertex_in_facelist (const struct vertex *v, const struct bu_list *hd)
RT_EXPORT int nmg_is_edge_in_edgelist (const struct edge *e, const struct bu_list *hd)
RT_EXPORT int nmg_is_edge_in_looplist (const struct edge *e, const struct bu_list *hd)
RT_EXPORT int nmg_is_edge_in_facelist (const struct edge *e, const struct bu_list *hd)
RT_EXPORT int nmg_is_loop_in_facelist (const struct loop *l, const struct bu_list *fu_hd)
RT_EXPORT void nmg_vertex_tabulate (struct bu_ptbl *tab, const long *magic_p)
RT_EXPORT void nmg_vertexuse_normal_tabulate (struct bu_ptbl *tab, const long *magic_p)
RT_EXPORT void nmg_edgeuse_tabulate (struct bu_ptbl *tab, const long *magic_p)
RT_EXPORT void nmg_edge_tabulate (struct bu_ptbl *tab, const long *magic_p)
RT_EXPORT void nmg_edge_g_tabulate (struct bu_ptbl *tab, const long *magic_p)
RT_EXPORT void nmg_face_tabulate (struct bu_ptbl *tab, const long *magic_p)
RT_EXPORT void nmg_edgeuse_with_eg_tabulate (struct bu_ptbl *tab, const struct edge_g_lseg *eg)
RT_EXPORT void nmg_edgeuse_on_line_tabulate (struct bu_ptbl *tab, const long *magic_p, const point_t pt, const vect_t dir, const struct bn_tol *tol)
RT_EXPORT void nmg_e_and_v_tabulate (struct bu_ptbl *eutab, struct bu_ptbl *vtab, const long *magic_p)
RT_EXPORT int nmg_2edgeuse_g_coincident (const struct edgeuse *eu1, const struct edgeuse *eu2, const struct bn_tol *tol)
RT_EXPORT void nmg_translate_face (struct faceuse *fu, const vect_t Vec, const struct bn_tol *tol)
RT_EXPORT int nmg_extrude_face (struct faceuse *fu, const vect_t Vec, const struct bn_tol *tol)
RT_EXPORT struct vertexusenmg_find_vertex_in_lu (const struct vertex *v, const struct loopuse *lu)
RT_EXPORT void nmg_fix_overlapping_loops (struct shell *s, const struct bn_tol *tol)
RT_EXPORT void nmg_break_crossed_loops (struct shell *is, const struct bn_tol *tol)
RT_EXPORT struct shellnmg_extrude_cleanup (struct shell *is, const int is_void, const struct bn_tol *tol)
RT_EXPORT void nmg_hollow_shell (struct shell *s, const fastf_t thick, const int approximate, const struct bn_tol *tol)
RT_EXPORT struct shellnmg_extrude_shell (struct shell *s, const fastf_t dist, const int normal_ward, const int approximate, const struct bn_tol *tol)
RT_EXPORT char * nmg_orientation (int orientation)
RT_EXPORT void nmg_pr_orient (int orientation, const char *h)
RT_EXPORT void nmg_pr_m (const struct model *m)
RT_EXPORT void nmg_pr_r (const struct nmgregion *r, char *h)
RT_EXPORT void nmg_pr_sa (const struct shell_a *sa, char *h)
RT_EXPORT void nmg_pr_lg (const struct loop_g *lg, char *h)
RT_EXPORT void nmg_pr_fg (const long *magic, char *h)
RT_EXPORT void nmg_pr_s (const struct shell *s, char *h)
RT_EXPORT void nmg_pr_s_briefly (const struct shell *s, char *h)
RT_EXPORT void nmg_pr_f (const struct face *f, char *h)
RT_EXPORT void nmg_pr_fu (const struct faceuse *fu, char *h)
RT_EXPORT void nmg_pr_fu_briefly (const struct faceuse *fu, char *h)
RT_EXPORT void nmg_pr_l (const struct loop *l, char *h)
RT_EXPORT void nmg_pr_lu (const struct loopuse *lu, char *h)
RT_EXPORT void nmg_pr_lu_briefly (const struct loopuse *lu, char *h)
RT_EXPORT void nmg_pr_eg (const long *eg, char *h)
RT_EXPORT void nmg_pr_e (const struct edge *e, char *h)
RT_EXPORT void nmg_pr_eu (const struct edgeuse *eu, char *h)
RT_EXPORT void nmg_pr_eu_briefly (const struct edgeuse *eu, char *h)
RT_EXPORT void nmg_pr_eu_endpoints (const struct edgeuse *eu, char *h)
RT_EXPORT void nmg_pr_vg (const struct vertex_g *vg, char *h)
RT_EXPORT void nmg_pr_v (const struct vertex *v, char *h)
RT_EXPORT void nmg_pr_vu (const struct vertexuse *vu, char *h)
RT_EXPORT void nmg_pr_vu_briefly (const struct vertexuse *vu, char *h)
RT_EXPORT void nmg_pr_vua (const long *magic_p, char *h)
RT_EXPORT void nmg_euprint (const char *str, const struct edgeuse *eu)
RT_EXPORT void nmg_pr_ptbl (const char *title, const struct bu_ptbl *tbl, int verbose)
RT_EXPORT void nmg_pr_ptbl_vert_list (const char *str, const struct bu_ptbl *tbl, const fastf_t *mag)
RT_EXPORT void nmg_pr_one_eu_vecs (const struct edgeuse *eu, const vect_t xvec, const vect_t yvec, const vect_t zvec, const struct bn_tol *tol)
RT_EXPORT void nmg_pr_fu_around_eu_vecs (const struct edgeuse *eu, const vect_t xvec, const vect_t yvec, const vect_t zvec, const struct bn_tol *tol)
RT_EXPORT void nmg_pr_fu_around_eu (const struct edgeuse *eu, const struct bn_tol *tol)
RT_EXPORT void nmg_pl_lu_around_eu (const struct edgeuse *eu)
RT_EXPORT void nmg_pr_fus_in_fg (const long *fg_magic)
RT_EXPORT struct rt_bot_internalnmg_bot (struct shell *s, const struct bn_tol *tol)
RT_EXPORT int rt_dist_pt3_line3 (fastf_t *dist, point_t pca, const point_t a, const point_t p, const vect_t dir, const struct bn_tol *tol)
RT_EXPORT int rt_dist_line3_line3 (fastf_t dist[2], const point_t p1, const point_t p2, const vect_t d1, const vect_t d2, const struct bn_tol *tol)
RT_EXPORT int nmg_snurb_calc_lu_uv_orient (const struct loopuse *lu)
RT_EXPORT void nmg_snurb_fu_eval (const struct faceuse *fu, const fastf_t u, const fastf_t v, point_t pt_on_srf)
RT_EXPORT void nmg_snurb_fu_get_norm (const struct faceuse *fu, const fastf_t u, const fastf_t v, vect_t norm)
RT_EXPORT void nmg_snurb_fu_get_norm_at_vu (const struct faceuse *fu, const struct vertexuse *vu, vect_t norm)
RT_EXPORT void nmg_find_zero_length_edges (const struct model *m)
RT_EXPORT struct facenmg_find_top_face_in_dir (const struct shell *s, int dir, long *flags)
RT_EXPORT struct facenmg_find_top_face (const struct shell *s, int *dir, long *flags)
RT_EXPORT int nmg_find_outer_and_void_shells (struct nmgregion *r, struct bu_ptbl ***shells, const struct bn_tol *tol)
RT_EXPORT int nmg_mark_edges_real (const long *magic_p)
RT_EXPORT void nmg_tabulate_face_g_verts (struct bu_ptbl *tab, const struct face_g_plane *fg)
RT_EXPORT void nmg_isect_shell_self (struct shell *s, const struct bn_tol *tol)
RT_EXPORT struct edgeusenmg_next_radial_eu (const struct edgeuse *eu, const struct shell *s, const int wires)
RT_EXPORT struct edgeusenmg_prev_radial_eu (const struct edgeuse *eu, const struct shell *s, const int wires)
RT_EXPORT int nmg_radial_face_count (const struct edgeuse *eu, const struct shell *s)
RT_EXPORT int nmg_check_closed_shell (const struct shell *s, const struct bn_tol *tol)
RT_EXPORT int nmg_move_lu_between_fus (struct faceuse *dest, struct faceuse *src, struct loopuse *lu)
RT_EXPORT void nmg_loop_plane_newell (const struct loopuse *lu, plane_t pl)
RT_EXPORT fastf_t nmg_loop_plane_area (const struct loopuse *lu, plane_t pl)
RT_EXPORT int nmg_calc_face_plane (struct faceuse *fu_in, plane_t pl)
RT_EXPORT int nmg_calc_face_g (struct faceuse *fu)
RT_EXPORT fastf_t nmg_faceuse_area (const struct faceuse *fu)
RT_EXPORT fastf_t nmg_shell_area (const struct shell *s)
RT_EXPORT fastf_t nmg_region_area (const struct nmgregion *r)
RT_EXPORT fastf_t nmg_model_area (const struct model *m)
RT_EXPORT void nmg_purge_unwanted_intersection_points (struct bu_ptbl *vert_list, fastf_t *mag, const struct faceuse *fu, const struct bn_tol *tol)
RT_EXPORT int nmg_in_or_ref (struct vertexuse *vu, struct bu_ptbl *b)
RT_EXPORT void nmg_rebound (struct model *m, const struct bn_tol *tol)
RT_EXPORT void nmg_count_shell_kids (const struct model *m, unsigned long *total_wires, unsigned long *total_faces, unsigned long *total_points)
RT_EXPORT void nmg_close_shell (struct shell *s, const struct bn_tol *tol)
RT_EXPORT struct shellnmg_dup_shell (struct shell *s, long ***copy_tbl, const struct bn_tol *tol)
RT_EXPORT struct edgeusenmg_pop_eu (struct bu_ptbl *stack)
RT_EXPORT void nmg_reverse_radials (struct faceuse *fu, const struct bn_tol *tol)
RT_EXPORT void nmg_reverse_face_and_radials (struct faceuse *fu, const struct bn_tol *tol)
RT_EXPORT int nmg_shell_is_void (const struct shell *s)
RT_EXPORT void nmg_propagate_normals (struct faceuse *fu_in, long *flags, const struct bn_tol *tol)
RT_EXPORT void nmg_connect_same_fu_orients (struct shell *s)
RT_EXPORT void nmg_fix_decomposed_shell_normals (struct shell *s, const struct bn_tol *tol)
RT_EXPORT struct modelnmg_mk_model_from_region (struct nmgregion *r, int reindex)
RT_EXPORT void nmg_fix_normals (struct shell *s_orig, const struct bn_tol *tol)
RT_EXPORT int nmg_break_long_edges (struct shell *s, const struct bn_tol *tol)
RT_EXPORT struct faceusenmg_mk_new_face_from_loop (struct loopuse *lu)
RT_EXPORT int nmg_split_loops_into_faces (long *magic_p, const struct bn_tol *tol)
RT_EXPORT int nmg_decompose_shell (struct shell *s, const struct bn_tol *tol)
RT_EXPORT void nmg_stash_model_to_file (const char *filename, const struct model *m, const char *title)
RT_EXPORT int nmg_unbreak_region_edges (long *magic_p)
RT_EXPORT int nmg_mv_shell_to_region (struct shell *s, struct nmgregion *r)
RT_EXPORT int nmg_find_isect_faces (const struct vertex *new_v, struct bu_ptbl *faces, int *free_edges, const struct bn_tol *tol)
RT_EXPORT int nmg_simple_vertex_solve (struct vertex *new_v, const struct bu_ptbl *faces, const struct bn_tol *tol)
RT_EXPORT int nmg_ck_vert_on_fus (const struct vertex *v, const struct bn_tol *tol)
RT_EXPORT void nmg_make_faces_at_vert (struct vertex *new_v, struct bu_ptbl *int_faces, const struct bn_tol *tol)
RT_EXPORT void nmg_kill_cracks_at_vertex (const struct vertex *vp)
RT_EXPORT int nmg_complex_vertex_solve (struct vertex *new_v, const struct bu_ptbl *faces, const int free_edges, const int approximate, const struct bn_tol *tol)
RT_EXPORT int nmg_bad_face_normals (const struct shell *s, const struct bn_tol *tol)
RT_EXPORT int nmg_faces_are_radial (const struct faceuse *fu1, const struct faceuse *fu2)
RT_EXPORT int nmg_move_edge_thru_pt (struct edgeuse *mv_eu, const point_t pt, const struct bn_tol *tol)
RT_EXPORT void nmg_vlist_to_wire_edges (struct shell *s, const struct bu_list *vhead)
RT_EXPORT void nmg_follow_free_edges_to_vertex (const struct vertex *vpa, const struct vertex *vpb, struct bu_ptbl *bad_verts, const struct shell *s, const struct edgeuse *eu, struct bu_ptbl *verts, int *found)
RT_EXPORT void nmg_glue_face_in_shell (const struct faceuse *fu, struct shell *s, const struct bn_tol *tol)
RT_EXPORT int nmg_open_shells_connect (struct shell *dst, struct shell *src, const long **copy_tbl, const struct bn_tol *tol)
RT_EXPORT int nmg_in_vert (struct vertex *new_v, const int approximate, const struct bn_tol *tol)
RT_EXPORT void nmg_mirror_model (struct model *m)
RT_EXPORT int nmg_kill_cracks (struct shell *s)
RT_EXPORT int nmg_kill_zero_length_edgeuses (struct model *m)
RT_EXPORT void nmg_make_faces_within_tol (struct shell *s, const struct bn_tol *tol)
RT_EXPORT void nmg_intersect_loops_self (struct shell *s, const struct bn_tol *tol)
RT_EXPORT struct edge_g_cnurbrt_join_cnurbs (struct bu_list *crv_head)
RT_EXPORT struct edge_g_cnurbrt_arc2d_to_cnurb (point_t i_center, point_t i_start, point_t i_end, int point_type, const struct bn_tol *tol)
RT_EXPORT int nmg_break_edge_at_verts (struct edge *e, struct bu_ptbl *verts, const struct bn_tol *tol)
RT_EXPORT int nmg_break_edges (long *magic_p, const struct bn_tol *tol)
RT_EXPORT int nmg_lu_is_convex (struct loopuse *lu, const struct bn_tol *tol)
RT_EXPORT int nmg_simplify_shell_edges (struct shell *s, const struct bn_tol *tol)
RT_EXPORT int nmg_edge_collapse (struct model *m, const struct bn_tol *tol, const fastf_t tol_coll, const fastf_t min_angle)
RT_EXPORT int rt_bot_edge_in_list (const int v1, const int v2, const int edge_list[], const int edge_count0)
RT_EXPORT int rt_bot_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
RT_EXPORT int rt_bot_plot_poly (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
RT_EXPORT int rt_bot_same_orientation (const int *a, const int *b)
RT_EXPORT void nmg_triangulate_shell (struct shell *s, const struct bn_tol *tol)
RT_EXPORT void nmg_triangulate_model (struct model *m, const struct bn_tol *tol)
RT_EXPORT void nmg_triangulate_fu (struct faceuse *fu, const struct bn_tol *tol)
RT_EXPORT int nmg_dangling_face (const struct faceuse *fu, const char *manifolds)
RT_EXPORT char * nmg_shell_manifolds (struct shell *sp, char *tbl)
RT_EXPORT char * nmg_manifolds (struct model *m)
RT_EXPORT int nmg_ray_segs (struct ray_data *rd)
RT_EXPORT int rt_num_circular_segments (double maxerr, double radius)
RT_EXPORT int rt_tcl_parse_ray (Tcl_Interp *interp, struct xray *rp, const char *const *argv)
RT_EXPORT void rt_tcl_pr_cutter (Tcl_Interp *interp, const union cutter *cutp)
RT_EXPORT int rt_tcl_cutter (ClientData clientData, Tcl_Interp *interp, int argc, const char *const *argv)
RT_EXPORT void rt_tcl_pr_hit (Tcl_Interp *interp, struct hit *hitp, const struct seg *segp, const struct xray *rayp, int flipflag)
RT_EXPORT void rt_tcl_setup (Tcl_Interp *interp)
RT_EXPORT int Sysv_Init (Tcl_Interp *interp)
RT_EXPORT int Rt_Init (Tcl_Interp *interp)
RT_EXPORT void db_full_path_appendresult (Tcl_Interp *interp, const struct db_full_path *pp)
RT_EXPORT int tcl_obj_to_int_array (Tcl_Interp *interp, Tcl_Obj *list, int **array, int *array_len)
RT_EXPORT int tcl_obj_to_fastf_array (Tcl_Interp *interp, Tcl_Obj *list, fastf_t **array, int *array_len)
RT_EXPORT int tcl_list_to_int_array (Tcl_Interp *interp, char *char_list, int **array, int *array_len)
RT_EXPORT int tcl_list_to_fastf_array (Tcl_Interp *interp, char *char_list, fastf_t **array, int *array_len)
RT_EXPORT int rt_mk_hyperbola (struct rt_pt_node *pts, fastf_t r, fastf_t b, fastf_t c, fastf_t dtol, fastf_t ntol)
RT_EXPORT int nmg_classify_pt_loop (const point_t pt, const struct loopuse *lu, const struct bn_tol *tol)
RT_EXPORT int nmg_classify_s_vs_s (struct shell *s, struct shell *s2, const struct bn_tol *tol)
RT_EXPORT int nmg_classify_lu_lu (const struct loopuse *lu1, const struct loopuse *lu2, const struct bn_tol *tol)
RT_EXPORT int nmg_class_pt_f (const point_t pt, const struct faceuse *fu, const struct bn_tol *tol)
RT_EXPORT int nmg_class_pt_s (const point_t pt, const struct shell *s, const int in_or_out_only, const struct bn_tol *tol)
RT_EXPORT int nmg_eu_is_part_of_crack (const struct edgeuse *eu)
RT_EXPORT int nmg_class_pt_lu_except (point_t pt, const struct loopuse *lu, const struct edge *e_p, const struct bn_tol *tol)
RT_EXPORT int nmg_class_pt_fu_except (const point_t pt, const struct faceuse *fu, const struct loopuse *ignore_lu, void(*eu_func)(), void(*vu_func)(), const char *priv, const int call_on_hits, const int in_or_out_only, const struct bn_tol *tol)
RT_EXPORT void nmg_pl_shell (FILE *fp, const struct shell *s, int fancy)
RT_EXPORT void nmg_vu_to_vlist (struct bu_list *vhead, const struct vertexuse *vu)
RT_EXPORT void nmg_eu_to_vlist (struct bu_list *vhead, const struct bu_list *eu_hd)
RT_EXPORT void nmg_lu_to_vlist (struct bu_list *vhead, const struct loopuse *lu, int poly_markers, const vectp_t normal)
RT_EXPORT void nmg_snurb_fu_to_vlist (struct bu_list *vhead, const struct faceuse *fu, int poly_markers)
RT_EXPORT void nmg_s_to_vlist (struct bu_list *vhead, const struct shell *s, int poly_markers)
RT_EXPORT void nmg_r_to_vlist (struct bu_list *vhead, const struct nmgregion *r, int poly_markers)
RT_EXPORT void nmg_m_to_vlist (struct bu_list *vhead, struct model *m, int poly_markers)
RT_EXPORT void nmg_offset_eu_vert (point_t base, const struct edgeuse *eu, const vect_t face_normal, int tip)
RT_EXPORT void nmg_pl_v (FILE *fp, const struct vertex *v, long *b)
RT_EXPORT void nmg_pl_e (FILE *fp, const struct edge *e, long *b, int red, int green, int blue)
RT_EXPORT void nmg_pl_eu (FILE *fp, const struct edgeuse *eu, long *b, int red, int green, int blue)
RT_EXPORT void nmg_pl_lu (FILE *fp, const struct loopuse *fu, long *b, int red, int green, int blue)
RT_EXPORT void nmg_pl_fu (FILE *fp, const struct faceuse *fu, long *b, int red, int green, int blue)
RT_EXPORT void nmg_pl_s (FILE *fp, const struct shell *s)
RT_EXPORT void nmg_pl_r (FILE *fp, const struct nmgregion *r)
RT_EXPORT void nmg_pl_m (FILE *fp, const struct model *m)
RT_EXPORT void nmg_vlblock_v (struct bn_vlblock *vbp, const struct vertex *v, long *tab)
RT_EXPORT void nmg_vlblock_e (struct bn_vlblock *vbp, const struct edge *e, long *tab, int red, int green, int blue, int fancy)
RT_EXPORT void nmg_vlblock_eu (struct bn_vlblock *vbp, const struct edgeuse *eu, long *tab, int red, int green, int blue, int fancy, int loopnum)
RT_EXPORT void nmg_vlblock_euleft (struct bu_list *vh, const struct edgeuse *eu, const point_t center, const mat_t mat, const vect_t xvec, const vect_t yvec, double len, const struct bn_tol *tol)
RT_EXPORT void nmg_vlblock_around_eu (struct bn_vlblock *vbp, const struct edgeuse *arg_eu, long *tab, int fancy, const struct bn_tol *tol)
RT_EXPORT void nmg_vlblock_lu (struct bn_vlblock *vbp, const struct loopuse *lu, long *tab, int red, int green, int blue, int fancy, int loopnum)
RT_EXPORT void nmg_vlblock_fu (struct bn_vlblock *vbp, const struct faceuse *fu, long *tab, int fancy)
RT_EXPORT void nmg_vlblock_s (struct bn_vlblock *vbp, const struct shell *s, int fancy)
RT_EXPORT void nmg_vlblock_r (struct bn_vlblock *vbp, const struct nmgregion *r, int fancy)
RT_EXPORT void nmg_vlblock_m (struct bn_vlblock *vbp, const struct model *m, int fancy)
RT_EXPORT void nmg_pl_edges_in_2_shells (struct bn_vlblock *vbp, long *b, const struct edgeuse *eu, int fancy, const struct bn_tol *tol)
RT_EXPORT void nmg_pl_isect (const char *filename, const struct shell *s, const struct bn_tol *tol)
RT_EXPORT void nmg_pl_comb_fu (int num1, int num2, const struct faceuse *fu1)
RT_EXPORT void nmg_pl_2fu (const char *str, int num, const struct faceuse *fu1, const struct faceuse *fu2, int show_mates)
RT_EXPORT void nmg_show_broken_classifier_stuff (long *p, long *classlist[4], int all_new, int fancy, const char *a_string)
RT_EXPORT void nmg_face_plot (const struct faceuse *fu)
RT_EXPORT void nmg_2face_plot (const struct faceuse *fu1, const struct faceuse *fu2)
RT_EXPORT void nmg_face_lu_plot (const struct loopuse *lu, const struct vertexuse *vu1, const struct vertexuse *vu2)
RT_EXPORT void nmg_plot_lu_ray (const struct loopuse *lu, const struct vertexuse *vu1, const struct vertexuse *vu2, const vect_t left)
RT_EXPORT void nmg_plot_ray_face (const char *fname, point_t pt, const vect_t dir, const struct faceuse *fu)
RT_EXPORT void nmg_plot_lu_around_eu (const char *prefix, const struct edgeuse *eu, const struct bn_tol *tol)
RT_EXPORT int nmg_snurb_to_vlist (struct bu_list *vhead, const struct face_g_snurb *fg, int n_interior)
RT_EXPORT void nmg_cnurb_to_vlist (struct bu_list *vhead, const struct edgeuse *eu, int n_interior, int cmd)
RT_EXPORT void rt_nurb_clean_cnurb (struct edge_g_cnurb *crv)
RT_EXPORT int rt_nurb_knot_index (const struct knot_vector *kv, fastf_t k_value, int order)
RT_EXPORT int nmg_uv_in_lu (const fastf_t u, const fastf_t v, const struct loopuse *lu)
RT_EXPORT int nmg_mesh_two_faces (struct faceuse *fu1, struct faceuse *fu2, const struct bn_tol *tol)
RT_EXPORT void nmg_radial_join_eu (struct edgeuse *eu1, struct edgeuse *eu2, const struct bn_tol *tol)
RT_EXPORT void nmg_mesh_faces (struct faceuse *fu1, struct faceuse *fu2, const struct bn_tol *tol)
RT_EXPORT int nmg_mesh_face_shell (struct faceuse *fu1, struct shell *s, const struct bn_tol *tol)
RT_EXPORT int nmg_mesh_shell_shell (struct shell *s1, struct shell *s2, const struct bn_tol *tol)
RT_EXPORT struct nmgregionnmg_do_bool (struct nmgregion *s1, struct nmgregion *s2, const int oper, const struct bn_tol *tol)
RT_EXPORT int nmg_two_region_vertex_fuse (struct nmgregion *r1, struct nmgregion *r2, const struct bn_tol *tol)
RT_EXPORT union treenmg_booltree_leaf_tess (struct db_tree_state *tsp, struct db_full_path *pathp, struct rt_db_internal *ip, genptr_t client_data)
RT_EXPORT union treenmg_booltree_leaf_tnurb (struct db_tree_state *tsp, struct db_full_path *pathp, struct rt_db_internal *ip, genptr_t client_data)
RT_EXPORT union treenmg_booltree_evaluate (union tree *tp, const struct bn_tol *tol, struct resource *resp)
RT_EXPORT int nmg_boolean (union tree *tp, struct model *m, const struct bn_tol *tol, struct resource *resp)
RT_EXPORT void nmg_class_shells (struct shell *sA, struct shell *sB, long *classlist[4], const struct bn_tol *tol)
RT_EXPORT int nmg_ck_vu_ptbl (struct bu_ptbl *p, struct faceuse *fu)
RT_EXPORT double nmg_vu_angle_measure (struct vertexuse *vu, vect_t x_dir, vect_t y_dir, int assessment, int in)
RT_EXPORT int nmg_wedge_class (int ass, double a, double b)
RT_EXPORT void nmg_sanitize_fu (struct faceuse *fu)
RT_EXPORT void nmg_unlist_v (struct bu_ptbl *b, fastf_t *mag, struct vertex *v)
RT_EXPORT struct edge_g_lsegnmg_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, const struct bn_tol *tol)
RT_EXPORT void nmg_fcut_face_2d (struct bu_ptbl *vu_list, fastf_t *mag, struct faceuse *fu1, struct faceuse *fu2, struct bn_tol *tol)
RT_EXPORT int nmg_insert_vu_if_on_edge (struct vertexuse *vu1, struct vertexuse *vu2, struct edgeuse *new_eu, struct bn_tol *tol)
RT_EXPORT void nmg_ck_lu_orientation (struct loopuse *lu, const struct bn_tol *tolp)
RT_EXPORT const char * nmg_class_name (int class_no)
RT_EXPORT void nmg_evaluate_boolean (struct shell *sA, struct shell *sB, int op, long *classlist[8], const struct bn_tol *tol)
RT_EXPORT void nmg_rt_print_hitlist (struct hitmiss *hl)
RT_EXPORT void nmg_rt_print_hitmiss (struct hitmiss *a_hit)
RT_EXPORT int nmg_class_ray_vs_shell (struct xray *rp, const struct shell *s, const int in_or_out_only, const struct bn_tol *tol)
RT_EXPORT void nmg_isect_ray_model (struct ray_data *rd)
RT_EXPORT void nmg_vvg (const struct vertex_g *vg)
RT_EXPORT void nmg_vvertex (const struct vertex *v, const struct vertexuse *vup)
RT_EXPORT void nmg_vvua (const long *vua)
RT_EXPORT void nmg_vvu (const struct vertexuse *vu, const long *up_magic_p)
RT_EXPORT void nmg_veg (const long *eg)
RT_EXPORT void nmg_vedge (const struct edge *e, const struct edgeuse *eup)
RT_EXPORT void nmg_veu (const struct bu_list *hp, const long *up_magic_p)
RT_EXPORT void nmg_vlg (const struct loop_g *lg)
RT_EXPORT void nmg_vloop (const struct loop *l, const struct loopuse *lup)
RT_EXPORT void nmg_vlu (const struct bu_list *hp, const long *up)
RT_EXPORT void nmg_vfg (const struct face_g_plane *fg)
RT_EXPORT void nmg_vface (const struct face *f, const struct faceuse *fup)
RT_EXPORT void nmg_vfu (const struct bu_list *hp, const struct shell *s)
RT_EXPORT void nmg_vshell (const struct bu_list *hp, const struct nmgregion *r)
RT_EXPORT void nmg_vregion (const struct bu_list *hp, const struct model *m)
RT_EXPORT void nmg_vmodel (const struct model *m)
RT_EXPORT void nmg_ck_e (const struct edgeuse *eu, const struct edge *e, const char *str)
RT_EXPORT void nmg_ck_vu (const long *parent, const struct vertexuse *vu, const char *str)
RT_EXPORT void nmg_ck_eu (const long *parent, const struct edgeuse *eu, const char *str)
RT_EXPORT void nmg_ck_lg (const struct loop *l, const struct loop_g *lg, const char *str)
RT_EXPORT void nmg_ck_l (const struct loopuse *lu, const struct loop *l, const char *str)
RT_EXPORT void nmg_ck_lu (const long *parent, const struct loopuse *lu, const char *str)
RT_EXPORT void nmg_ck_fg (const struct face *f, const struct face_g_plane *fg, const char *str)
RT_EXPORT void nmg_ck_f (const struct faceuse *fu, const struct face *f, const char *str)
RT_EXPORT void nmg_ck_fu (const struct shell *s, const struct faceuse *fu, const char *str)
RT_EXPORT int nmg_ck_eg_verts (const struct edge_g_lseg *eg, const struct bn_tol *tol)
RT_EXPORT int nmg_ck_geometry (const struct model *m, const struct bn_tol *tol)
RT_EXPORT int nmg_ck_face_worthless_edges (const struct faceuse *fu)
RT_EXPORT void nmg_ck_lueu (const struct loopuse *lu, const char *s)
RT_EXPORT int nmg_check_radial (const struct edgeuse *eu, const struct bn_tol *tol)
RT_EXPORT int nmg_eu_2s_orient_bad (const struct edgeuse *eu, const struct shell *s1, const struct shell *s2, const struct bn_tol *tol)
RT_EXPORT int nmg_ck_closed_surf (const struct shell *s, const struct bn_tol *tol)
RT_EXPORT int nmg_ck_closed_region (const struct nmgregion *r, const struct bn_tol *tol)
RT_EXPORT void nmg_ck_v_in_2fus (const struct vertex *vp, const struct faceuse *fu1, const struct faceuse *fu2, const struct bn_tol *tol)
RT_EXPORT void nmg_ck_vs_in_region (const struct nmgregion *r, const struct bn_tol *tol)
RT_EXPORT struct vertexusenmg_make_dualvu (struct vertex *v, struct faceuse *fu, const struct bn_tol *tol)
RT_EXPORT struct vertexusenmg_enlist_vu (struct nmg_inter_struct *is, const struct vertexuse *vu, struct vertexuse *dualvu, fastf_t dist)
RT_EXPORT void nmg_isect2d_prep (struct nmg_inter_struct *is, const long *assoc_use)
RT_EXPORT void nmg_isect2d_cleanup (struct nmg_inter_struct *is)
RT_EXPORT void nmg_isect2d_final_cleanup ()
RT_EXPORT void nmg_isect_vert2p_face2p (struct nmg_inter_struct *is, struct vertexuse *vu1, struct faceuse *fu2)
RT_EXPORT struct edgeusenmg_break_eu_on_v (struct edgeuse *eu1, struct vertex *v2, struct faceuse *fu, struct nmg_inter_struct *is)
RT_EXPORT void nmg_break_eg_on_v (const struct edge_g_lseg *eg, struct vertex *v, const struct bn_tol *tol)
RT_EXPORT int nmg_isect_2colinear_edge2p (struct edgeuse *eu1, struct edgeuse *eu2, struct faceuse *fu, struct nmg_inter_struct *is, struct bu_ptbl *l1, struct bu_ptbl *l2)
RT_EXPORT int nmg_isect_edge2p_edge2p (struct nmg_inter_struct *is, struct edgeuse *eu1, struct edgeuse *eu2, struct faceuse *fu1, struct faceuse *fu2)
RT_EXPORT int nmg_isect_construct_nice_ray (struct nmg_inter_struct *is, struct faceuse *fu2)
RT_EXPORT void nmg_enlist_one_vu (struct nmg_inter_struct *is, const struct vertexuse *vu, fastf_t dist)
RT_EXPORT int nmg_isect_line2_edge2p (struct nmg_inter_struct *is, struct bu_ptbl *list, struct edgeuse *eu1, struct faceuse *fu1, struct faceuse *fu2)
RT_EXPORT void nmg_isect_line2_vertex2 (struct nmg_inter_struct *is, struct vertexuse *vu1, struct faceuse *fu1)
RT_EXPORT int nmg_isect_two_ptbls (struct nmg_inter_struct *is, const struct bu_ptbl *t1, const struct bu_ptbl *t2)
RT_EXPORT struct edge_g_lsegnmg_find_eg_on_line (const long *magic_p, const point_t pt, const vect_t dir, const struct bn_tol *tol)
RT_EXPORT int nmg_k0eu (struct vertex *v)
RT_EXPORT struct vertexnmg_repair_v_near_v (struct vertex *hit_v, struct vertex *v, const struct edge_g_lseg *eg1, const struct edge_g_lseg *eg2, int bomb, const struct bn_tol *tol)
RT_EXPORT struct vertexnmg_search_v_eg (const struct edgeuse *eu, int second, const struct edge_g_lseg *eg1, const struct edge_g_lseg *eg2, struct vertex *hit_v, const struct bn_tol *tol)
RT_EXPORT struct vertexnmg_common_v_2eg (struct edge_g_lseg *eg1, struct edge_g_lseg *eg2, const struct bn_tol *tol)
RT_EXPORT int nmg_is_vertex_on_inter (struct vertex *v, struct faceuse *fu1, struct faceuse *fu2, struct nmg_inter_struct *is)
RT_EXPORT void nmg_isect_eu_verts (struct edgeuse *eu, struct vertex_g *vg1, struct vertex_g *vg2, struct bu_ptbl *verts, struct bu_ptbl *inters, const struct bn_tol *tol)
RT_EXPORT void nmg_isect_eu_eu (struct edgeuse *eu1, struct vertex_g *vg1a, struct vertex_g *vg1b, vect_t dir1, struct edgeuse *eu2, struct bu_ptbl *verts, struct bu_ptbl *inters, const struct bn_tol *tol)
RT_EXPORT void nmg_isect_eu_fu (struct nmg_inter_struct *is, struct bu_ptbl *verts, struct edgeuse *eu, struct faceuse *fu)
RT_EXPORT void nmg_isect_fu_jra (struct nmg_inter_struct *is, struct faceuse *fu1, struct faceuse *fu2, struct bu_ptbl *eu1_list, struct bu_ptbl *eu2_list)
RT_EXPORT void nmg_isect_line2_face2pNEW (struct nmg_inter_struct *is, struct faceuse *fu1, struct faceuse *fu2, struct bu_ptbl *eu1_list, struct bu_ptbl *eu2_list)
RT_EXPORT int nmg_is_eu_on_line3 (const struct edgeuse *eu, const point_t pt, const vect_t dir, const struct bn_tol *tol)
RT_EXPORT struct edge_g_lsegnmg_find_eg_between_2fg (const struct faceuse *ofu1, const struct faceuse *fu2, const struct bn_tol *tol)
RT_EXPORT struct edgeusenmg_does_fu_use_eg (const struct faceuse *fu1, const long *eg)
RT_EXPORT int rt_line_on_plane (const point_t pt, const vect_t dir, const plane_t plane, const struct bn_tol *tol)
RT_EXPORT void nmg_cut_lu_into_coplanar_and_non (struct loopuse *lu, plane_t pl, struct nmg_inter_struct *is)
RT_EXPORT void nmg_check_radial_angles (char *str, struct shell *s, const struct bn_tol *tol)
RT_EXPORT int nmg_faces_can_be_intersected (struct nmg_inter_struct *bs, const struct faceuse *fu1, const struct faceuse *fu2, const struct bn_tol *tol)
RT_EXPORT void nmg_isect_two_generic_faces (struct faceuse *fu1, struct faceuse *fu2, const struct bn_tol *tol)
RT_EXPORT void nmg_crackshells (struct shell *s1, struct shell *s2, const struct bn_tol *tol)
RT_EXPORT int nmg_fu_touchingloops (const struct faceuse *fu)
RT_EXPORT int nmg_index_of_struct (const long *p)
RT_EXPORT void nmg_m_set_high_bit (struct model *m)
RT_EXPORT void nmg_m_reindex (struct model *m, long newindex)
RT_EXPORT void nmg_vls_struct_counts (struct bu_vls *str, const struct nmg_struct_counts *ctr)
RT_EXPORT void nmg_pr_struct_counts (const struct nmg_struct_counts *ctr, const char *str)
RT_EXPORT long ** nmg_m_struct_count (struct nmg_struct_counts *ctr, const struct model *m)
RT_EXPORT void nmg_struct_counts (const struct model *m, const char *str)
RT_EXPORT void nmg_merge_models (struct model *m1, struct model *m2)
RT_EXPORT long nmg_find_max_index (const struct model *m)
RT_EXPORT void rt_dspline_matrix (mat_t m, const char *type, const double tension, const double bias)
RT_EXPORT double rt_dspline4 (mat_t m, double a, double b, double c, double d, double alpha)
RT_EXPORT void rt_dspline4v (double *pt, const mat_t m, const double *a, const double *b, const double *c, const double *d, const int depth, const double alpha)
RT_EXPORT void rt_dspline_n (double *r, const mat_t m, const double *knots, const int n, const int depth, const double alpha)
RT_EXPORT int rt_nurb_bezier (struct bu_list *bezier_hd, const struct face_g_snurb *orig_surf, struct resource *res)
RT_EXPORT int rt_bez_check (const struct face_g_snurb *srf)
RT_EXPORT int nurb_crv_is_bezier (const struct edge_g_cnurb *crv)
RT_EXPORT void nurb_c_to_bezier (struct bu_list *clist, struct edge_g_cnurb *crv)
RT_EXPORT struct face_g_snurbrt_nurb_scopy (const struct face_g_snurb *srf, struct resource *res)
RT_EXPORT struct edge_g_cnurbrt_nurb_crv_copy (const struct edge_g_cnurb *crv)
RT_EXPORT int nmg_is_common_bigloop (const struct face *f1, const struct face *f2)
RT_EXPORT void nmg_region_v_unique (struct nmgregion *r1, const struct bn_tol *tol)
RT_EXPORT int nmg_ptbl_vfuse (struct bu_ptbl *t, const struct bn_tol *tol)
RT_EXPORT int nmg_region_both_vfuse (struct bu_ptbl *t1, struct bu_ptbl *t2, const struct bn_tol *tol)
RT_EXPORT int nmg_model_vertex_fuse (struct model *m, const struct bn_tol *tol)
RT_EXPORT int nmg_cnurb_is_linear (const struct edge_g_cnurb *cnrb)
RT_EXPORT int nmg_snurb_is_planar (const struct face_g_snurb *srf, const struct bn_tol *tol)
RT_EXPORT void nmg_eval_linear_trim_curve (const struct face_g_snurb *snrb, const fastf_t uvw[3], point_t xyz)
RT_EXPORT void nmg_eval_trim_curve (const struct edge_g_cnurb *cnrb, const struct face_g_snurb *snrb, const fastf_t t, point_t xyz)
RT_EXPORT void nmg_eval_trim_to_tol (const struct edge_g_cnurb *cnrb, const struct face_g_snurb *snrb, const fastf_t t0, const fastf_t t1, struct bu_list *head, const struct bn_tol *tol)
RT_EXPORT void nmg_eval_linear_trim_to_tol (const struct edge_g_cnurb *cnrb, const struct face_g_snurb *snrb, const fastf_t uvw1[3], const fastf_t uvw2[3], struct bu_list *head, const struct bn_tol *tol)
RT_EXPORT int nmg_cnurb_lseg_coincident (const struct edgeuse *eu1, const struct edge_g_cnurb *cnrb, const struct face_g_snurb *snrb, const point_t pt1, const point_t pt2, const struct bn_tol *tol)
RT_EXPORT int nmg_cnurb_is_on_crv (const struct edgeuse *eu, const struct edge_g_cnurb *cnrb, const struct face_g_snurb *snrb, const struct bu_list *head, const struct bn_tol *tol)
RT_EXPORT int nmg_model_edge_fuse (struct model *m, const struct bn_tol *tol)
RT_EXPORT int nmg_model_edge_g_fuse (struct model *m, const struct bn_tol *tol)
RT_EXPORT int nmg_ck_fu_verts (struct faceuse *fu1, struct face *f2, const struct bn_tol *tol)
RT_EXPORT int nmg_ck_fg_verts (struct faceuse *fu1, struct face *f2, const struct bn_tol *tol)
RT_EXPORT int nmg_two_face_fuse (struct face *f1, struct face *f2, const struct bn_tol *tol)
RT_EXPORT int nmg_model_face_fuse (struct model *m, const struct bn_tol *tol)
RT_EXPORT int nmg_break_all_es_on_v (long *magic_p, struct vertex *v, const struct bn_tol *tol)
RT_EXPORT int nmg_model_break_e_on_v (struct model *m, const struct bn_tol *tol)
RT_EXPORT int nmg_model_fuse (struct model *m, const struct bn_tol *tol)
RT_EXPORT void nmg_radial_sorted_list_insert (struct bu_list *hd, struct nmg_radial *rad)
RT_EXPORT void nmg_radial_verify_pointers (const struct bu_list *hd, const struct bn_tol *tol)
RT_EXPORT void nmg_radial_verify_monotone (const struct bu_list *hd, const struct bn_tol *tol)
RT_EXPORT void nmg_insure_radial_list_is_increasing (struct bu_list *hd, fastf_t amin, fastf_t amax)
RT_EXPORT void nmg_radial_build_list (struct bu_list *hd, struct bu_ptbl *shell_tbl, int existing, struct edgeuse *eu, const vect_t xvec, const vect_t yvec, const vect_t zvec, const struct bn_tol *tol)
RT_EXPORT void nmg_radial_merge_lists (struct bu_list *dest, struct bu_list *src, const struct bn_tol *tol)
RT_EXPORT int nmg_is_crack_outie (const struct edgeuse *eu, const struct bn_tol *tol)
RT_EXPORT struct nmg_radialnmg_find_radial_eu (const struct bu_list *hd, const struct edgeuse *eu)
RT_EXPORT const struct edgeusenmg_find_next_use_of_2e_in_lu (const struct edgeuse *eu, const struct edge *e1, const struct edge *e2)
RT_EXPORT void nmg_radial_mark_cracks (struct bu_list *hd, const struct edge *e1, const struct edge *e2, const struct bn_tol *tol)
RT_EXPORT struct nmg_radialnmg_radial_find_an_original (const struct bu_list *hd, const struct shell *s, const struct bn_tol *tol)
RT_EXPORT int nmg_radial_mark_flips (struct bu_list *hd, const struct shell *s, const struct bn_tol *tol)
RT_EXPORT int nmg_radial_check_parity (const struct bu_list *hd, const struct bu_ptbl *shells, const struct bn_tol *tol)
RT_EXPORT void nmg_radial_implement_decisions (struct bu_list *hd, const struct bn_tol *tol, struct edgeuse *eu1, vect_t xvec, vect_t yvec, vect_t zvec)
RT_EXPORT void nmg_pr_radial (const char *title, const struct nmg_radial *rad)
RT_EXPORT void nmg_pr_radial_list (const struct bu_list *hd, const struct bn_tol *tol)
RT_EXPORT void nmg_do_radial_flips (struct bu_list *hd)
RT_EXPORT void nmg_do_radial_join (struct bu_list *hd, struct edgeuse *eu1ref, vect_t xvec, vect_t yvec, vect_t zvec, const struct bn_tol *tol)
RT_EXPORT void nmg_radial_join_eu_NEW (struct edgeuse *eu1, struct edgeuse *eu2, const struct bn_tol *tol)
RT_EXPORT void nmg_radial_exchange_marked (struct bu_list *hd, const struct bn_tol *tol)
RT_EXPORT void nmg_s_radial_harmonize (struct shell *s, const struct bn_tol *tol)
RT_EXPORT int nmg_eu_radial_check (const struct edgeuse *eu, const struct shell *s, const struct bn_tol *tol)
RT_EXPORT void nmg_s_radial_check (struct shell *s, const struct bn_tol *tol)
RT_EXPORT void nmg_r_radial_check (const struct nmgregion *r, const struct bn_tol *tol)
RT_EXPORT struct edge_g_lsegnmg_pick_best_edge_g (struct edgeuse *eu1, struct edgeuse *eu2, const struct bn_tol *tol)
RT_EXPORT void nmg_visit_vertex (struct vertex *v, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT void nmg_visit_vertexuse (struct vertexuse *vu, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT void nmg_visit_edge (struct edge *e, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT void nmg_visit_edgeuse (struct edgeuse *eu, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT void nmg_visit_loop (struct loop *l, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT void nmg_visit_loopuse (struct loopuse *lu, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT void nmg_visit_face (struct face *f, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT void nmg_visit_faceuse (struct faceuse *fu, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT void nmg_visit_shell (struct shell *s, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT void nmg_visit_region (struct nmgregion *r, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT void nmg_visit_model (struct model *model, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT void nmg_visit (const long *magicp, const struct nmg_visit_handlers *htab, genptr_t state)
RT_EXPORT int db5_type_tag_from_major (char **tag, const int major)
RT_EXPORT int db5_type_descrip_from_major (char **descrip, const int major)
RT_EXPORT int db5_type_tag_from_codes (char **tag, const int major, const int minor)
RT_EXPORT int db5_type_descrip_from_codes (char **descrip, const int major, const int minor)
RT_EXPORT int db5_type_codes_from_tag (int *major, int *minor, const char *tag)
RT_EXPORT int db5_type_codes_from_descrip (int *major, int *minor, const char *descrip)
RT_EXPORT size_t db5_type_sizeof_h_binu (const int minor)
RT_EXPORT size_t db5_type_sizeof_n_binu (const int minor)
RT_EXPORT int wdb_create_cmd (Tcl_Interp *interp, struct rt_wdb *wdbp, const char *oname)
RT_EXPORT void wdb_deleteProc (ClientData clientData)
RT_EXPORT int wdb_get_tcl (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_cmd (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_init_obj (Tcl_Interp *interp, struct rt_wdb *wdbp, const char *oname)
RT_EXPORT struct db_iwdb_prep_dbip (Tcl_Interp *interp, const char *filename)
RT_EXPORT int wdb_bot_face_sort_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_bot_decimate_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_close_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_reopen_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_match_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_get_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_put_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_adjust_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_form_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_tops_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_rt_gettrees_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_dump_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_dbip_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_ls_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_list_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_lt_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_pathlist_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_pathsum_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_expand_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_kill_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_killall_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_killtree_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_copy_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_move_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_move_all_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_concat_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_dup_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_group_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_remove_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_region_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_comb_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_find_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_which_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_title_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_tree_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_color_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_prcolor_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_tol_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_push_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_whatid_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_keep_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_cat_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_instance_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_observer_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_make_bb_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_make_name_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_units_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_hide_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_unhide_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_attr_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_summary_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_comb_std_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_nmg_collapse_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_nmg_simplify_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_shells_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_xpush_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_showmats_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_copyeval_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_version_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_binary_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_track_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_smooth_bot_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int wdb_importFg4Section_cmd (struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_set_outputHandler_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_set_transparency_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_observer_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT void dgo_deleteProc (ClientData clientData)
RT_EXPORT void dgo_autoview (struct dg_obj *dgop, struct view_obj *vop, Tcl_Interp *interp)
RT_EXPORT int dgo_autoview_cmd (struct dg_obj *dgop, struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_blast_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_draw_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv, int kind)
RT_EXPORT int dgo_E_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_erase_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_erase_all_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_get_autoview_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_how_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_illum_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_label_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT struct dg_objdgo_open_cmd (char *oname, struct rt_wdb *wdbp)
RT_EXPORT int dgo_overlay_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_report_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_rt_cmd (struct dg_obj *dgop, struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_rtabort_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_rtcheck_cmd (struct dg_obj *dgop, struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_vdraw_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_who_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT void dgo_zap_cmd (struct dg_obj *dgop, Tcl_Interp *interp)
RT_EXPORT int dgo_shaded_mode_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT void dgo_color_soltab ()
RT_EXPORT void dgo_drawH_part2 ()
RT_EXPORT void dgo_eraseobjall_callback (struct db_i *dbip, Tcl_Interp *interp, struct directory *dp, int notify)
RT_EXPORT void dgo_eraseobjpath ()
RT_EXPORT void dgo_impending_wdb_close ()
RT_EXPORT int dgo_invent_solid ()
RT_EXPORT void dgo_notify (struct dg_obj *dgop, Tcl_Interp *interp)
RT_EXPORT void dgo_notifyWdb (struct rt_wdb *wdbp, Tcl_Interp *interp)
RT_EXPORT void dgo_zapall ()
RT_EXPORT int dgo_nirt_cmd (struct dg_obj *dgop, struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dgo_vnirt_cmd (struct dg_obj *dgop, struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int dg_E_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT struct view_objvo_open_cmd (const char *oname)
RT_EXPORT void vo_center (struct view_obj *vop, Tcl_Interp *interp, point_t center)
RT_EXPORT int vo_center_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT void vo_size (struct view_obj *vop, Tcl_Interp *interp, fastf_t size)
RT_EXPORT int vo_size_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_invSize_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT void vo_mat_aet (struct view_obj *vop)
RT_EXPORT int vo_zoom (struct view_obj *vop, Tcl_Interp *interp, fastf_t sf)
RT_EXPORT int vo_zoom_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_orientation_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_lookat_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT void vo_setview (struct view_obj *vop, Tcl_Interp *interp, vect_t rvec)
RT_EXPORT int vo_setview_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_eye_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_eye_pos_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_pmat_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_perspective_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT void vo_update (struct view_obj *vop, Tcl_Interp *interp, int oflag)
RT_EXPORT int vo_aet_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_rmat_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_model2view_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_pmodel2view_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_view2model_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_pov_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_units_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_base2local_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_local2base_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_rot (struct view_obj *vop, Tcl_Interp *interp, char coord, char origin, mat_t rmat, int(*func)())
RT_EXPORT int vo_rot_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv, int(*func)())
RT_EXPORT int vo_arot_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv, int(*func)())
RT_EXPORT int vo_mrot_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv, int(*func)())
RT_EXPORT int vo_tra (struct view_obj *vop, Tcl_Interp *interp, char coord, vect_t tvec, int(*func)())
RT_EXPORT int vo_tra_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv, int(*func)())
RT_EXPORT int vo_slew (struct view_obj *vop, Tcl_Interp *interp, vect_t svec)
RT_EXPORT int vo_slew_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_observer_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_coord_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_rotate_about_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_keypoint_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_vrot_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv)
RT_EXPORT int vo_sca (struct view_obj *vop, Tcl_Interp *interp, fastf_t sf, int(*func)())
RT_EXPORT int vo_sca_cmd (struct view_obj *vop, Tcl_Interp *interp, int argc, char **argv, int(*func)())
RT_EXPORT int rt_mk_binunif (struct rt_wdb *wdbp, const char *obj_name, const char *file_name, unsigned int minor_type, long max_count)
RT_EXPORT void rt_binunif_free (struct rt_binunif_internal *bip)
RT_EXPORT void rt_binunif_dump (struct rt_binunif_internal *bip)
int dgo_shaded_mode_cmd ()
int dgo_qray_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
void dgo_init_qray (struct dg_obj *dgop)
void dgo_free_qray (struct dg_obj *dgop)
int dgo_E_tcl (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)
int dgo_invent_solid (struct dg_obj *dgop, Tcl_Interp *interp, char *name, struct bu_list *vhead, long int rgb, int copy, fastf_t transparency, int dmode)
void dgo_drawH_part2 (int dashflag, struct bu_list *vhead, struct db_full_path *pathp, struct db_tree_state *tsp, struct solid *existing_sp, struct dg_client_data *dgcdp)
void dgo_eraseobjpath (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv, int noisy, int all)
void dgo_color_soltab (struct solid *hsp)
void dgo_cvt_vlblock_to_solids (struct dg_obj *dgop, Tcl_Interp *interp, struct bn_vlblock *vbp, char *name, int copy)
int dgo_build_tops (Tcl_Interp *interp, struct solid *hsp, char **start, register char **end)
void dgo_pr_wait_status (Tcl_Interp *interp, int status)
int Dgo_Init (Tcl_Interp *interp)
directory ** dgo_build_dpp (struct dg_obj *dgop, Tcl_Interp *interp, char *path)
int dgo_get_eyemodel_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
int dgo_set_uplotOutputMode_cmd (struct dg_obj *dgop, Tcl_Interp *interp, int argc, char **argv)
void dgo_impending_wdb_close (struct rt_wdb *wdbp, Tcl_Interp *interp)
void dgo_zapall (struct rt_wdb *wdbp, Tcl_Interp *interp)
void do_grid (char *line)
void do_tri (char *line)
void do_quad (char *line)
void make_bot_object (char *name, struct rt_wdb *wdbp)
void Add_bot_face (int pt1, int pt2, int pt3, fastf_t thick, int pos)
oslo_matrt_nurb_calc_oslo (register int order, register const struct knot_vector *tau_kv, register struct knot_vector *t_kv, struct resource *res)
void rt_nurb_pr_oslo (struct oslo_mat *om)
void rt_nurb_free_oslo (struct oslo_mat *om, struct resource *res)
void dgo_qray_data_to_vlist (struct dg_obj *dgop, struct bn_vlblock *vbp, struct dg_qray_dataList *headp, vect_t dir, int do_overlaps)

Variables

OPTICAL_EXPORT struct light_specific LightHead
RT_EXPORT struct materrt_material_head
 defined in mater.c
OPTICAL_EXPORT int PM_Activated
 Photon Mapping Activated, 0=off, 1=on.
OPTICAL_EXPORT int PM_Visualize
 Photon Mapping Visualization of Irradiance Cache.
RT_EXPORT struct rt_wdb HeadWDB
 head of BRL-CAD database object list
RT_EXPORT struct dg_obj HeadDGObj
 head of drawable geometry object list
RT_EXPORT struct view_obj HeadViewObj
 head of view object list
RT_EXPORT struct resource rt_uniresource
 default. Defined in librt/shoot.c
RT_EXPORT struct rt_g rt_g
RT_EXPORT const struct rt_functab rt_functab []
RT_EXPORT const int rt_nfunctab
RT_EXPORT const int rt_arb_faces [5][24]
RT_EXPORT short earb8 [12][18]
RT_EXPORT short earb7 [12][18]
RT_EXPORT short earb6 [10][18]
RT_EXPORT short earb5 [9][18]
RT_EXPORT short earb4 [5][18]
RT_EXPORT void(* nmg_plot_anim_upcall )()
RT_EXPORT void(* nmg_vlblock_anim_upcall )()
RT_EXPORT void(* nmg_mged_debug_display_hack )()
RT_EXPORT double nmg_eue_dist
RT_EXPORT fastf_t rt_cline_radius
RT_EXPORT int rt_bot_minpieces
RT_EXPORT int rt_bot_tri_per_piece
RT_EXPORT const struct db_tree_state rt_initial_tree_state
RT_EXPORT const char * rt_vlist_cmd_descriptions []
RT_EXPORT const char rt_version []
materrt_material_head
 defined in mater.c
bu_cmdtab vdraw_cmds []
dg_obj HeadDGObj
 head of drawable geometry object list
point_tgrid_pts

Detailed Description

/*

Define Documentation

#define SEEN_LIGHT_H   seen
 

Definition at line 37 of file light.h.

#define OPTICAL_EXPORT
 

Definition at line 55 of file light.h.

#define LPT_MAGIC   0x327649
 

Definition at line 66 of file light.h.

#define SOME_LIGHT_SAMPLES   128
 

Definition at line 67 of file light.h.

#define LIGHT_NULL   ((struct light_specific *)0)
 

Definition at line 99 of file light.h.

#define LIGHT_MAGIC   0xdbddbdb7
 

Definition at line 100 of file light.h.

#define RT_CK_LIGHT _p   )     BU_CKMAG((_p), LIGHT_MAGIC, "light_specific")
 

Definition at line 101 of file light.h.

#define RT_EXPORT
 

Definition at line 49 of file mater.h.

#define MATER_NULL   ((struct mater *)0)
 

Definition at line 62 of file mater.h.

Referenced by db5_export_color_table(), dgo_color_soltab(), rt_color_free(), rt_insert_color(), rt_region_color_map(), wdb_color_cmd(), and wdb_prcolor_cmd().

#define MATER_NO_ADDR   (-1L)
 

invalid mt_daddr

Definition at line 63 of file mater.h.

Referenced by wdb_color_cmd().

#define PM_MAPS   4
 

Definition at line 60 of file photonmap.h.

#define PM_GLOBAL   0
 

Definition at line 62 of file photonmap.h.

#define PM_CAUSTIC   1
 

Definition at line 63 of file photonmap.h.

#define PM_SHADOW   2
 

Definition at line 64 of file photonmap.h.

#define PM_IMPORTANCE   3
 

Definition at line 65 of file photonmap.h.

#define PM_SEM   RT_SEM_LAST-1
 

Definition at line 67 of file photonmap.h.

#define PM_SEM_INIT   RT_SEM_LAST
 

Definition at line 68 of file photonmap.h.

#define RAYTRACE_H   seen
 

Definition at line 67 of file raytrace.h.

#define RT_EXPORT
 

Definition at line 90 of file raytrace.h.

#define RAYTRACE_H_VERSION   "@(#)$Header: /cvsroot/brlcad/brlcad/include/raytrace.h,v 14.45 2006/09/18 05:24:07 lbutler Exp $ (BRL)"
 

Definition at line 94 of file raytrace.h.

#define DEBUG_OFF   0
 

No debugging.

Definition at line 105 of file raytrace.h.

#define DEBUG_ALLRAYS   0x00000001
 

1 Print calls to rt_shootray()

Definition at line 110 of file raytrace.h.

Referenced by rt_cell_n_on_ray(), rt_shootray(), and rt_shootray_bundle().

#define DEBUG_ALLHITS   0x00000002
 

2 Print partitions passed to a_hit()

Definition at line 111 of file raytrace.h.

Referenced by rt_shootray(), and rt_shootray_bundle().

#define DEBUG_SHOOT   0x00000004
 

3 Info about rt_shootray() processing

Definition at line 112 of file raytrace.h.

Referenced by rt_cell_n_on_ray(), rt_shootray(), and rt_shootray_bundle().

#define DEBUG_INSTANCE   0x00000008
 

4 regionid instance revectoring

Definition at line 113 of file raytrace.h.

Referenced by rt_regionfix().

#define DEBUG_DB   0x00000010
 

5 Database debugging

Definition at line 116 of file raytrace.h.

Referenced by db5_crack_disk_header(), db5_diradd_handler(), db5_realloc(), db5_replace_attributes(), db5_scan(), db5_update_attributes(), db_alloc(), db_close(), db_create(), db_delete(), db_delrec(), db_functree(), db_fwrite_external(), db_fwrite_ident(), db_get(), db_get_external(), db_getmrec(), db_lookup(), db_open(), db_preorder_traverse(), db_put(), db_put_external(), db_put_external5(), db_read(), db_scan(), db_update_ident(), db_write(), db_zapper(), and rt_submodel_prep().

#define DEBUG_SOLIDS   0x00000020
 

6 Print prep'ed solids

Definition at line 117 of file raytrace.h.

Referenced by rt_arb_uv(), rt_find_identical_solid(), and rt_submodel_prep().

#define DEBUG_REGIONS   0x00000040
 

7 Print regions & boolean trees

Definition at line 118 of file raytrace.h.

Referenced by rt_del_regtree(), and rt_prep_parallel().

#define DEBUG_ARB8   0x00000080
 

8 Print voluminus ARB8 details

Definition at line 119 of file raytrace.h.

Referenced by rt_ars_shot(), rt_pgface(), and rt_rec_shot().

#define DEBUG_SPLINE   0x00000100
 

9 Splines

Definition at line 120 of file raytrace.h.

Referenced by rt_nurb_intersect(), and rt_nurb_shot().

#define DEBUG_ANIM   0x00000200
 

10 Animation

Definition at line 121 of file raytrace.h.

Referenced by db_add_anim(), db_apply_anims(), db_do_anim(), and db_write_anim().

#define DEBUG_ANIM_FULL   0x00000400
 

11 Animation matrices

Definition at line 122 of file raytrace.h.

Referenced by db_do_anim().

#define DEBUG_VOL   0x00000800
 

12 Volume & opaque Binary solid

Definition at line 123 of file raytrace.h.

Referenced by rt_retrieve_binunif(), and rt_vol_shot().

#define DEBUG_ROOTS   0x00001000
 

13 Print rootfinder details

Definition at line 126 of file raytrace.h.

#define DEBUG_PARTITION   0x00002000
 

14 Info about bool_weave()

Definition at line 127 of file raytrace.h.

Referenced by rt_boolweave(), rt_cell_n_on_ray(), rt_fastgen_plate_vol_overlap(), rt_fastgen_vol_vol_overlap(), rt_shootray(), rt_shootray_bundle(), and rt_weave0seg().

#define DEBUG_CUT   0x00004000
 

15 Print space cutting statistics

Definition at line 128 of file raytrace.h.

Referenced by rt_nugrid_cut().

#define DEBUG_BOXING   0x00008000
 

16 Object/box checking details

Definition at line 129 of file raytrace.h.

Referenced by rt_ck_overlap().

#define DEBUG_MEM   0x00010000
 

17 -->> BU_DEBUG_MEM_LOG

Definition at line 130 of file raytrace.h.

#define DEBUG_MEM_FULL   0x00020000
 

18 -->> BU_DEBUG_MEM_CHECK

Definition at line 131 of file raytrace.h.

Referenced by do_grid().

#define DEBUG_FDIFF   0x00040000
 

19 bool/fdiff debugging

Definition at line 132 of file raytrace.h.

Referenced by rt_fdiff().

#define DEBUG_PARALLEL   0x00080000
 

20 -->> BU_DEBUG_PARALLEL

Definition at line 133 of file raytrace.h.

#define DEBUG_CUTDETAIL   0x00100000
 

21 Print space cutting details

Definition at line 134 of file raytrace.h.

Referenced by rt_cut_it().

#define DEBUG_TREEWALK   0x00200000
 

22 Database tree traversal

Definition at line 135 of file raytrace.h.

Referenced by db_follow_path(), db_mkgift_tree(), db_recurse(), and rt_submodel_wireframe_leaf().

#define DEBUG_TESTING   0x00400000
 

23 One-shot debugging flag

Definition at line 136 of file raytrace.h.

#define DEBUG_ADVANCE   0x00800000
 

24 Cell-to-cell space partitioning

Definition at line 137 of file raytrace.h.

#define DEBUG_MATH   0x01000000
 

25 nmg math routines

Definition at line 138 of file raytrace.h.

Referenced by bn_distsq_pt3_lseg3(), and nmg_loop_is_ccw().

#define DEBUG_EBM   0x02000000
 

26 Extruded bit-map solids

Definition at line 141 of file raytrace.h.

Referenced by rt_ebm_dda(), and rt_seg_planeclip().

#define DEBUG_HF   0x04000000
 

27 Height Field solids

Definition at line 142 of file raytrace.h.

Referenced by rt_hf_to_dsp(), and rt_retrieve_binunif().

#define DEBUG_PLOTSOLIDS   0x40000000
 

31 plot all solids

Definition at line 145 of file raytrace.h.

#define DEBUG_PLOTBOX   0x80000000
 

32 Plot(3) bounding boxes and cuts

Definition at line 146 of file raytrace.h.

#define DEBUG_FORMAT   "\020\040PLOTBOX\\037PLOTSOLIDS\\033HF\032EBM\031MATH\030ADVANCE\\027TESTING\026TREEWALK\025CUTDETAIL\024PARALLEL\023FDIFF\022MEM_FULL\\021MEM\020BOXING\017CUTTING\016PARTITION\015ROOTS\014VOL\\013ANIM_FULL\012ANIM\011SPLINE\010ARB8\7REGIONS\6SOLIDS\5DB\\4INSTANCE\3SHOOT\2ALLHITS\1ALLRAYS"
 

Format string for bu_printb()

Definition at line 149 of file raytrace.h.

#define INFINITY   (1.0e40)
 

It is necessary to have a representation of 1.0/0.0, or "infinity" that fits within the dynamic range of the machine being used. This constant places an upper bound on the size object which can be represented in the model.

Definition at line 171 of file raytrace.h.

Referenced by dgo_autoview(), dgo_get_autoview_cmd(), dsp_in_rpp(), fill_out_bsp(), inverse_dir(), nmg_break_eu_on_v(), nmg_class_ray_vs_shell(), nmg_find_e_nearest_pt2(), nmg_loop_g(), rt_arb_shot(), rt_arb_vshot(), rt_arbn_shot(), rt_ars_prep(), rt_boolweave(), rt_bound_tree(), rt_cell_n_on_ray(), rt_ck_overlap(), rt_ck_vlist(), rt_ct_assess(), rt_cut_it(), rt_DB_rpp(), rt_ebm_dda(), rt_fdiff(), rt_gettree_leaf(), rt_gettrees_muves(), rt_hf_shot(), rt_hlf_norm(), rt_hlf_prep(), rt_hlf_shot(), rt_hlf_uv(), rt_hlf_vshot(), rt_in_rpp(), rt_metaball_get_bounding_sphere(), rt_nmg_shot(), rt_nurb_c_bound(), rt_nurb_c_check(), rt_nurb_crv_flat(), rt_nurb_pbound(), rt_nurb_s_bound(), rt_nurb_s_check(), rt_nurb_s_flat(), rt_nurb_shot(), rt_plot_all_bboxes(), rt_plot_all_solids(), rt_prep_parallel(), rt_return_nurb_hit(), rt_seg_planeclip(), rt_shootray(), rt_shootray_bundle(), rt_smooth_bot(), rt_vol_shot(), shoot_and_plot(), vo_sca(), and vo_zoom().

#define RT_BADNUM  )     (!((n) >= -INFINITY && (n) <= INFINITY))
 

Definition at line 174 of file raytrace.h.

#define RT_BADVEC  )     (RT_BADNUM((v)[X]) || RT_BADNUM((v)[Y]) || RT_BADNUM((v)[Z]))
 

Definition at line 175 of file raytrace.h.

Referenced by rt_cell_n_on_ray(), rt_shootray(), and rt_shootray_bundle().

#define RT_LEN_TOL   (1.0e-8)
 

Definition at line 204 of file raytrace.h.

Referenced by rt_ehy_export(), rt_ehy_export5(), rt_ehy_plot(), rt_ehy_prep(), rt_ehy_tess(), rt_epa_export(), rt_epa_export5(), rt_epa_plot(), rt_epa_prep(), rt_epa_tess(), rt_eto_export(), rt_eto_export5(), rt_rec_prep(), rt_rhc_export(), rt_rhc_export5(), rt_rhc_plot(), rt_rhc_prep(), rt_rhc_tess(), rt_rpc_export(), rt_rpc_export5(), rt_rpc_plot(), rt_rpc_prep(), rt_rpc_tess(), and rt_tgc_prep().

#define RT_DOT_TOL   (0.001)
 

Definition at line 205 of file raytrace.h.

Referenced by rt_cline_shot(), rt_ehy_export(), rt_ehy_export5(), rt_ehy_plot(), rt_ehy_prep(), rt_ehy_tess(), rt_epa_export(), rt_epa_export5(), rt_epa_plot(), rt_epa_prep(), rt_epa_tess(), rt_rec_prep(), rt_rhc_export(), rt_rhc_export5(), rt_rhc_plot(), rt_rhc_prep(), rt_rhc_tess(), rt_rpc_export(), rt_rpc_export5(), rt_rpc_plot(), rt_rpc_prep(), rt_rpc_tess(), and rt_tgc_prep().

#define RT_PCOEF_TOL   (1.0e-10)
 

Definition at line 206 of file raytrace.h.

Referenced by rt_ehy_shot(), rt_epa_shot(), rt_rhc_shot(), rt_rpc_shot(), rt_tgc_shot(), and rt_tgc_vshot().

#define RT_TESS_TOL_MAGIC   0xb9090dab
 

Definition at line 221 of file raytrace.h.

Referenced by bu_identify_magic(), dgo_E_cmd(), wdb_dbopen(), and wdb_init_obj().

#define RT_CK_TESS_TOL _p   )     BU_CKMAG(_p, RT_TESS_TOL_MAGIC, "rt_tess_tol")
 

Definition at line 222 of file raytrace.h.

Referenced by nmg_booltree_leaf_tess(), nmg_booltree_leaf_tnurb(), rt_pipe_tess(), rt_rhc_tess(), rt_rpc_tess(), rt_submodel_wireframe_leaf(), rt_vol_tess(), and tesselate_pipe_bend().

#define idb_type   idb_minor_type
 

Definition at line 238 of file raytrace.h.

Referenced by rt_db_lookup_internal().

#define RT_DB_INTERNAL_MAGIC   0x0dbbd867
 

Definition at line 239 of file raytrace.h.

Referenced by bu_identify_magic(), and rt_ars_prep().

#define RT_INIT_DB_INTERNAL _p   ) 
 

Value:

{(_p)->idb_magic = RT_DB_INTERNAL_MAGIC; \
        (_p)->idb_type = -1; (_p)->idb_ptr = GENPTR_NULL;\
        (_p)->idb_avs.magic = -1;}

Definition at line 240 of file raytrace.h.

Referenced by add_solid(), db_recurse(), nmg_stash_model_to_file(), rt_bot_xform(), rt_db_free_internal(), rt_db_get_internal(), rt_db_get_internal5(), rt_extrude_ifree(), rt_extrude_xform(), rt_generic_xform(), rt_mk_binunif(), rt_retrieve_binunif(), wdb_bot_decimate_cmd(), wdb_combadd(), wdb_export(), wdb_facetize_cmd(), wdb_make_bb_cmd(), wdb_nmg_simplify_cmd(), wdb_put_cmd(), and wdb_shells_cmd().

#define RT_CK_DB_INTERNAL _p   )     BU_CKMAG(_p, RT_DB_INTERNAL_MAGIC, "rt_db_internal")
 

Definition at line 243 of file raytrace.h.

Referenced by db_flags_internal(), db_gettree_leaf(), main(), nmg_booltree_leaf_tess(), nmg_booltree_leaf_tnurb(), rt_arb_export(), rt_arb_export5(), rt_arb_ifree(), rt_arb_import(), rt_arb_import5(), rt_arb_plot(), rt_arb_std_type(), rt_arb_tess(), rt_arb_tnurb(), rt_arb_uv(), rt_arbn_export(), rt_arbn_export5(), rt_arbn_ifree(), rt_arbn_import(), rt_arbn_import5(), rt_arbn_plot(), rt_arbn_prep(), rt_arbn_tcladjust(), rt_arbn_tess(), rt_ars_export(), rt_ars_export5(), rt_ars_ifree(), rt_ars_import(), rt_ars_import5(), rt_ars_plot(), rt_ars_tcladjust(), rt_ars_tess(), rt_bin_import5(), rt_binunif_export5(), rt_binunif_ifree(), rt_binunif_import5(), rt_binunif_tcladjust(), rt_bot_export(), rt_bot_export5(), rt_bot_ifree(), rt_bot_import(), rt_bot_import5(), rt_bot_plot(), rt_bot_plot_poly(), rt_bot_prep(), rt_bot_tcladjust(), rt_bot_tess(), rt_bot_xform(), rt_cline_export(), rt_cline_export5(), rt_cline_ifree(), rt_cline_import(), rt_cline_import5(), rt_cline_plot(), rt_cline_prep(), rt_cline_tcladjust(), rt_cline_tess(), rt_comb_describe(), rt_comb_export4(), rt_comb_export5(), rt_comb_ifree(), rt_comb_import5(), rt_comb_tcladjust(), rt_comb_tclget(), rt_db_cvt_to_external5(), rt_db_external5_to_internal5(), rt_db_free_internal(), rt_db_get_internal(), rt_db_put_internal(), rt_db_put_internal5(), rt_dsp_export(), rt_dsp_export5(), rt_dsp_ifree(), rt_dsp_import(), rt_dsp_import5(), rt_dsp_norm(), rt_dsp_plot(), rt_dsp_prep(), rt_dsp_shot(), rt_dsp_tcladjust(), rt_dsp_tclget(), rt_dsp_tess(), rt_ebm_export(), rt_ebm_export5(), rt_ebm_ifree(), rt_ebm_import(), rt_ebm_import5(), rt_ebm_plot(), rt_ebm_tcladjust(), rt_ebm_tess(), rt_ehy_export(), rt_ehy_export5(), rt_ehy_ifree(), rt_ehy_import(), rt_ehy_import5(), rt_ehy_plot(), rt_ehy_prep(), rt_ehy_tess(), rt_ell_export(), rt_ell_export5(), rt_ell_ifree(), rt_ell_import(), rt_ell_import5(), rt_ell_plot(), rt_ell_tess(), rt_ell_tnurb(), rt_epa_export(), rt_epa_export5(), rt_epa_ifree(), rt_epa_import(), rt_epa_import5(), rt_epa_plot(), rt_epa_prep(), rt_epa_tess(), rt_eto_export(), rt_eto_export5(), rt_eto_ifree(), rt_eto_import(), rt_eto_import5(), rt_eto_plot(), rt_eto_tess(), rt_extrude_export(), rt_extrude_export5(), rt_extrude_ifree(), rt_extrude_import(), rt_extrude_import5(), rt_extrude_plot(), rt_extrude_tcladjust(), rt_extrude_tess(), rt_extrude_xform(), rt_fwrite_internal(), rt_generic_xform(), rt_gettree_leaf(), rt_grp_export(), rt_grp_export5(), rt_grp_ifree(), rt_grp_import(), rt_grp_import5(), rt_grp_plot(), rt_grp_tess(), rt_hf_export(), rt_hf_ifree(), rt_hf_import(), rt_hf_plot(), rt_hf_prep(), rt_hf_tess(), rt_hf_to_dsp(), rt_hlf_export(), rt_hlf_export5(), rt_hlf_ifree(), rt_hlf_import(), rt_hlf_import5(), rt_hlf_plot(), rt_hlf_tess(), rt_hlf_xform(), rt_matrix_transform(), rt_metaball_describe(), rt_metaball_export5(), rt_metaball_ifree(), rt_metaball_import5(), rt_metaball_plot(), rt_nmg_export(), rt_nmg_export5(), rt_nmg_export_internal(), rt_nmg_ifree(), rt_nmg_plot(), rt_nmg_prep(), rt_nmg_tcladjust(), rt_nmg_tess(), rt_nurb_export(), rt_nurb_export5(), rt_nurb_ifree(), rt_nurb_import(), rt_nurb_import5(), rt_nurb_plot(), rt_nurb_tcladjust(), rt_parsetab_tcladjust(), rt_parsetab_tclget(), rt_part_export(), rt_part_export5(), rt_part_ifree(), rt_part_import(), rt_part_import5(), rt_part_plot(), rt_part_prep(), rt_part_tess(), rt_pg_export(), rt_pg_ifree(), rt_pg_import(), rt_pg_plot(), rt_pg_plot_poly(), rt_pg_tess(), rt_pg_to_bot(), rt_pipe_describe(), rt_pipe_export(), rt_pipe_export5(), rt_pipe_ifree(), rt_pipe_import(), rt_pipe_import5(), rt_pipe_plot(), rt_pipe_prep(), rt_pipe_tcladjust(), rt_pipe_tess(), rt_rhc_export(), rt_rhc_export5(), rt_rhc_ifree(), rt_rhc_import(), rt_rhc_import5(), rt_rhc_plot(), rt_rhc_prep(), rt_rhc_tess(), rt_rpc_export(), rt_rpc_export5(), rt_rpc_ifree(), rt_rpc_import(), rt_rpc_import5(), rt_rpc_plot(), rt_rpc_prep(), rt_rpc_tess(), rt_sketch_export(), rt_sketch_export5(), rt_sketch_ifree(), rt_sketch_import(), rt_sketch_import5(), rt_sketch_plot(), rt_sketch_tcladjust(), rt_submodel_export(), rt_submodel_export5(), rt_submodel_ifree(), rt_submodel_import(), rt_submodel_import5(), rt_submodel_plot(), rt_submodel_prep(), rt_submodel_tess(), rt_submodel_wireframe_leaf(), rt_superell_export(), rt_superell_export5(), rt_superell_ifree(), rt_superell_import(), rt_superell_import5(), rt_superell_plot(), rt_tgc_export(), rt_tgc_export5(), rt_tgc_ifree(), rt_tgc_import(), rt_tgc_import5(), rt_tgc_plot(), rt_tgc_tess(), rt_tgc_tnurb(), rt_tor_export(), rt_tor_export5(), rt_tor_ifree(), rt_tor_import(), rt_tor_import5(), rt_tor_plot(), rt_tor_tess(), rt_vlist_solid(), rt_vol_export(), rt_vol_export5(), rt_vol_ifree(), rt_vol_import(), rt_vol_import5(), rt_vol_plot(), rt_vol_tess(), rt_xxx_export(), rt_xxx_export5(), rt_xxx_ifree(), rt_xxx_import(), rt_xxx_import5(), rt_xxx_plot(), rt_xxx_prep(), rt_xxx_tess(), wdb_adjust_cmd(), wdb_binary_cmd(), wdb_ocenter_cmd(), wdb_orotate_cmd(), wdb_oscale_cmd(), wdb_otranslate_cmd(), wdb_push_cmd(), and wdb_put_internal().

#define DB_FULL_PATH_POP _pp   )     {(_pp)->fp_len--;}
 

Definition at line 256 of file raytrace.h.

Referenced by db_recurse_subtree().

#define DB_FULL_PATH_CUR_DIR _pp   )     ((_pp)->fp_names[(_pp)->fp_len-1])
 

Definition at line 257 of file raytrace.h.

Referenced by db_add_anim(), db_follow_path(), db_recurse(), nmg_booltree_leaf_tess(), nmg_booltree_leaf_tnurb(), rt_gettree_leaf(), rt_submodel_wireframe_leaf(), and rt_tcl_import_from_path().

#define DB_FULL_PATH_GET _pp,
_i   )     ((_pp)->fp_names[(_i)])
 

Definition at line 258 of file raytrace.h.

Referenced by dgo_illum_cmd().

#define DB_FULL_PATH_MAGIC   0x64626670
 

Definition at line 259 of file raytrace.h.

Referenced by bu_identify_magic(), db_argv_to_path(), db_full_path_init(), db_string_to_path(), and rt_tcl_pr_hit().

#define RT_CK_FULL_PATH _p   )     BU_CKMAG(_p, DB_FULL_PATH_MAGIC, "db_full_path")
 

Definition at line 260 of file raytrace.h.

Referenced by db_add_node_to_full_path(), db_append_full_path(), db_apply_state_from_memb(), db_apply_state_from_one_member(), db_dup_full_path(), db_dup_path_tail(), db_extend_full_path(), db_follow_path(), db_free_full_path(), db_full_path_appendresult(), db_full_path_search(), db_full_path_subset(), db_gettree_leaf(), db_gettree_region_end(), db_identical_full_paths(), db_new_combined_tree_state(), db_path_to_mat(), db_path_to_string(), db_path_to_vls(), db_recurse(), nmg_booltree_leaf_tess(), nmg_booltree_leaf_tnurb(), rt_free_soltab(), rt_gettree_leaf(), and rt_gettree_region_end().

#define RAY_NULL   ((struct xray *)0)
 

Definition at line 276 of file raytrace.h.

#define RT_RAY_MAGIC   0x78726179
 

"xray"

Definition at line 277 of file raytrace.h.

Referenced by bu_identify_magic(), rt_cell_n_on_ray(), rt_raybundle_maker(), rt_shootray(), and rt_shootray_bundle().

#define RT_CK_RAY _p   )     BU_CKMAG(_p,RT_RAY_MAGIC,"struct xray");
 

Definition at line 278 of file raytrace.h.

Referenced by rt_boolweave(), rt_cell_n_on_ray(), rt_hlf_norm(), rt_shootray(), and rt_shootray_bundle().

#define HIT_NULL   ((struct hit *)0)
 

Definition at line 302 of file raytrace.h.

Referenced by rt_boolweave().

#define RT_HIT_MAGIC   0x20686974
 

" hit"

Definition at line 303 of file raytrace.h.

Referenced by bend_pipe_shot(), bu_identify_magic(), linear_pipe_shot(), pipe_end_shot(), pipe_start_shot(), rt_ars_shot(), rt_ehy_shot(), rt_epa_shot(), rt_part_shot(), rt_pg_shot(), rt_rec_shot(), rt_rhc_shot(), and rt_rpc_shot().

#define RT_CK_HIT _p   )     BU_CKMAG(_p,RT_HIT_MAGIC,"struct hit")
 

Definition at line 304 of file raytrace.h.

Referenced by rt_boolweave(), rt_pr_hit(), rt_pr_hit_vls(), rt_pr_hitarray_vls(), rt_submodel_norm(), and rt_submodel_uv().

#define RT_HIT_NORM _hitp,
_stp,
_unused   ) 
 

Value:

{ \
        RT_CK_HIT(_hitp); \
        RT_CK_SOLTAB(_stp); \
        (_stp)->st_meth->ft_norm(_hitp, _stp, (_hitp)->hit_rayp); }
Old macro: Only the hit_dist field of pt_inhit and pt_outhit are valid when a_hit() is called; to compute both hit_point and hit_normal, use RT_HIT_NORM() macro; to compute just hit_point, use VJOIN1( hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir );

Definition at line 313 of file raytrace.h.

Referenced by rt_ars_shot().

#define RT_HIT_NORMAL _normal,
_hitp,
_stp,
_unused,
_flipflag   ) 
 

Value:

{ \
        RT_CK_HIT(_hitp); \
        RT_CK_SOLTAB(_stp); \
        RT_CK_FUNCTAB((_stp)->st_meth); \
        (_stp)->st_meth->ft_norm(_hitp, _stp, (_hitp)->hit_rayp); \
        if( _flipflag )  { \
                VREVERSE( _normal, (_hitp)->hit_normal ); \
        } else { \
                VMOVE( _normal, (_hitp)->hit_normal ); \
        } \
 }
New macro: Compute normal into (_hitp)->hit_normal, but leave it un-flipped, as one hit may be shared between multiple partitions with different flip status. (Example: box.r = box.s - sph.s; sph.r = sph.s) Return the post-boolean normal into caller-provided _normal vector.

Definition at line 325 of file raytrace.h.

Referenced by rt_tcl_pr_hit().

#define CURVE_NULL   ((struct curvature *)0)
 

Definition at line 358 of file raytrace.h.

#define RT_CURVATURE _curvp,
_hitp,
_flipflag,
_stp   ) 
 

Value:

{ \
        RT_CK_HIT(_hitp); \
        RT_CK_SOLTAB(_stp); \
        RT_CK_FUNCTAB((_stp)->st_meth); \
        (_stp)->st_meth->ft_curve( _curvp, _hitp, _stp ); \
        if( _flipflag )  { \
                (_curvp)->crv_c1 = - (_curvp)->crv_c1; \
                (_curvp)->crv_c2 = - (_curvp)->crv_c2; \
        } \
 }
Use this macro after having computed the normal, to compute the curvature at a hit point.

In Release 4.4 and earlier, this was called RT_CURVE(). When the extra argument was added the name was changed.

Definition at line 367 of file raytrace.h.

Referenced by rt_tcl_pr_hit().

#define RT_HIT_UVCOORD ap,
_stp,
_hitp,
uvp   ) 
 

Value:

{ \
        RT_CK_HIT(_hitp); \
        RT_CK_SOLTAB(_stp); \
        RT_CK_FUNCTAB((_stp)->st_meth); \
        (_stp)->st_meth->ft_uv( ap, _stp, _hitp, uvp ); }

Definition at line 392 of file raytrace.h.

Referenced by rt_submodel_a_hit().

#define RT_SEG_NULL   ((struct seg *)0)
 

Definition at line 418 of file raytrace.h.

Referenced by rt_boolweave().

#define RT_SEG_MAGIC   0x98bcdef1
 

Definition at line 419 of file raytrace.h.

Referenced by bu_identify_magic(), rt_get_seg(), and shoot_and_plot().

#define RT_CHECK_SEG _p   )     BU_CKMAG(_p, RT_SEG_MAGIC, "struct seg")
 

Definition at line 421 of file raytrace.h.

Referenced by rt_boolweave().

#define RT_CK_SEG _p   )     BU_CKMAG(_p, RT_SEG_MAGIC, "struct seg")
 

Definition at line 422 of file raytrace.h.

Referenced by rt_clean_resource(), rt_fastgen_vol_vol_overlap(), rt_get_region_seglist_for_partition(), rt_pr_pt_vls(), rt_pr_seg(), rt_pr_seg_vls(), rt_submodel_a_hit(), and rt_tcl_pr_hit().

#define RT_GET_SEG p,
res   ) 
 

Value:

{ \
        while( !BU_LIST_WHILE((p),seg,&((res)->re_seg)) || !(p) ) \
                rt_get_seg(res); \
        BU_LIST_DEQUEUE( &((p)->l) ); \
        (p)->l.forw = (p)->l.back = BU_LIST_NULL; \
        (p)->seg_in.hit_magic = (p)->seg_out.hit_magic = RT_HIT_MAGIC; \
        res->re_segget++; }

Definition at line 424 of file raytrace.h.

Referenced by do_intersect(), do_subtract(), do_union(), eval_op(), promote_ints(), rt_arb_shot(), rt_arbn_shot(), rt_cline_shot(), rt_ebm_dda(), rt_ell_shot(), rt_epa_shot(), rt_metaball_shot(), rt_nurb_shot(), rt_part_shot(), rt_pipe_shot(), rt_rec_shot(), rt_rhc_shot(), rt_rpc_shot(), rt_sph_shot(), rt_submodel_a_hit(), rt_vol_shot(), and shoot_and_plot().

#define RT_FREE_SEG p,
res   ) 
 

Value:

{ \
        RT_CHECK_SEG(p); \
        BU_LIST_INSERT( &((res)->re_seg), &((p)->l) ); \
        res->re_segfree++; }

Definition at line 432 of file raytrace.h.

Referenced by classify_seg(), eliminate_overlaps(), eval_op(), promote_ints(), rt_seg_planeclip(), and shoot_and_plot().

#define RT_FREE_SEG_LIST _segheadp,
_res   ) 
 

Value:

{ \
        register struct seg *_a; \
        while( BU_LIST_WHILE( _a, seg, &((_segheadp)->l) ) )  { \
                BU_LIST_DEQUEUE( &(_a->l) ); \
                RT_FREE_SEG( _a, _res ); \
        } }
This could be BU_LIST_INSERT_LIST( &((_res)->re_seg), &((_segheadp)->l) ) except for security of checking & counting each element this way.

Definition at line 441 of file raytrace.h.

#define st_name   st_dp->d_namep
 

Definition at line 498 of file raytrace.h.

#define RT_SOLTAB_NULL   ((struct soltab *)0)
 

Definition at line 499 of file raytrace.h.

Referenced by db_free_tree(), rt_find_identical_solid(), and rt_find_solid().

#define SOLTAB_NULL   RT_SOLTAB_NULL
 

backwards compat

Definition at line 500 of file raytrace.h.

Referenced by rt_prep_parallel(), rt_shootray(), and rt_tree_kill_dead_solid_refs().

#define RT_SOLTAB_MAGIC   0x92bfcde0
 

l.magic

Definition at line 501 of file raytrace.h.

Referenced by add_solid(), bu_identify_magic(), rt_find_identical_solid(), and wdb_get_obj_bounds2().

#define RT_SOLTAB2_MAGIC   0x92bfcde2
 

l2.magic

Definition at line 502 of file raytrace.h.

Referenced by add_solid(), rt_find_identical_solid(), and wdb_get_obj_bounds2().

#define RT_CHECK_SOLTAB _p   )     BU_CKMAG( _p, RT_SOLTAB_MAGIC, "struct soltab")
 

Definition at line 504 of file raytrace.h.

Referenced by rt_ck_overlap(), rt_clean(), and rt_cut_one_axis().

#define RT_CK_SOLTAB _p   )     BU_CKMAG( _p, RT_SOLTAB_MAGIC, "struct soltab")
 

Definition at line 505 of file raytrace.h.

Referenced by db_ck_tree(), db_free_tree(), dsp_pos(), rt_bot_piece_shot(), rt_bound_tree(), rt_ck(), rt_ct_populate_box(), rt_cut_extend(), rt_find_identical_solid(), rt_free_soltab(), rt_gettrees_muves(), rt_hlf_norm(), rt_plot_solid(), rt_pr_pt_vls(), rt_pr_tree_str(), rt_res_pieces_init(), rt_shootray(), rt_solid_bitfinder(), rt_submodel_a_hit(), rt_submodel_shot(), rt_tcl_pr_hit(), and rt_tree_kill_dead_solid_refs().

#define ID_NULL   0
 

Unused.

Definition at line 510 of file raytrace.h.

Referenced by IDEF(), rt_db_lookup_internal(), rt_ebm_ifree(), rt_ebm_import(), rt_ebm_import5(), rt_hf_import(), rt_submodel_import(), and rt_submodel_import5().

#define ID_TOR   1
 

Toroid.

Definition at line 511 of file raytrace.h.

Referenced by IDEF(), rt_tor_export(), rt_tor_export5(), rt_tor_import(), and rt_tor_import5().

#define ID_TGC   2
 

Generalized Truncated General Cone.

Definition at line 512 of file raytrace.h.

Referenced by IDEF(), rt_tgc_export(), rt_tgc_export5(), rt_tgc_import(), rt_tgc_import5(), and wdb_nmg_simplify_cmd().

#define ID_ELL   3
 

Ellipsoid.

Definition at line 513 of file raytrace.h.

Referenced by IDEF(), rt_ell_export(), rt_ell_export5(), rt_ell_import(), and rt_ell_import5().

#define ID_ARB8   4
 

Generalized ARB. V + 7 vectors.

Definition at line 514 of file raytrace.h.

Referenced by IDEF(), rt_arb_export(), rt_arb_export5(), rt_arb_import(), rt_arb_import5(), rt_arb_std_type(), wdb_make_bb_cmd(), and wdb_nmg_simplify_cmd().

#define ID_ARS   5
 

ARS.

Definition at line 515 of file raytrace.h.

Referenced by rt_ars_export(), rt_ars_export5(), rt_ars_import(), rt_ars_import5(), and rt_id_solid().

#define ID_HALF   6
 

Half-space.

Definition at line 516 of file raytrace.h.

Referenced by add_solid(), fix_halfs(), IDEF(), rt_hlf_export(), rt_hlf_export5(), rt_hlf_import(), and rt_hlf_import5().

#define ID_REC   7
 

Right Elliptical Cylinder [TGC special].

Definition at line 517 of file raytrace.h.

Referenced by rt_rec_prep(), rt_tgc_export(), and rt_tgc_export5().

#define ID_POLY   8
 

Polygonal facted object.

Definition at line 518 of file raytrace.h.

Referenced by rt_id_solid(), rt_pg_export(), rt_pg_import(), rt_pg_to_bot(), and wdb_nmg_simplify_cmd().

#define ID_BSPLINE   9
 

B-spline object.

Definition at line 519 of file raytrace.h.

Referenced by rt_id_solid(), rt_nurb_export(), rt_nurb_export5(), rt_nurb_import(), and rt_nurb_import5().

#define ID_SPH   10
 

Sphere.

Definition at line 520 of file raytrace.h.

Referenced by rt_ell_export(), rt_ell_export5(), and rt_sph_prep().

#define ID_NMG   11
 

n-Manifold Geometry solid

Definition at line 521 of file raytrace.h.

Referenced by add_solid(), nmg_stash_model_to_file(), rt_id_solid(), rt_nmg_export(), rt_nmg_export5(), rt_nmg_export_internal(), rt_nmg_make(), wdb_facetize_cmd(), wdb_nmg_collapse_cmd(), wdb_nmg_simplify_cmd(), and wdb_shells_cmd().

#define ID_EBM   12
 

Extruded bitmap solid.

Definition at line 522 of file raytrace.h.

Referenced by rt_ebm_export(), rt_ebm_export5(), rt_ebm_import(), rt_ebm_import5(), rt_ebm_make(), and rt_id_solid().

#define ID_VOL   13
 

3-D Volume

Definition at line 523 of file raytrace.h.

Referenced by rt_id_solid(), rt_vol_export(), rt_vol_export5(), rt_vol_import(), and rt_vol_import5().

#define ID_ARBN   14
 

ARB with N faces.

Definition at line 524 of file raytrace.h.

Referenced by rt_arbn_export(), rt_arbn_export5(), rt_arbn_import(), rt_arbn_import5(), and rt_id_solid().

#define ID_PIPE   15
 

Pipe (wire) solid.

Definition at line 525 of file raytrace.h.

Referenced by rt_id_solid(), rt_pipe_export(), rt_pipe_export5(), rt_pipe_import(), and rt_pipe_import5().

#define ID_PARTICLE   16
 

Particle system solid.

Definition at line 526 of file raytrace.h.

Referenced by rt_id_solid(), rt_part_export(), rt_part_export5(), rt_part_import(), and rt_part_import5().

#define ID_RPC   17
 

Right Parabolic Cylinder.

Definition at line 527 of file raytrace.h.

Referenced by IDEF(), rt_rpc_export(), rt_rpc_export5(), rt_rpc_import(), rt_rpc_import5(), and rt_rpc_prep().

#define ID_RHC   18
 

Right Hyperbolic Cylinder.

Definition at line 528 of file raytrace.h.

Referenced by IDEF(), rt_rhc_export(), rt_rhc_export5(), rt_rhc_import(), rt_rhc_import5(), and rt_rhc_prep().

#define ID_EPA   19
 

Elliptical Paraboloid.

Definition at line 529 of file raytrace.h.

Referenced by IDEF(), rt_epa_export(), rt_epa_export5(), rt_epa_import(), rt_epa_import5(), and rt_epa_prep().

#define ID_EHY   20
 

Elliptical Hyperboloid.

Definition at line 530 of file raytrace.h.

Referenced by IDEF(), rt_ehy_export(), rt_ehy_export5(), rt_ehy_import(), rt_ehy_import5(), and rt_ehy_prep().

#define ID_ETO   21
 

Elliptical Torus.

Definition at line 531 of file raytrace.h.

Referenced by IDEF(), rt_eto_export(), rt_eto_export5(), rt_eto_import(), and rt_eto_import5().

#define ID_GRIP   22
 

Pseudo Solid Grip.

Definition at line 532 of file raytrace.h.

Referenced by IDEF(), rt_grp_export(), rt_grp_export5(), rt_grp_import(), and rt_grp_import5().

#define ID_JOINT   23
 

Pseudo Solid/Region Joint.

Definition at line 533 of file raytrace.h.

#define ID_HF   24
 

Height Field.

Definition at line 534 of file raytrace.h.

Referenced by rt_hf_export(), rt_hf_import(), and rt_id_solid().

#define ID_DSP   25
 

Displacement map.

Definition at line 535 of file raytrace.h.

Referenced by dsp_pos(), rt_dsp_export(), rt_dsp_export5(), rt_dsp_import(), rt_dsp_import5(), rt_dsp_make(), rt_hf_to_dsp(), and rt_id_solid().

#define ID_SKETCH   26
 

2D sketch

Definition at line 536 of file raytrace.h.

Referenced by rt_extrude_ifree(), rt_extrude_import(), rt_extrude_import5(), rt_id_solid(), rt_sketch_export(), rt_sketch_export5(), rt_sketch_import(), and rt_sketch_import5().

#define ID_EXTRUDE   27
 

Solid of extrusion.

Definition at line 537 of file raytrace.h.

Referenced by rt_extrude_export(), rt_extrude_export5(), rt_extrude_import(), rt_extrude_import5(), rt_extrude_xform(), and rt_id_solid().

#define ID_SUBMODEL   28
 

Instanced submodel.

Definition at line 538 of file raytrace.h.

Referenced by rt_id_solid(), rt_submodel_export(), rt_submodel_export5(), rt_submodel_import(), and rt_submodel_import5().

#define ID_CLINE   29
 

FASTGEN4 CLINE solid.

Definition at line 539 of file raytrace.h.

Referenced by rt_cline_export(), rt_cline_export5(), rt_cline_import(), rt_cline_import5(), and rt_id_solid().

#define ID_BOT   30
 

Bag o' triangles.

Definition at line 540 of file raytrace.h.

Referenced by add_solid(), rt_ars_prep(), rt_bot_export(), rt_bot_export5(), rt_bot_import(), rt_bot_import5(), rt_bot_xform(), rt_id_solid(), wdb_facetize_cmd(), and wdb_smooth_bot_cmd().

#define ID_MAX_SOLID   37
 

Maximum defined ID_xxx for solids.

Definition at line 545 of file raytrace.h.

Referenced by rt_id_solid(), rt_pr_soltab(), rt_prep_parallel(), rt_shootray(), and wdb_export().

#define ID_COMBINATION   31
 

Combination Record.

Definition at line 550 of file raytrace.h.

Referenced by add_solid(), db5_diradd(), db_diradd5(), db_flags_internal(), main(), rt_comb_export4(), rt_comb_export5(), rt_comb_import5(), rt_comb_make(), rt_db_get_internal(), wdb_combadd(), and wdb_export().

#define ID_BINEXPM   32
 

Experimental binary.

Definition at line 551 of file raytrace.h.

#define ID_BINUNIF   33
 

Uniform-array binary.

Definition at line 552 of file raytrace.h.

Referenced by rt_binunif_import5(), rt_binunif_make(), rt_db_external5_to_internal5(), rt_mk_binunif(), and rt_retrieve_binunif().

#define ID_BINMIME   34
 

MIME-typed binary.

Definition at line 553 of file raytrace.h.

#define ID_SUPERELL   35
 

Superquadratic ellipsoid.

Definition at line 556 of file raytrace.h.

Referenced by rt_superell_export(), rt_superell_export5(), rt_superell_import(), and rt_superell_import5().

#define ID_METABALL   36
 

Metaball.

Definition at line 557 of file raytrace.h.

Referenced by rt_metaball_export5(), and rt_metaball_import5().

#define ID_MAXIMUM   37
 

Maximum defined ID_xxx value.

Definition at line 559 of file raytrace.h.

#define REGION_NULL   ((struct region *)0)
 

Definition at line 601 of file raytrace.h.

Referenced by facetize_region_end(), rt_booleval(), rt_default_logoverlap(), rt_fastgen_plate_vol_overlap(), rt_fastgen_vol_vol_overlap(), rt_getregion(), rt_plot_solid(), rt_prep_parallel(), rt_region_color_map(), and rt_rpp_region().

#define RT_REGION_MAGIC   0xdffb8001
 

Definition at line 602 of file raytrace.h.

Referenced by bu_identify_magic(), and rt_gettree_region_end().

#define RT_CK_REGION _p   )     BU_CKMAG(_p,RT_REGION_MAGIC,"struct region")
 

Definition at line 603 of file raytrace.h.

Referenced by _rt_defoverlap(), rt_bool_partition_eligible(), rt_ck(), rt_clean(), rt_default_logoverlap(), rt_default_multioverlap(), rt_fastgen_plate_vol_overlap(), rt_fastgen_vol_vol_overlap(), rt_get_region_seglist_for_partition(), rt_gettrees_muves(), rt_load_attrs(), rt_pr_pt_vls(), rt_pr_region(), rt_rebuild_overlaps(), rt_solid_bitfinder(), rt_submodel_a_hit(), rt_tree_region_assign(), and rt_tree_test_ready().

#define PT_NULL   ((struct partition *)0)
 

Definition at line 631 of file raytrace.h.

Referenced by rt_boolweave(), and rt_partition_len().

#define PT_MAGIC   0x87687681
 

Definition at line 632 of file raytrace.h.

Referenced by bu_identify_magic().

#define PT_HD_MAGIC   0x87687680
 

Definition at line 633 of file raytrace.h.

Referenced by rt_fastgen_plate_vol_overlap(), rt_shootray(), and rt_shootray_bundle().

#define RT_CHECK_PT _p   )     RT_CK_PT(_p)
 

compat

Definition at line 635 of file raytrace.h.

Referenced by rt_pr_partitions(), rt_pr_pt(), and rt_pr_pt_vls().

#define RT_CK_PT _p   )     BU_CKMAG(_p,PT_MAGIC, "struct partition")
 

Definition at line 636 of file raytrace.h.

Referenced by _rt_defoverlap(), rt_bool_partition_eligible(), rt_booleval(), rt_clean_resource(), rt_default_logoverlap(), rt_fastgen_plate_vol_overlap(), rt_partition_len(), rt_silent_logoverlap(), rt_submodel_a_hit(), rt_tcl_a_hit(), and rt_tree_test_ready().

#define RT_CK_PARTITION _p   )     BU_CKMAG(_p,PT_MAGIC, "struct partition")
 

Definition at line 637 of file raytrace.h.

Referenced by rt_default_multioverlap(), rt_rebuild_overlaps(), and rt_tree_max_raynum().

#define RT_CK_PT_HD _p   )     BU_CKMAG(_p,PT_HD_MAGIC, "struct partition list head")
 

Definition at line 638 of file raytrace.h.

Referenced by rt_boolfinal(), rt_boolweave(), rt_default_multioverlap(), rt_rebuild_overlaps(), rt_submodel_a_hit(), rt_tcl_a_hit(), and rt_weave0seg().

#define RT_PT_MIDDLE_START   pt_inseg
 

1st elem to copy

Definition at line 641 of file raytrace.h.

#define RT_PT_MIDDLE_END   pt_seglist.l.magic
 

copy up to this elem (non-inclusive)

Definition at line 642 of file raytrace.h.

#define RT_PT_MIDDLE_LEN  )     (((char *)&(p)->RT_PT_MIDDLE_END) - ((char *)&(p)->RT_PT_MIDDLE_START))
 

Definition at line 643 of file raytrace.h.

#define RT_DUP_PT ip,
new,
old,
res   ) 
 

Value:

{ \
        GET_PT(ip,new,res); \
        memcpy((char *)(&(new)->RT_PT_MIDDLE_START), (char *)(&(old)->RT_PT_MIDDLE_START), RT_PT_MIDDLE_LEN(old) ); \
        (new)->pt_overlap_reg = NULL; \
        bu_ptbl_cat( &(new)->pt_seglist, &(old)->pt_seglist );  }

Definition at line 646 of file raytrace.h.

Referenced by rt_boolweave(), and rt_rebuild_overlaps().

#define GET_PT_INIT ip,
p,
res   ) 
 

Value:

{\
        GET_PT(ip,p,res); \
        memset( ((char *) &(p)->RT_PT_MIDDLE_START), 0, RT_PT_MIDDLE_LEN(p) ); }
Clear out the pointers, empty the hit list

Definition at line 653 of file raytrace.h.

Referenced by rt_boolweave(), and rt_weave0seg().

#define GET_PT ip,
p,
res   ) 
 

Value:

{ \
        if( BU_LIST_NON_EMPTY_P(p, partition, &res->re_parthead) )  { \
                BU_LIST_DEQUEUE((struct bu_list *)(p)); \
                bu_ptbl_reset( &(p)->pt_seglist ); \
        } else { \
                (p) = (struct partition *)bu_calloc(1, sizeof(struct partition), "struct partition"); \
                (p)->pt_magic = PT_MAGIC; \
                bu_ptbl_init( &(p)->pt_seglist, 42, "pt_seglist ptbl" ); \
                (res)->re_partlen++; \
        } \
        res->re_partget++; }

Definition at line 657 of file raytrace.h.

#define FREE_PT p,
res   ) 
 

Value:

{ \
        BU_LIST_APPEND( &(res->re_parthead), (struct bu_list *)(p) ); \
        if( (p)->pt_overlap_reg )  { \
                bu_free( (genptr_t)((p)->pt_overlap_reg), "pt_overlap_reg" );\
                (p)->pt_overlap_reg = NULL; \
        } \
        res->re_partfree++; }

Definition at line 669 of file raytrace.h.

Referenced by rt_fastgen_plate_vol_overlap(), and rt_rebuild_overlaps().

#define RT_FREE_PT_LIST _headp,
_res   ) 
 

Value:

{ \
                register struct partition *_pp, *_zap; \
                for( _pp = (_headp)->pt_forw; _pp != (_headp);  )  { \
                        _zap = _pp; \
                        _pp = _pp->pt_forw; \
                        BU_LIST_DEQUEUE( (struct bu_list *)(_zap) ); \
                        FREE_PT(_zap, _res); \
                } \
                (_headp)->pt_forw = (_headp)->pt_back = (_headp); \
        }

Definition at line 677 of file raytrace.h.

#define INSERT_PT _new,
_old   )     BU_LIST_INSERT((struct bu_list *)_old,(struct bu_list *)_new)
 

Insert "new" partition in front of "old" partition. Note order change

Definition at line 689 of file raytrace.h.

Referenced by rt_boolweave().

#define APPEND_PT _new,
_old   )     BU_LIST_APPEND((struct bu_list *)_old,(struct bu_list *)_new)
 

Append "new" partition after "old" partition. Note arg order change

Definition at line 692 of file raytrace.h.

Referenced by rt_boolweave(), and rt_weave0seg().

#define DEQUEUE_PT _cur   )     BU_LIST_DEQUEUE((struct bu_list *)_cur)
 

Dequeue "cur" partition from doubly-linked list

Definition at line 695 of file raytrace.h.

Referenced by rt_fastgen_plate_vol_overlap().

#define CUTTER_NULL   ((union cutter *)0)
 

Definition at line 746 of file raytrace.h.

Referenced by rt_advance_to_next_cell(), rt_cell_n_on_ray(), rt_ct_get(), rt_cut_clean(), rt_fr_cut(), rt_pr_cut(), rt_res_pieces_init(), rt_shootray(), rt_shootray_bundle(), and rt_tcl_cutter().

#define MAP_NULL   ((struct mem_map *) 0)
 

Definition at line 759 of file raytrace.h.

Referenced by db5_realloc(), rt_memalloc(), rt_memalloc_nosplit(), rt_memclose(), rt_memfree(), rt_memget(), rt_memget_nosplit(), and rt_mempurge().

#define RT_DBNHASH   1024
 

size of hash table

The directory is organized as forward linked lists hanging off of one of RT_DBNHASH headers in the db_i structure.

Definition at line 766 of file raytrace.h.

Referenced by db_ck_directory(), db_close(), db_dump(), db_free_anim(), db_get_directory_size(), db_is_directory_non_empty(), db_open(), db_open_inmem(), db_pr_dir(), db_regexp_match_all(), db_update_nref(), rt_clean(), rt_new_rti(), and wdb_tops_cmd().

#define RT_DBHASH sum   )     ((unsigned)(sum) & ((RT_DBNHASH)-1))
 

Definition at line 771 of file raytrace.h.

Referenced by db_dirhash().

#define DBI_NULL   ((struct db_i *)0)
 

Definition at line 808 of file raytrace.h.

Referenced by db_create(), db_open(), db_open_inmem(), dgo_invent_solid(), rt_dirbuild(), rt_submodel_plot(), rt_submodel_prep(), wdb_check_syntax(), wdb_concat_cmd(), wdb_dir_check(), wdb_dir_check5(), wdb_dup_cmd(), wdb_fopen_v(), wdb_prep_dbip(), and wdb_reopen_cmd().

#define DBI_MAGIC   0x57204381
 

Definition at line 809 of file raytrace.h.

Referenced by bu_identify_magic(), and db_open().

#define RT_CHECK_DBI _p   )     BU_CKMAG(_p,DBI_MAGIC,"struct db_i")
 

Definition at line 811 of file raytrace.h.

Referenced by db_apply_state_from_one_member(), db_follow_path(), db_functree_subtree(), db_path_to_mat(), db_recurse(), db_traverse_subtree(), db_walk_tree(), wdb_facetize_cmd(), and wdb_push_cmd().

#define RT_CHECK_DBI_TCL _interp,
_p   )     BU_CKMAG_TCL(_interp,_p,DBI_MAGIC,"struct db_i")
 

Definition at line 812 of file raytrace.h.

#define RT_CK_DBI _p   )     RT_CHECK_DBI(_p)
 

Definition at line 813 of file raytrace.h.

Referenced by db5_diradd(), db5_diradd_handler(), db5_export_color_table(), db5_get_attributes(), db5_put_color_table(), db5_realloc(), db5_replace_attributes(), db5_scan(), db5_update_attribute(), db5_update_attributes(), db5_update_ident(), db5_write_free(), db_alloc(), db_argv_to_path(), db_ck_directory(), db_clone_dbi(), db_close(), db_close_client(), db_conversions(), db_create_inmem(), db_delete(), db_delrec(), db_diradd(), db_diradd5(), db_dirbuild(), db_dirdelete(), db_dump(), db_dup_db_tree_state(), db_free_db_tree_state(), db_functree(), db_get(), db_get_directory_size(), db_get_external(), db_getmrec(), db_gettree_leaf(), db_gettree_region_end(), db_init_db_tree_state(), db_is_directory_non_empty(), db_lookup(), db_lookup_by_attr(), db_new_combined_tree_state(), db_open(), db_pr_dir(), db_preorder_traverse(), db_put(), db_put_external(), db_put_external5(), db_read(), db_rename(), db_scan(), db_string_to_path(), db_sync(), db_tree_funcleaf(), db_update_ident(), db_update_nref(), db_walk_subtree(), db_write(), db_zapper(), Do_copy_membs(), Do_ref_incr(), rt_ck(), rt_comb_import5(), rt_db_cvt_to_external5(), rt_db_external5_to_internal5(), rt_db_put_internal5(), rt_dirbuild(), rt_dsp_describe(), rt_generic_xform(), rt_gettree_leaf(), rt_gettree_region_end(), rt_gettrees_muves(), rt_load_attrs(), rt_matrix_transform(), rt_new_rti(), rt_submodel_import(), rt_submodel_import5(), rt_submodel_plot(), rt_submodel_wireframe_leaf(), rt_tcl_import_from_path(), wdb_dbopen(), wdb_dir_check(), wdb_dir_check5(), wdb_do_list(), wdb_hide_cmd(), wdb_title_cmd(), and wdb_unhide_cmd().

#define RT_CK_DBI_TCL _interp,
_p   )     RT_CHECK_DBI_TCL(_interp,_p)
 

Definition at line 814 of file raytrace.h.

Referenced by wdb_adjust_cmd(), wdb_dump_cmd(), wdb_rt_gettrees_cmd(), and wdb_tops_cmd().

#define DIR_NULL   ((struct directory *)0)
 

Definition at line 859 of file raytrace.h.

Referenced by build_etree(), db5_diradd(), db5_update_attribute(), db5_update_ident(), db_apply_state_from_memb(), db_argv_to_path(), db_ck_directory(), db_close(), db_count_refs(), db_diradd(), db_diradd5(), db_dirbuild(), db_dircheck(), db_dirdelete(), db_dump(), db_follow_path(), db_free_anim(), db_functree(), db_functree_subtree(), db_get_directory_size(), db_is_directory_non_empty(), db_lookup(), db_open(), db_open_inmem(), db_pr_dir(), db_preorder_traverse(), db_regexp_match_all(), db_rename(), db_string_to_path(), db_traverse_subtree(), db_update_nref(), dgo_build_dpp(), dgo_eraseobjall_callback(), dgo_eraseobjpath(), dgo_how_cmd(), dgo_invent_solid(), dgo_set_transparency_cmd(), Do_copy_membs(), Do_ref_incr(), rt_db_lookup_internal(), rt_extrude_import(), rt_extrude_import5(), rt_find_solid(), rt_free_soltab(), rt_retrieve_binunif(), rt_unprep(), wdb_adjust_cmd(), wdb_attr_cmd(), wdb_binary_cmd(), wdb_bot_decimate_cmd(), wdb_bot_face_sort_cmd(), wdb_cat_cmd(), wdb_check_syntax(), wdb_comb_cmd(), wdb_comb_std_cmd(), wdb_combadd(), wdb_copy_cmd(), wdb_copyeval_cmd(), wdb_dir_check(), wdb_dir_check5(), wdb_export_external(), wdb_facetize_cmd(), wdb_find_cmd(), wdb_get_objpath_mat(), wdb_group_cmd(), wdb_hide_cmd(), wdb_import(), wdb_instance_cmd(), wdb_keep_cmd(), wdb_kill_cmd(), wdb_killall_cmd(), wdb_killtree_cmd(), wdb_lt_cmd(), wdb_make_bb_cmd(), wdb_move_all_cmd(), wdb_move_cmd(), wdb_nmg_collapse_cmd(), wdb_nmg_simplify_cmd(), wdb_node_write(), wdb_orotate_cmd(), wdb_oscale_cmd(), wdb_pathsum_cmd(), wdb_put_cmd(), wdb_region_cmd(), wdb_remove_cmd(), wdb_rmap_cmd(), wdb_shells_cmd(), wdb_showmats_cmd(), wdb_smooth_bot_cmd(), wdb_tops_cmd(), wdb_tree_cmd(), wdb_unhide_cmd(), wdb_whatid_cmd(), and wdb_xpush_cmd().

#define RT_DIR_MAGIC   0x05551212
 

Directory assistance.

Definition at line 860 of file raytrace.h.

Referenced by bu_identify_magic(), db_get_directory(), and db_update_ident().

#define RT_CK_DIR _dp   )     BU_CKMAG(_dp, RT_DIR_MAGIC, "(librt)directory")
 

Definition at line 861 of file raytrace.h.

Referenced by db5_diradd(), db5_get_attributes(), db5_realloc(), db5_replace_attributes(), db5_update_attributes(), db5_write_free(), db_alloc(), db_ck_directory(), db_close(), db_delete(), db_delrec(), db_diradd(), db_diradd5(), db_dirdelete(), db_dump(), db_follow_path(), db_full_path_search(), db_get(), db_get_external(), db_getmrec(), db_inmem(), db_put(), db_put_external(), db_put_external5(), db_rename(), db_zapper(), dgo_zap_cmd(), nmg_booltree_leaf_tess(), nmg_booltree_leaf_tnurb(), rt_db_put_internal5(), rt_find_identical_solid(), rt_free_rti(), and rt_tcl_pr_hit().

#define d_addr   d_un.file_offset
 

Definition at line 863 of file raytrace.h.

Referenced by dgo_who_cmd().

#define RT_DIR_PHONY_ADDR   (-1L)
 

Special marker for d_addr field.

Definition at line 864 of file raytrace.h.

Referenced by db_recurse(), dgo_build_tops(), dgo_get_autoview_cmd(), dgo_invent_solid(), dgo_who_cmd(), dgo_zap_cmd(), wdb_kill_cmd(), and wdb_killtree_cmd().

#define DIR_SOLID   0x1
 

this name is a solid

Definition at line 867 of file raytrace.h.

Referenced by db5_diradd(), db_diradd5(), db_flags_internal(), db_flags_raw_internal(), db_pr_dir(), db_scan(), dgo_invent_solid(), wdb_facetize_cmd(), wdb_ls_cmd(), wdb_shells_cmd(), and wdb_xpush_cmd().

#define DIR_COMB   0x2
 

combination

Definition at line 868 of file raytrace.h.

Referenced by db5_diradd(), db_diradd5(), db_flags_internal(), db_flags_raw_internal(), db_follow_path(), db_functree(), db_pr_dir(), db_preorder_traverse(), db_recurse(), db_scan(), rt_db_get_internal(), rt_find_paths(), wdb_comb_std_cmd(), wdb_ls_cmd(), and wdb_showmats_cmd().

#define DIR_REGION   0x4
 

region

Definition at line 869 of file raytrace.h.

Referenced by db5_diradd(), db_diradd5(), db_flags_internal(), db_flags_raw_internal(), db_pr_dir(), db_scan(), rt_find_paths(), wdb_combadd(), wdb_ls_cmd(), wdb_rmap_cmd(), wdb_summary_cmd(), wdb_vls_col_pr4v(), wdb_vls_line_dpp(), wdb_vls_long_dpp(), and wdb_whatid_cmd().

#define DIR_HIDDEN   0x8
 

object name is hidden

Definition at line 870 of file raytrace.h.

Referenced by db5_diradd(), db_create_inmem(), db_diradd5(), wdb_find_cmd(), wdb_ls_cmd(), and wdb_rmap_cmd().

#define DIR_NON_GEOM   0x10
 

object is not geometry (e.g. binary object)

Definition at line 871 of file raytrace.h.

Referenced by db5_diradd(), db_create_inmem(), db_diradd5(), and db_flags_raw_internal().

#define DIR_USED   0x80
 

One bit, used similar to d_nref.

Definition at line 872 of file raytrace.h.

#define RT_DIR_INMEM   0x100
 

object is in memory (only) Args to db_lookup()

Definition at line 873 of file raytrace.h.

Referenced by db5_realloc(), db5_write_free(), db_alloc(), db_create_inmem(), db_delete(), db_diradd(), db_dirdelete(), db_get(), db_get_external(), db_getmrec(), db_inmem(), db_pr_dir(), db_put(), db_put_external(), db_put_external5(), db_zapper(), and rt_db_put_internal5().

#define LOOKUP_NOISY   1
 

Definition at line 876 of file raytrace.h.

Referenced by build_etree(), db5_update_attribute(), db_argv_to_path(), db_dirbuild(), db_functree(), db_functree_subtree(), db_parse_1anim(), db_path_to_mat(), db_preorder_traverse(), db_string_to_path(), db_traverse_subtree(), db_walk_tree(), dgo_erase_all_cmd(), dgo_erase_cmd(), rt_db_lookup_internal(), rt_extrude_import(), rt_extrude_import5(), rt_retrieve_binunif(), rt_tcl_import_from_path(), wdb_binary_cmd(), wdb_bot_face_sort_cmd(), wdb_cat_cmd(), wdb_comb_std_cmd(), wdb_copy_cmd(), wdb_copyeval_cmd(), wdb_get_objpath_mat(), wdb_group_cmd(), wdb_hide_cmd(), wdb_instance_cmd(), wdb_kill_cmd(), wdb_killtree_cmd(), wdb_lt_cmd(), wdb_move_all_cmd(), wdb_move_cmd(), wdb_nmg_collapse_cmd(), wdb_pathsum_cmd(), wdb_remove_cmd(), wdb_shells_cmd(), wdb_showmats_cmd(), wdb_tree_cmd(), wdb_unhide_cmd(), wdb_whatid_cmd(), and wdb_xpush_cmd().

#define LOOKUP_QUIET   0
 

Definition at line 877 of file raytrace.h.

Referenced by db5_update_ident(), db_apply_state_from_memb(), db_count_refs(), db_update_nref(), dgo_draw_cmd(), dgo_E_cmd(), dgo_invent_solid(), Do_copy_membs(), Do_ref_incr(), rt_find_solid(), rt_tcl_import_from_path(), wdb_adjust_cmd(), wdb_attr_cmd(), wdb_binary_cmd(), wdb_bot_decimate_cmd(), wdb_check_syntax(), wdb_comb_cmd(), wdb_comb_std_cmd(), wdb_combadd(), wdb_copy_cmd(), wdb_copyeval_cmd(), wdb_dir_check(), wdb_dir_check5(), wdb_export_external(), wdb_facetize_cmd(), wdb_import(), wdb_kill_cmd(), wdb_make_bb_cmd(), wdb_move_all_cmd(), wdb_move_cmd(), wdb_nmg_collapse_cmd(), wdb_nmg_simplify_cmd(), wdb_node_write(), wdb_orotate_cmd(), wdb_oscale_cmd(), wdb_put_cmd(), wdb_region_cmd(), and wdb_smooth_bot_cmd().

#define FOR_ALL_DIRECTORY_START _dp,
_dbip   ) 
 

Value:

{ int _i; \
        for( _i = RT_DBNHASH-1; _i >= 0; _i-- )  { \
                for( (_dp) = (_dbip)->dbi_Head[_i]; (_dp); (_dp) = (_dp)->d_forw )  {

Definition at line 879 of file raytrace.h.

Referenced by db_lookup_by_attr(), and wdb_concat_cmd().

#define FOR_ALL_DIRECTORY_END   }}}
 

Definition at line 883 of file raytrace.h.

Referenced by wdb_concat_cmd().

#define RT_DIR_SET_NAMEP _dp,
_name   ) 
 

Value:

{ \
        if( strlen(_name) < sizeof((_dp)->d_shortname) )  {\
                strncpy( (_dp)->d_shortname, (_name), sizeof((_dp)->d_shortname) ); \
                (_dp)->d_namep = (_dp)->d_shortname; \
        } else { \
                (_dp)->d_namep = bu_strdup(_name); /* Calls bu_malloc() */ \
        } }

Definition at line 885 of file raytrace.h.

Referenced by db5_diradd(), db_diradd(), db_diradd5(), and db_update_ident().

#define RT_DIR_FREE_NAMEP _dp   ) 
 

Value:

{ \
        if( (_dp)->d_namep != (_dp)->d_shortname )  \
                bu_free((_dp)->d_namep, "d_namep"); \
        (_dp)->d_namep = NULL; }
Use this macro to free the d_namep member, which is sometimes not dynamic.

Definition at line 894 of file raytrace.h.

Referenced by db_close(), and db_dirdelete().

#define RT_GET_DIRECTORY _p,
_res   ) 
 

Value:

{ \
        while( ((_p) = (_res)->re_directory_hd) == NULL ) \
                db_get_directory(_res); \
        (_res)->re_directory_hd = (_p)->d_forw; \
        (_p)->d_forw = NULL; }
The efficient way

Definition at line 901 of file raytrace.h.

Referenced by db5_diradd(), db_diradd(), and db_diradd5().

#define RT_COMB_MAGIC   0x436f6d49
 

"ComI"

Definition at line 940 of file raytrace.h.

Referenced by rt_comb_import5(), rt_comb_make(), and wdb_combadd().

#define RT_CHECK_COMB _p   )     BU_CKMAG( _p , RT_COMB_MAGIC , "rt_comb_internal" )
 

Definition at line 941 of file raytrace.h.

#define RT_CK_COMB _p   )     RT_CHECK_COMB(_p)
 

Definition at line 942 of file raytrace.h.

Referenced by add_solid(), db_apply_state_from_comb(), db_comb_describe(), db_flags_internal(), db_follow_path(), db_recurse(), main(), rt_comb_describe(), rt_comb_export4(), rt_comb_export5(), rt_comb_tcladjust(), wdb_comb_std_cmd(), wdb_combadd(), and wdb_remove_cmd().

#define RT_CHECK_COMB_TCL _interp,
_p   )     BU_CKMAG_TCL(interp,_p,RT_COMB_MAGIC, "rt_comb_internal" )
 

Definition at line 943 of file raytrace.h.

#define RT_CK_COMB_TCL _interp,
_p   )     RT_CHECK_COMB_TCL(_interp,_p)
 

Definition at line 944 of file raytrace.h.

Referenced by rt_comb_tclget().

#define RT_BINUNIF_INTERNAL_MAGIC   0x42696e55
 

Definition at line 969 of file raytrace.h.

Referenced by rt_binunif_import5(), rt_binunif_make(), and rt_mk_binunif().

#define RT_CHECK_BINUNIF _p   )     BU_CKMAG( _p , RT_BINUNIF_INTERNAL_MAGIC , "rt_binunif_internal" )
 

Definition at line 970 of file raytrace.h.

Referenced by rt_binunif_tcladjust(), and rt_binunif_tclget().

#define RT_CK_BINUNIF _p   )     RT_CHECK_BINUNIF(_p)
 

Definition at line 971 of file raytrace.h.

Referenced by rt_binunif_describe(), rt_binunif_dump(), rt_binunif_export5(), rt_binunif_free(), rt_binunif_ifree(), rt_dsp_import(), rt_dsp_norm(), rt_dsp_plot(), rt_dsp_prep(), rt_dsp_shot(), and rt_retrieve_binunif().

#define RT_CHECK_BINUNIF_TCL _interp,
_p   )     BU_CKMAG_TCL(interp,_p,RT_BINUNIF_MAGIC, "rt_binunif_internal" )
 

Definition at line 972 of file raytrace.h.

#define RT_CK_BINUNIF_TCL _interp,
_p   )     RT_CHECK_BINUNIF_TCL(_interp,_p)
 

Definition at line 973 of file raytrace.h.

#define TS_SOFAR_MINUS   1
 

Subtraction encountered above.

Definition at line 1022 of file raytrace.h.

Referenced by db_apply_state_from_comb(), db_apply_state_from_one_member(), and db_recurse_subtree().

#define TS_SOFAR_INTER   2
 

Intersection encountered above.

Definition at line 1023 of file raytrace.h.

Referenced by db_apply_state_from_comb(), db_apply_state_from_one_member(), and db_recurse_subtree().

#define TS_SOFAR_REGION   4
 

Region encountered above.

Definition at line 1024 of file raytrace.h.

Referenced by db_apply_state_from_comb(), db_apply_state_from_memb(), and db_walk_subtree().

#define RT_DBTS_MAGIC   0x64627473
 

"dbts"

Definition at line 1026 of file raytrace.h.

Referenced by db_init_db_tree_state().

#define RT_CK_DBTS _p   )     BU_CKMAG(_p, RT_DBTS_MAGIC, "db_tree_state")
 

Definition at line 1027 of file raytrace.h.

Referenced by db_apply_state_from_comb(), db_apply_state_from_memb(), db_apply_state_from_one_member(), db_dup_db_tree_state(), db_follow_path(), db_follow_path_for_state(), db_free_db_tree_state(), db_gettree_leaf(), db_gettree_region_end(), db_new_combined_tree_state(), db_pr_tree_state(), db_recurse(), db_recurse_subtree(), db_walk_tree(), and rt_gettree_leaf().

#define RT_DBTR_MAGIC   0x64627472
 

"dbtr"

Definition at line 1053 of file raytrace.h.

#define RT_INIT_DBTR _p   ) 
 

Value:

{(_p)->magic = RT_DBTR_MAGIC; \
        (_p)->dbip = GENPTR_NULL; (_p)->comb_enter_func = GENPTR_NULL; \
        (_p)->comb_exit_func = GENPTR_NULL; (_p)->leaf_func = GENPTR_NULL; \
        (_p)->resp = GENPTR_NULL; (_p)->client_data = GENPTR_NULL;}

Definition at line 1054 of file raytrace.h.

#define RT_CK_DBTR _p   )     BU_CKMAG(_p, RT_DBTR_MAGIC, "db_traverse")
 

Definition at line 1058 of file raytrace.h.

Referenced by db_preorder_traverse(), and db_traverse_subtree().

#define RT_CTS_MAGIC   0x98989123
 

Definition at line 1068 of file raytrace.h.

Referenced by bu_identify_magic(), db_dup_combined_tree_state(), and db_new_combined_tree_state().

#define RT_CK_CTS _p   )     BU_CKMAG(_p, RT_CTS_MAGIC, "combined_tree_state")
 

Definition at line 1069 of file raytrace.h.

Referenced by db_ck_tree(), db_dup_combined_tree_state(), db_free_combined_tree_state(), db_pr_combined_tree_state(), db_walk_dispatcher(), and db_walk_subtree().

#define MKOP x   )     (x)
 

Definition at line 1076 of file raytrace.h.

#define OP_SOLID   MKOP(1)
 

Leaf: tr_stp -> solid.

Definition at line 1078 of file raytrace.h.

Referenced by build_etree(), db_ck_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_free_tree(), db_is_tree_all_unions(), db_non_union_push(), db_tally_subtree_regions(), db_tree_del_lhs(), db_tree_del_rhs(), db_tree_nleaves(), Eplot(), eval_etree(), free_etree(), rt_booleval(), rt_bound_tree(), rt_optim_tree(), rt_pr_tree_str(), rt_pr_tree_val(), rt_pr_tree_vls(), rt_solid_bitfinder(), rt_tree_elim_nops(), rt_tree_kill_dead_solid_refs(), rt_tree_max_raynum(), rt_tree_region_assign(), and rt_tree_test_ready().

#define OP_UNION   MKOP(2)
 

Binary: L union R.

Definition at line 1079 of file raytrace.h.

Referenced by build_etree(), db_apply_state_from_one_member(), db_ck_left_heavy_tree(), db_ck_tree(), db_ck_v4gift_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_find_named_leaf(), db_find_named_leafs_parent(), db_flatten_tree(), db_free_tree(), db_functree_subtree(), db_is_tree_all_unions(), db_left_hvy_node(), db_mkgift_tree(), db_non_union_push(), db_recurse_subtree(), db_tally_subtree_regions(), db_tcl_tree_describe(), db_tcl_tree_parse(), db_traverse_subtree(), db_tree_counter(), db_tree_del_lhs(), db_tree_del_rhs(), db_tree_describe(), db_tree_flatten_describe(), db_tree_funcleaf(), db_tree_mul_dbleaf(), db_tree_nleaves(), db_walk_subtree(), db_walk_tree(), eval_etree(), eval_op(), facetize_region_end(), free_etree(), nmg_booltree_evaluate(), rt_booleval(), rt_bound_tree(), rt_comb_export4(), rt_comb_import5(), rt_comb_v5_serialize(), rt_optim_tree(), rt_pr_tree_str(), rt_pr_tree_val(), rt_pr_tree_vls(), rt_solid_bitfinder(), rt_tree_elim_nops(), rt_tree_kill_dead_solid_refs(), rt_tree_max_raynum(), rt_tree_region_assign(), rt_tree_test_ready(), wdb_combadd(), and wdb_do_union_subtr().

#define OP_INTERSECT   MKOP(3)
 

Binary: L intersect R.

Definition at line 1080 of file raytrace.h.

Referenced by build_etree(), db_apply_state_from_one_member(), db_ck_left_heavy_tree(), db_ck_tree(), db_ck_v4gift_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_find_named_leaf(), db_find_named_leafs_parent(), db_flatten_tree(), db_free_tree(), db_functree_subtree(), db_is_tree_all_unions(), db_non_union_push(), db_recurse_subtree(), db_tally_subtree_regions(), db_tcl_tree_describe(), db_tcl_tree_parse(), db_traverse_subtree(), db_tree_counter(), db_tree_del_lhs(), db_tree_del_rhs(), db_tree_describe(), db_tree_flatten_describe(), db_tree_funcleaf(), db_tree_mul_dbleaf(), db_tree_nleaves(), db_walk_subtree(), eval_etree(), eval_op(), free_etree(), nmg_booltree_evaluate(), rt_booleval(), rt_bound_tree(), rt_comb_export4(), rt_comb_v5_serialize(), rt_optim_tree(), rt_pr_tree_str(), rt_pr_tree_val(), rt_pr_tree_vls(), rt_solid_bitfinder(), rt_tree_elim_nops(), rt_tree_kill_dead_solid_refs(), rt_tree_max_raynum(), rt_tree_region_assign(), rt_tree_test_ready(), wdb_combadd(), and wdb_do_inter().

#define OP_SUBTRACT   MKOP(4)
 

Binary: L subtract R.

Definition at line 1081 of file raytrace.h.

Referenced by build_etree(), db_apply_state_from_one_member(), db_ck_left_heavy_tree(), db_ck_tree(), db_ck_v4gift_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_find_named_leaf(), db_find_named_leafs_parent(), db_flatten_tree(), db_free_tree(), db_functree_subtree(), db_is_tree_all_unions(), db_non_union_push(), db_recurse_subtree(), db_tally_subtree_regions(), db_tcl_tree_describe(), db_tcl_tree_parse(), db_traverse_subtree(), db_tree_counter(), db_tree_del_lhs(), db_tree_del_rhs(), db_tree_describe(), db_tree_flatten_describe(), db_tree_funcleaf(), db_tree_mul_dbleaf(), db_tree_nleaves(), db_walk_subtree(), eval_etree(), eval_op(), free_etree(), nmg_booltree_evaluate(), rt_booleval(), rt_bound_tree(), rt_comb_export4(), rt_comb_v5_serialize(), rt_optim_tree(), rt_pr_tree_str(), rt_pr_tree_val(), rt_pr_tree_vls(), rt_solid_bitfinder(), rt_tree_elim_nops(), rt_tree_kill_dead_solid_refs(), rt_tree_max_raynum(), rt_tree_region_assign(), rt_tree_test_ready(), wdb_combadd(), and wdb_do_union_subtr().

#define OP_XOR   MKOP(5)
 

Binary: L xor R, not both.

Definition at line 1082 of file raytrace.h.

Referenced by db_apply_state_from_one_member(), db_ck_left_heavy_tree(), db_ck_tree(), db_ck_v4gift_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_find_named_leaf(), db_find_named_leafs_parent(), db_free_tree(), db_functree_subtree(), db_is_tree_all_unions(), db_recurse_subtree(), db_tally_subtree_regions(), db_tcl_tree_describe(), db_tcl_tree_parse(), db_traverse_subtree(), db_tree_counter(), db_tree_del_lhs(), db_tree_del_rhs(), db_tree_describe(), db_tree_funcleaf(), db_tree_mul_dbleaf(), db_tree_nleaves(), db_walk_subtree(), rt_booleval(), rt_bound_tree(), rt_comb_v5_serialize(), rt_optim_tree(), rt_pr_tree_val(), rt_pr_tree_vls(), rt_tree_elim_nops(), rt_tree_kill_dead_solid_refs(), rt_tree_max_raynum(), rt_tree_region_assign(), and rt_tree_test_ready().

#define OP_REGION   MKOP(6)
 

Leaf: tr_stp -> combined_tree_state.

Definition at line 1083 of file raytrace.h.

Referenced by db_ck_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_free_tree(), db_gettree_leaf(), db_gettree_region_end(), db_is_tree_all_unions(), db_non_union_push(), db_tally_subtree_regions(), db_tree_del_lhs(), db_tree_del_rhs(), db_tree_nleaves(), db_walk_subtree(), rt_pr_tree_str(), and rt_pr_tree_vls().

#define OP_NOP   MKOP(7)
 

Leaf with no effect.

Definition at line 1084 of file raytrace.h.

Referenced by build_etree(), db_ck_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_free_tree(), db_is_tree_all_unions(), db_non_union_push(), db_recurse(), db_recurse_subtree(), db_tally_subtree_regions(), db_tcl_tree_describe(), db_tree_del_lhs(), db_tree_del_rhs(), db_tree_describe(), db_tree_flatten_describe(), db_tree_nleaves(), db_walk_subtree(), facetize_region_end(), nmg_booltree_evaluate(), rt_booleval(), rt_bound_tree(), rt_gettree_region_end(), rt_optim_tree(), rt_pr_tree_vls(), rt_solid_bitfinder(), rt_tree_elim_nops(), rt_tree_kill_dead_solid_refs(), rt_tree_max_raynum(), rt_tree_region_assign(), and rt_tree_test_ready().

#define OP_NOT   MKOP(8)
 

Unary: not L.

Definition at line 1086 of file raytrace.h.

Referenced by db_ck_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_free_tree(), db_is_tree_all_unions(), db_tally_subtree_regions(), db_tcl_tree_describe(), db_tcl_tree_parse(), db_tree_counter(), db_tree_describe(), db_tree_nleaves(), db_walk_subtree(), rt_booleval(), rt_comb_v5_serialize(), rt_pr_tree_val(), rt_pr_tree_vls(), rt_tree_elim_nops(), rt_tree_kill_dead_solid_refs(), rt_tree_max_raynum(), rt_tree_region_assign(), and rt_tree_test_ready().

#define OP_GUARD   MKOP(9)
 

Unary: not L, or else!

Definition at line 1087 of file raytrace.h.

Referenced by db_ck_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_free_tree(), db_is_tree_all_unions(), db_tally_subtree_regions(), db_tcl_tree_describe(), db_tcl_tree_parse(), db_tree_describe(), db_tree_nleaves(), db_walk_subtree(), rt_booleval(), rt_pr_tree_str(), rt_pr_tree_val(), rt_pr_tree_vls(), rt_tree_elim_nops(), rt_tree_kill_dead_solid_refs(), and rt_tree_region_assign().

#define OP_XNOP   MKOP(10)
 

Unary: L, mark region.

Definition at line 1088 of file raytrace.h.

Referenced by db_ck_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_free_tree(), db_is_tree_all_unions(), db_tally_subtree_regions(), db_tcl_tree_describe(), db_tcl_tree_parse(), db_tree_describe(), db_tree_nleaves(), db_walk_subtree(), rt_booleval(), rt_pr_tree_vls(), rt_tree_elim_nops(), rt_tree_kill_dead_solid_refs(), and rt_tree_region_assign().

#define OP_NMG_TESS   MKOP(11)
 

Leaf: tr_stp -> nmgregion.

Definition at line 1089 of file raytrace.h.

Referenced by db_free_tree(), db_tree_del_lhs(), db_tree_del_rhs(), nmg_boolean(), and nmg_booltree_evaluate().

#define OP_DB_LEAF   MKOP(12)
 

Leaf of combination, db fmt.

Definition at line 1091 of file raytrace.h.

Referenced by build_etree(), db_apply_state_from_one_member(), db_ck_left_heavy_tree(), db_ck_tree(), db_ck_v4gift_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_find_named_leaf(), db_find_named_leafs_parent(), db_flatten_tree(), db_free_tree(), db_functree_subtree(), db_is_tree_all_unions(), db_non_union_push(), db_recurse_subtree(), db_tally_subtree_regions(), db_tcl_tree_describe(), db_tcl_tree_parse(), db_traverse_subtree(), db_tree_counter(), db_tree_del_dbleaf(), db_tree_del_lhs(), db_tree_del_rhs(), db_tree_describe(), db_tree_flatten_describe(), db_tree_funcleaf(), db_tree_mul_dbleaf(), db_tree_nleaves(), db_walk_subtree(), Eplot(), eval_etree(), free_etree(), rt_comb_export4(), rt_comb_import5(), rt_comb_v5_serialize(), rt_pr_tree_str(), rt_pr_tree_vls(), wdb_add_operand(), and wdb_combadd().

#define OP_FREE   MKOP(13)
 

Unary: L has free chain.

Definition at line 1092 of file raytrace.h.

Referenced by db_free_tree().

#define tr_op   tr_a.tu_op
 

Definition at line 1130 of file raytrace.h.

#define tr_regionp   tr_a.tu_regionp
 

Definition at line 1131 of file raytrace.h.

Referenced by rt_booleval().

#define TREE_NULL   ((union tree *)0)
 

Definition at line 1133 of file raytrace.h.

Referenced by db_dup_subtree(), db_find_named_leaf(), db_find_named_leafs_parent(), db_flatten_tree(), db_free_tree(), db_mkbool_tree(), db_recurse(), db_recurse_subtree(), db_tcl_tree_parse(), db_tree_del_dbleaf(), db_tree_del_lhs(), db_tree_del_rhs(), db_tree_nleaves(), db_walk_dispatcher(), db_walk_subtree(), db_walk_tree(), facetize_region_end(), nmg_booltree_evaluate(), nmg_booltree_leaf_tess(), nmg_booltree_leaf_tnurb(), rt_booleval(), rt_clean_resource(), rt_comb_export4(), rt_del_regtree(), rt_gettree_leaf(), rt_optim_tree(), rt_pr_tree(), rt_pr_tree_val(), rt_pr_tree_vls(), rt_solid_bitfinder(), rt_submodel_wireframe_leaf(), and wdb_combadd().

#define RT_TREE_MAGIC   0x91191191
 

Definition at line 1134 of file raytrace.h.

Referenced by bu_identify_magic(), db_free_tree(), db_gettree_leaf(), db_gettree_region_end(), db_non_union_push(), db_recurse(), db_tcl_tree_parse(), db_walk_tree(), facetize_region_end(), rt_comb_import5(), wdb_add_operand(), wdb_combadd(), wdb_do_inter(), and wdb_do_union_subtr().

#define RT_CK_TREE _p   )     BU_CKMAG(_p, RT_TREE_MAGIC, "union tree")
 

Definition at line 1135 of file raytrace.h.

Referenced by build_etree(), db_apply_state_from_memb(), db_apply_state_from_one_member(), db_ck_left_heavy_tree(), db_ck_tree(), db_ck_v4gift_tree(), db_count_refs(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_subtree(), db_find_named_leaf(), db_find_named_leafs_parent(), db_flatten_tree(), db_free_tree(), db_functree_subtree(), db_is_tree_all_unions(), db_left_hvy_node(), db_non_union_push(), db_recurse(), db_recurse_subtree(), db_tally_subtree_regions(), db_tcl_tree_describe(), db_traverse_subtree(), db_tree_counter(), db_tree_del_dbleaf(), db_tree_del_lhs(), db_tree_del_rhs(), db_tree_describe(), db_tree_flatten_describe(), db_tree_funcleaf(), db_tree_mul_dbleaf(), db_tree_nleaves(), db_walk_dispatcher(), db_walk_subtree(), db_walk_tree(), Do_copy_membs(), Do_ref_incr(), nmg_boolean(), nmg_booltree_evaluate(), rt_booleval(), rt_bound_tree(), rt_comb_export4(), rt_comb_v5_serialize(), rt_gettree_region_end(), rt_optim_tree(), rt_pr_tree(), rt_pr_tree_str(), rt_solid_bitfinder(), rt_tree_elim_nops(), rt_tree_kill_dead_solid_refs(), rt_tree_max_raynum(), rt_tree_region_assign(), and rt_tree_test_ready().

#define TREE_LIST_NULL   ((struct tree_list *)0)
 

Definition at line 1148 of file raytrace.h.

#define RT_MAXARGS   9000
 

Definition at line 1151 of file raytrace.h.

Referenced by dgo_nirt_cmd(), and wdb_comb_std_cmd().

#define RT_MAXLINE   10240
 

Definition at line 1152 of file raytrace.h.

Referenced by dgo_nirt_cmd().

#define RT_WDB_MAGIC   0x5f576462
 

Definition at line 1186 of file raytrace.h.

Referenced by bu_identify_magic(), and wdb_dbopen().

#define RT_CHECK_WDB _p   )     BU_CKMAG(_p,RT_WDB_MAGIC,"rt_wdb")
 

Definition at line 1187 of file raytrace.h.

#define RT_CHECK_WDB_TCL _interp,
_p   )     BU_CKMAG_TCL(_interp,_p,RT_WDB_MAGIC,"rt_wdb")
 

Definition at line 1188 of file raytrace.h.

#define RT_CK_WDB _p   )     RT_CHECK_WDB(_p)
 

Definition at line 1189 of file raytrace.h.

Referenced by db_create_inmem(), db_dump(), rt_tcl_import_from_path(), wdb_close(), wdb_deleteProc(), wdb_export(), wdb_export_external(), wdb_hide_cmd(), wdb_node_write(), wdb_put_internal(), wdb_title_cmd(), and wdb_unhide_cmd().

#define RT_CK_WDB_TCL _interp,
_p   )     RT_CHECK_WDB_TCL(_interp,_p)
 

Definition at line 1190 of file raytrace.h.

Referenced by wdb_dump_cmd(), wdb_match_cmd(), wdb_rt_gettrees_cmd(), and wdb_tops_cmd().

#define RT_WDB_NULL   ((struct rt_wdb *)NULL)
 

Definition at line 1191 of file raytrace.h.

Referenced by dgo_impending_wdb_close(), wdb_create_cmd(), wdb_dbopen(), wdb_dump_cmd(), wdb_fopen_v(), and wdb_init_obj().

#define RT_WDB_TYPE_DB_DISK   2
 

Definition at line 1192 of file raytrace.h.

Referenced by wdb_dbopen(), wdb_export_external(), and wdb_fopen_v().

#define RT_WDB_TYPE_DB_DISK_APPEND_ONLY   3
 

Definition at line 1193 of file raytrace.h.

Referenced by wdb_dbopen(), and wdb_export_external().

#define RT_WDB_TYPE_DB_INMEM   4
 

Definition at line 1194 of file raytrace.h.

Referenced by wdb_dbopen(), and wdb_export_external().

#define RT_WDB_TYPE_DB_INMEM_APPEND_ONLY   5
 

Definition at line 1195 of file raytrace.h.

Referenced by wdb_dbopen(), and wdb_export_external().

#define RT_VDRW_PREFIX   "_VDRW"
 

Definition at line 1202 of file raytrace.h.

#define RT_VDRW_PREFIX_LEN   6
 

Definition at line 1203 of file raytrace.h.

#define RT_VDRW_MAXNAME   31
 

Definition at line 1204 of file raytrace.h.

#define RT_VDRW_DEF_COLOR   0xffff00
 

Definition at line 1205 of file raytrace.h.

#define VD_CURVE_NULL   ((struct vd_curve *)NULL)
 

Definition at line 1212 of file raytrace.h.

#define RT_DGO_NULL   ((struct dg_obj *)NULL)
 

Definition at line 1283 of file raytrace.h.

#define RT_VIEW_OBJ_NULL   ((struct view_obj *)NULL)
 

Definition at line 1316 of file raytrace.h.

#define RT_MINVIEWSIZE   0.0001
 

Definition at line 1317 of file raytrace.h.

Referenced by vo_sca(), and vo_size().

#define RT_MINVIEWSCALE   0.00005
 

Definition at line 1318 of file raytrace.h.

Referenced by vo_zoom().

#define ANM_RSTACK   1
 

Replace stacked matrix.

Definition at line 1334 of file raytrace.h.

Referenced by db_do_anim(), db_parse_1anim(), and db_write_anim().

#define ANM_RARC   2
 

Replace arc matrix.

Definition at line 1335 of file raytrace.h.

Referenced by db_do_anim(), db_parse_1anim(), and db_write_anim().

#define ANM_LMUL   3
 

Left (root side) mul.

Definition at line 1336 of file raytrace.h.

Referenced by db_do_anim(), db_parse_1anim(), and db_write_anim().

#define ANM_RMUL   4
 

Right (leaf side) mul.

Definition at line 1337 of file raytrace.h.

Referenced by db_do_anim(), db_parse_1anim(), and db_write_anim().

#define ANM_RBOTH   5
 

Replace stack, arc=Idn.

Definition at line 1338 of file raytrace.h.

Referenced by db_do_anim(), db_parse_1anim(), and db_write_anim().

#define RT_ANP_REPLACE   1
 

Replace shader string.

Definition at line 1345 of file raytrace.h.

Referenced by db_do_anim(), and db_parse_1anim().

#define RT_ANP_APPEND   2
 

Append to shader string.

Definition at line 1346 of file raytrace.h.

Referenced by db_do_anim().

#define RT_ANP_MAGIC   0x41507270
 

'APrp'

Definition at line 1347 of file raytrace.h.

#define RT_CK_ANP _p   )     BU_CKMAG((_p), RT_ANP_MAGIC, "rt_anim_property")
 

Definition at line 1348 of file raytrace.h.

#define RT_AN_MATRIX   1
 

Matrix animation.

Definition at line 1366 of file raytrace.h.

Referenced by db_do_anim(), db_parse_1anim(), and db_write_anim().

#define RT_AN_MATERIAL   2
 

Material property anim.

Definition at line 1367 of file raytrace.h.

Referenced by db_do_anim(), db_free_1anim(), and db_parse_1anim().

#define RT_AN_COLOR   3
 

Material color anim.

Definition at line 1368 of file raytrace.h.

Referenced by db_do_anim().

#define RT_AN_SOLID   4
 

Solid parameter anim.

Definition at line 1369 of file raytrace.h.

#define RT_AN_TEMPERATURE   5
 

Region temperature.

Definition at line 1370 of file raytrace.h.

Referenced by db_do_anim().

#define ANIM_NULL   ((struct animate *)0)
 

Definition at line 1372 of file raytrace.h.

Referenced by db_add_anim(), db_apply_anims(), db_follow_path(), and db_free_anim().

#define ANIMATE_MAGIC   0x414e4963
 

Definition at line 1373 of file raytrace.h.

Referenced by bu_identify_magic(), and db_parse_1anim().

#define RT_CK_ANIMATE _p   )     BU_CKMAG((_p), ANIMATE_MAGIC, "animate")
 

Definition at line 1374 of file raytrace.h.

Referenced by db_add_anim(), db_apply_anims(), db_do_anim(), db_follow_path(), db_free_1anim(), db_free_anim(), and db_write_anim().

#define RT_HTBL_MAGIC   0x6874626c
 

"htbl"

Definition at line 1388 of file raytrace.h.

Referenced by bu_identify_magic(), and rt_htbl_init().

#define RT_CK_HTBL _p   )     BU_CKMAG(_p, RT_HTBL_MAGIC, "rt_htbl")
 

Definition at line 1389 of file raytrace.h.

Referenced by rt_bot_piece_hitsegs(), rt_htbl_free(), rt_htbl_get(), and rt_htbl_reset().

#define RT_PIECESTATE_MAGIC   0x70637374
 

pcst

Definition at line 1411 of file raytrace.h.

Referenced by rt_res_pieces_init().

#define RT_CK_PIECESTATE _p   )     BU_CKMAG(_p, RT_PIECESTATE_MAGIC, "struct rt_piecestate")
 

Definition at line 1412 of file raytrace.h.

Referenced by rt_bot_piece_hitsegs(), rt_res_pieces_clean(), and rt_shootray().

#define RT_PIECELIST_MAGIC   0x70636c73
 

pcls

Definition at line 1435 of file raytrace.h.

Referenced by rt_ct_populate_box(), and rt_cut_extend().

#define RT_CK_PIECELIST _p   )     BU_CKMAG(_p, RT_PIECELIST_MAGIC, "struct rt_piecelist")
 

Definition at line 1436 of file raytrace.h.

Referenced by rt_bot_piece_shot(), rt_ct_populate_box(), rt_shootray(), and rt_tcl_pr_cutter().

#define RT_DEFAULT_MINPIECES   32
 

Definition at line 1439 of file raytrace.h.

#define RT_DEFAULT_TRIS_PER_PIECE   4
 

Definition at line 1440 of file raytrace.h.

#define RESOURCE_NULL   ((struct resource *)0)
 

Definition at line 1512 of file raytrace.h.

Referenced by rt_add_res_stats(), rt_cell_n_on_ray(), rt_shootray(), and rt_shootray_bundle().

#define RESOURCE_MAGIC   0x83651835
 

Definition at line 1513 of file raytrace.h.

Referenced by bu_identify_magic(), dgo_E_cmd(), nmg_class_ray_vs_shell(), rt_init_resource(), rt_shootray(), rt_shootray_bundle(), wdb_dbopen(), and wdb_fopen_v().

#define RT_CK_RESOURCE _p   )     BU_CKMAG(_p, RESOURCE_MAGIC, "struct resource")
 

Definition at line 1514 of file raytrace.h.

Referenced by db_comb_describe(), db_dup_subtree(), db_flatten_tree(), db_follow_path(), db_free_tree(), db_functree_subtree(), db_get_directory(), db_gettree_leaf(), db_gettree_region_end(), db_init_db_tree_state(), db_mkbool_tree(), db_mkgift_tree(), db_non_union_push(), db_recurse(), db_recurse_subtree(), db_shader_mat(), db_tally_subtree_regions(), db_traverse_subtree(), db_tree_del_dbleaf(), db_tree_flatten_describe(), db_update_nref(), db_walk_dispatcher(), db_walk_subtree(), db_walk_tree(), nmg_boolean(), nmg_booltree_evaluate(), nmg_booltree_leaf_tess(), nmg_booltree_leaf_tnurb(), rt_add_res_stats(), rt_booleval(), rt_boolweave(), rt_cell_n_on_ray(), rt_clean_resource(), rt_comb_describe(), rt_comb_export4(), rt_comb_export5(), rt_comb_ifree(), rt_comb_import5(), rt_comb_tcladjust(), rt_db_cvt_to_external5(), rt_db_put_internal5(), rt_del_regtree(), rt_extrude_xform(), rt_generic_xform(), rt_get_seg(), rt_gettree_leaf(), rt_gettree_region_end(), rt_gettree_region_start(), rt_hf_to_dsp(), rt_matrix_transform(), rt_pg_to_bot(), rt_prep_parallel(), rt_res_pieces_clean(), rt_res_pieces_init(), rt_shoot_many_rays(), rt_shoot_many_rays_worker(), rt_shootray(), rt_shootray_bundle(), rt_solid_bitfinder(), rt_submodel_free(), rt_submodel_shot(), rt_submodel_wireframe_leaf(), rt_tree_elim_nops(), rt_weave0seg(), and rt_zero_res_stats().

#define RT_GET_TREE _tp,
_res   ) 
 

Value:

{ \
        if( ((_tp) = (_res)->re_tree_hd) != TREE_NULL )  { \
                (_res)->re_tree_hd = (_tp)->tr_b.tb_left; \
                (_tp)->tr_b.tb_left = TREE_NULL; \
                (_res)->re_tree_get++; \
        } else { \
                GETUNION( _tp, tree ); \
                (_res)->re_tree_malloc++; \
        }\
        }
More malloc-efficient replacement for BU_GETUNION(tp, tree)

Definition at line 1517 of file raytrace.h.

Referenced by db_dup_subtree(), db_gettree_leaf(), db_gettree_region_end(), db_non_union_push(), db_recurse(), db_recurse_subtree(), db_tally_subtree_regions(), db_tcl_tree_parse(), db_walk_tree(), rt_comb_import5(), wdb_add_operand(), and wdb_combadd().

#define RT_FREE_TREE _tp,
_res   ) 
 

Value:

{ \
                (_tp)->tr_b.tb_left = (_res)->re_tree_hd; \
                (_tp)->tr_b.tb_right = TREE_NULL; \
                (_res)->re_tree_hd = (_tp); \
                (_tp)->tr_b.tb_op = OP_FREE; \
                (_res)->re_tree_free++; \
        }

Definition at line 1527 of file raytrace.h.

Referenced by db_flatten_tree(), db_free_tree(), db_recurse_subtree(), db_tcl_tree_parse(), db_tree_del_lhs(), db_tree_del_rhs(), db_walk_subtree(), and rt_tree_elim_nops().

#define CORNER_PTS   4
 

P I X E L _ E X T

This structure is intended to descrbe the area and/or volume represented by a ray. In the case of the "rt" program it represents the extent in model coordinates of the prism behind the pixel being rendered.

The r_pt values of the rays indicate the dimensions and location in model space of the ray origin (usually the pixel to be rendered). The r_dir vectors indicate the edges (and thus the shape) of the prism which is formed from the projection of the pixel into space.

Definition at line 1571 of file raytrace.h.

#define PIXEL_EXT_MAGIC   0x50787400
 

Definition at line 1577 of file raytrace.h.

Referenced by bu_identify_magic().

#define BU_CK_PIXEL_EXT _p   )     BU_CKMAG(_p, PIXEL_EXT_MAGIC, "struct pixel_ext")
 

Definition at line 1578 of file raytrace.h.

#define RT_AFN_NULL   ((int (*)())0)
 

Definition at line 1684 of file raytrace.h.

Referenced by rt_default_multioverlap().

#define RT_AP_MAGIC   0x4170706c
 

"Appl"

Definition at line 1685 of file raytrace.h.

Referenced by bu_identify_magic(), rt_cell_n_on_ray(), rt_shootray(), rt_shootray_bundle(), and wdb_rt_gettrees_cmd().

#define RT_CK_AP _p   )     BU_CKMAG(_p,RT_AP_MAGIC,"struct application")
 

Definition at line 1686 of file raytrace.h.

Referenced by _rt_defoverlap(), rt_bot_piece_hitsegs(), rt_cell_n_on_ray(), rt_default_logoverlap(), rt_default_multioverlap(), rt_fastgen_plate_vol_overlap(), rt_rebuild_overlaps(), rt_shootray(), rt_shootray_bundle(), and rt_silent_logoverlap().

#define RT_CK_APPLICATION _p   )     BU_CKMAG(_p,RT_AP_MAGIC,"struct application")
 

Definition at line 1687 of file raytrace.h.

Referenced by rt_shoot_many_rays(), and rt_shoot_many_rays_worker().

#define RT_CK_AP_TCL _interp,
_p   )     BU_CKMAG_TCL(_interp,_p,RT_AP_MAGIC,"struct application")
 

Definition at line 1688 of file raytrace.h.

Referenced by rt_tcl_cutter(), rt_tcl_rt_check(), rt_tcl_rt_no_bool(), rt_tcl_rt_onehit(), rt_tcl_rt_prep(), and rt_tcl_rt_shootray().

#define RT_APPLICATION_INIT _p   ) 
 

Value:

{ \
                memset( (char *)(_p), 0, sizeof(struct application) ); \
                (_p)->a_magic = RT_AP_MAGIC; \
        }

Definition at line 1689 of file raytrace.h.

Referenced by dgo_E_cmd(), nmg_class_ray_vs_shell(), rt_smooth_bot(), and wdb_rt_gettrees_cmd().

#define RT_AP_CHECK _ap   ) 
 

Value:

{if((_ap)->a_zero1||(_ap)->a_zero2) \
                rt_bomb("corrupt application struct"); }

Definition at line 1698 of file raytrace.h.

Referenced by rt_cell_n_on_ray(), rt_plot_cell(), rt_shootray(), rt_shootray_bundle(), and rt_submodel_a_hit().

#define RT_G_DEBUG   rt_g.debug
 

Definition at line 1727 of file raytrace.h.

Referenced by bn_distsq_pt3_lseg3(), db5_crack_disk_header(), db5_diradd_handler(), db5_realloc(), db5_replace_attributes(), db5_scan(), db5_update_attributes(), db_add_anim(), db_alloc(), db_apply_anims(), db_close(), db_create(), db_delete(), db_delrec(), db_diradd(), db_do_anim(), db_follow_path(), db_functree(), db_fwrite_external(), db_fwrite_ident(), db_get(), db_get_external(), db_getmrec(), db_lookup(), db_mkgift_tree(), db_open(), db_preorder_traverse(), db_put(), db_put_external(), db_put_external5(), db_read(), db_recurse(), db_scan(), db_update_ident(), db_walk_dispatcher(), db_walk_tree(), db_write(), db_write_anim(), db_zapper(), do_grid(), dsp_pos(), nmg_face_state_transition(), nmg_loop_is_ccw(), project_pt(), rt_arb_shot(), rt_arb_uv(), rt_ars_shot(), rt_ars_uv(), rt_bomb(), rt_boolfinal(), rt_boolweave(), rt_cell_n_on_ray(), rt_ck_overlap(), rt_ct_box(), rt_ct_old_assess(), rt_ct_optim(), rt_cut_extend(), rt_cut_it(), rt_del_regtree(), rt_dsp_class(), rt_dsp_curve(), rt_dsp_describe(), rt_dsp_export(), rt_dsp_export5(), rt_dsp_free(), rt_dsp_ifree(), rt_dsp_import(), rt_dsp_import5(), rt_dsp_norm(), rt_dsp_plot(), rt_dsp_prep(), rt_dsp_shot(), rt_dsp_tess(), rt_dsp_uv(), rt_dsp_vshot(), rt_ebm_dda(), rt_fastgen_plate_vol_overlap(), rt_fastgen_vol_vol_overlap(), rt_fdiff(), rt_find_identical_solid(), rt_gettrees_muves(), rt_hf_to_dsp(), rt_hlf_uv(), rt_nmg_import(), rt_nugrid_cut(), rt_nurb_intersect(), rt_nurb_shot(), rt_pgface(), rt_prep_parallel(), rt_rec_shot(), rt_regionfix(), rt_retrieve_binunif(), rt_seg_planeclip(), rt_shootray(), rt_shootray_bundle(), rt_submodel_prep(), rt_submodel_wireframe_leaf(), rt_tree_kill_dead_solid_refs(), rt_vol_shot(), rt_weave0seg(), and wdb_push_cmd().

#define RT_SEM_TREE0   (BU_SEM_LAST)
 

S E M A P H O R E S

Definition of global parallel-processing semaphores.

res_syscall is now BU_SEM_SYSCALL

Definition at line 1737 of file raytrace.h.

#define RT_SEM_TREE1   (RT_SEM_TREE0+1)
 

Definition at line 1738 of file raytrace.h.

#define RT_SEM_TREE2   (RT_SEM_TREE1+1)
 

Definition at line 1739 of file raytrace.h.

#define RT_SEM_TREE3   (RT_SEM_TREE2+1)
 

Definition at line 1740 of file raytrace.h.

#define RT_SEM_WORKER   (RT_SEM_TREE3+1)
 

Definition at line 1741 of file raytrace.h.

Referenced by db_walk_dispatcher(), rt_cut_optimize_parallel(), and rt_shoot_many_rays_worker().

#define RT_SEM_STATS   (RT_SEM_WORKER+1)
 

Definition at line 1742 of file raytrace.h.

Referenced by rt_find_identical_solid().

#define RT_SEM_RESULTS   (RT_SEM_STATS+1)
 

Definition at line 1743 of file raytrace.h.

Referenced by rt_prep_parallel().

#define RT_SEM_MODEL   (RT_SEM_RESULTS+1)
 

Definition at line 1744 of file raytrace.h.

Referenced by db_shader_mat(), dgo_drawH_part2(), rt_arb_uv(), rt_ct_free(), rt_ct_get(), rt_dsp_prep(), rt_ebm_import(), rt_ebm_import5(), rt_hf_prep(), and rt_submodel_prep().

#define RT_SEM_LAST   (RT_SEM_MODEL+1)
 

Call bu_semaphore_init( RT_SEM_LAST );.

Definition at line 1746 of file raytrace.h.

Referenced by Rt_Init().

#define RT_NU_GFACTOR_DEFAULT   1.5
 

see rt_cut_it() for a description of this

Definition at line 1835 of file raytrace.h.

Referenced by rt_nugrid_cut().

#define RTI_NULL   ((struct rt_i *)0)
 

Definition at line 1838 of file raytrace.h.

Referenced by rt_dirbuild(), wdb_get_obj_bounds(), and wdb_get_obj_bounds2().

#define RTI_MAGIC   0x99101658
 

magic # for integrity check

Definition at line 1839 of file raytrace.h.

Referenced by bu_identify_magic(), and rt_new_rti().

#define RT_CHECK_RTI _p   )     BU_CKMAG(_p,RTI_MAGIC,"struct rt_i")
 

Definition at line 1841 of file raytrace.h.

Referenced by rt_find_solid(), rt_gettrees_muves(), rt_load_attrs(), rt_pr_partitions(), rt_pr_pt(), rt_pr_pt_vls(), and rt_rpp_region().

#define RT_CHECK_RTI_TCL _interp,
_p   )     BU_CKMAG_TCL(_interp,_p,RTI_MAGIC,"struct rt_i")
 

Definition at line 1842 of file raytrace.h.

#define RT_CK_RTI _p   )     RT_CHECK_RTI(_p)
 

Definition at line 1843 of file raytrace.h.

Referenced by db_shader_mat(), db_walk_dispatcher(), db_walk_tree(), rt_add_res_stats(), rt_boolfinal(), rt_boolweave(), rt_cell_n_on_ray(), rt_ck(), rt_clean(), rt_clean_resource(), rt_ct_box(), rt_ct_free(), rt_ct_get(), rt_ct_measure(), rt_ct_plan(), rt_cut_clean(), rt_cut_extend(), rt_cut_one_axis(), rt_cut_optimize_parallel(), rt_find_identical_solid(), rt_fr_cut(), rt_free_rti(), rt_getregion(), rt_gettree_leaf(), rt_gettree_region_end(), rt_gettree_region_start(), rt_init_resource(), rt_plot_all_bboxes(), rt_plot_all_solids(), rt_plot_cell(), rt_plot_cut(), rt_plot_solid(), rt_pr_cut_info(), rt_prep(), rt_prep_parallel(), rt_regionfix(), rt_res_pieces_clean(), rt_res_pieces_init(), rt_rhc_prep(), rt_shootray(), rt_shootray_bundle(), rt_submodel_a_hit(), rt_submodel_free(), rt_submodel_prep(), rt_submodel_shot(), and rt_weave0seg().

#define RT_CK_RTI_TCL _interp,
_p   )     RT_CHECK_RTI_TCL(_interp,_p)
 

Definition at line 1844 of file raytrace.h.

Referenced by rt_tcl_cutter(), rt_tcl_rt_check(), rt_tcl_rt_no_bool(), rt_tcl_rt_onehit(), rt_tcl_rt_prep(), and rt_tcl_rt_shootray().

#define RT_PART_NUBSPT   0
 

Definition at line 1846 of file raytrace.h.

Referenced by rt_cut_it().

#define RT_PART_NUGRID   1
 

Definition at line 1847 of file raytrace.h.

Referenced by rt_cut_it(), rt_pr_cut_info(), and rt_tcl_rt_prep().

#define RT_VISIT_ALL_SOLTABS_START _s,
_rti   ) 
 

Value:

{ \
        register struct bu_list *_head = &((_rti)->rti_solidheads[0]); \
        for( ; _head < &((_rti)->rti_solidheads[RT_DBNHASH]); _head++ ) \
                for( BU_LIST_FOR( _s, soltab, _head ) )  {
Macros to painlessly visit all the active solids. Serving suggestion:

RT_VISIT_ALL_SOLTABS_START( stp, rtip ) { rt_pr_soltab( stp ); } RT_VISIT_ALL_SOLTABS_END

Definition at line 1856 of file raytrace.h.

Referenced by rt_ck(), rt_cut_it(), rt_cut_one_axis(), rt_find_solid(), rt_gettrees_muves(), rt_plot_all_bboxes(), rt_plot_all_solids(), rt_prep_parallel(), rt_res_pieces_init(), and rt_submodel_print().

#define RT_VISIT_ALL_SOLTABS_END   } }
 

Definition at line 1861 of file raytrace.h.

Referenced by rt_ck(), rt_cut_it(), rt_cut_one_axis(), rt_find_solid(), rt_gettrees_muves(), rt_plot_all_bboxes(), rt_plot_all_solids(), rt_prep_parallel(), rt_res_pieces_init(), and rt_submodel_print().

#define RT_GET_VLIST  )     BN_GET_VLIST(&rt_g.rtg_vlfree, p)
 

Applications that are going to use RT_ADD_VLIST and RT_GET_VLIST are required to execute this macro once, first: BU_LIST_INIT( &rt_g.rtg_vlfree );

Note that RT_GET_VLIST and RT_FREE_VLIST are non-PARALLEL.

Definition at line 1870 of file raytrace.h.

#define RT_FREE_VLIST hd   )     BN_FREE_VLIST(&rt_g.rtg_vlfree, hd)
 

Place an entire chain of bn_vlist structs on the freelist

Definition at line 1873 of file raytrace.h.

Referenced by rt_plot_solid().

#define RT_ADD_VLIST hd,
pnt,
draw   )     BN_ADD_VLIST(&rt_g.rtg_vlfree,hd,pnt,draw)
 

Definition at line 1875 of file raytrace.h.

Referenced by dgo_qray_data_to_vlist(), draw_linear_seg(), draw_pipe_arc(), nmg_cnurb_to_vlist(), nmg_eu_to_vlist(), nmg_lu_to_vlist(), nmg_snurb_fu_to_vlist(), nmg_vlblock_e(), nmg_vlblock_eu(), nmg_vlblock_euleft(), nmg_vlblock_v(), nmg_vu_to_vlist(), rt_ars_plot(), rt_bot_plot(), rt_bot_plot_poly(), rt_cline_plot(), rt_ebm_plate(), rt_ehy_plot(), rt_ell_plot(), rt_epa_plot(), rt_extrude_plot(), rt_grp_plot(), rt_hf_plot(), rt_hlf_plot(), rt_metaball_plot_sph(), rt_part_plot(), rt_pg_plot(), rt_pg_plot_poly(), rt_rhc_plot(), rt_superell_plot(), rt_tgc_plot(), rt_vol_plate(), and seg_to_vlist().

#define V2PRINT a,
 )     bu_log("%s (%g, %g)\n", a, (b)[0], (b)[1] );
 

Definition at line 1885 of file raytrace.h.

Referenced by bn_isect_line2_lseg2(), bn_isect_pt2_lseg2(), and nmg_break_eu_on_v().

#define VPRINT a,
 )     bu_log("%s (%g, %g, %g)\n", a, (b)[0], (b)[1], (b)[2])
 

Definition at line 1886 of file raytrace.h.

Referenced by bend_pipe_shot(), bn_mat_lookat(), bn_vec_ortho(), dsp_pos(), nmg_assess_vu(), nmg_break_eu_on_v(), nmg_ck_fu_verts(), nmg_class_lu_fu(), nmg_edge_g(), nmg_face_rs_init(), nmg_isect_construct_nice_ray(), nmg_isect_edge2p_edge2p(), nmg_isect_line2_edge2p(), nmg_isect_vert2p_face2p(), nmg_jeg(), nmg_repair_v_near_v(), nmg_rt_print_hitmiss(), nmg_sanitize_s_lv(), nmg_search_v_eg(), nmg_triangulate_fu(), nmg_use_edge_g(), rt_arb_print(), rt_ars_print(), rt_boolweave(), rt_cell_n_on_ray(), rt_ck_overlap(), rt_cline_print(), rt_DB_rpp(), rt_dsp_norm(), rt_ebm_dda(), rt_ebm_print(), rt_ehy_print(), rt_ell_print(), rt_epa_print(), rt_eto_print(), rt_eto_shot(), rt_grp_print(), rt_hf_print(), rt_hlf_print(), rt_hlf_uv(), rt_part_print(), rt_pg_print(), rt_pr_soltab(), rt_rec_print(), rt_rhc_print(), rt_rpc_print(), rt_shootray(), rt_shootray_bundle(), rt_sph_print(), rt_submodel_a_hit(), rt_superell_print(), rt_superell_shot(), rt_tgc_print(), rt_tor_print(), rt_tor_shot(), rt_vol_print(), and rt_vol_shot().

#define HPRINT a,
 )     bu_log("%s (%g, %g, %g, %g)\n", a, (b)[0], (b)[1], (b)[2], (b)[3])
 

Definition at line 1887 of file raytrace.h.

Referenced by nmg_face_rs_init(), nmg_fu_planeeqn(), rt_arb_print(), rt_arb_shot(), rt_nurb_c_bound(), and rt_nurb_s_bound().

#define CURVE_LSEG_MAGIC   0x6c736567
 

lseg

Definition at line 1934 of file raytrace.h.

Referenced by curve_to_tcl_list(), get_indices(), get_seg_midpoint(), isect_2D_loop_ray(), rt_check_curve(), rt_copy_curve(), rt_curve_free(), rt_curve_reverse_segment(), rt_extrude_shot(), rt_sketch_export(), rt_sketch_export5(), rt_sketch_import(), rt_sketch_import5(), and seg_to_vlist().

#define CURVE_CARC_MAGIC   0x63617263
 

carc

Definition at line 1948 of file raytrace.h.

Referenced by get_indices(), get_seg_midpoint(), isect_2D_loop_ray(), rt_check_curve(), rt_copy_curve(), rt_curve_free(), rt_curve_reverse_segment(), rt_extrude_prep(), rt_extrude_shot(), rt_sketch_export(), rt_sketch_export5(), rt_sketch_import(), rt_sketch_import5(), and seg_to_vlist().

#define CURVE_NURB_MAGIC   0x6e757262
 

nurb

Definition at line 1960 of file raytrace.h.

Referenced by get_indices(), get_seg_midpoint(), rt_check_curve(), rt_copy_curve(), rt_curve_free(), rt_sketch_export(), rt_sketch_export5(), rt_sketch_import(), and rt_sketch_import5().

#define CURVE_BEZIER_MAGIC   0x62657a69
 

bezi

Definition at line 1968 of file raytrace.h.

Referenced by get_indices(), rt_curve_free(), rt_curve_reverse_segment(), rt_sketch_export(), and rt_sketch_export5().

#define RT_FUNCTAB_MAGIC   0x46754e63
 

Definition at line 2109 of file raytrace.h.

Referenced by bu_identify_magic().

#define RT_CK_FUNCTAB _p   )     BU_CKMAG(_p, RT_FUNCTAB_MAGIC, "functab" );
 

Definition at line 2110 of file raytrace.h.

Referenced by rt_bot_tclform(), rt_cline_tclform(), rt_comb_tclform(), rt_db_free_internal(), rt_ebm_tclform(), rt_extrude_tclform(), rt_fwrite_internal(), rt_parsetab_tcladjust(), rt_parsetab_tclform(), rt_parsetab_tclget(), rt_sketch_tclform(), and wdb_adjust_cmd().

#define RT_CLASSIFY_UNIMPLEMENTED   BN_CLASSIFY_UNIMPLEMENTED
 

Definition at line 2112 of file raytrace.h.

Referenced by rt_arb_class(), rt_bot_class(), rt_metaball_class(), rt_submodel_class(), and rt_xxx_class().

#define RT_CLASSIFY_INSIDE   BN_CLASSIFY_INSIDE
 

Definition at line 2113 of file raytrace.h.

#define RT_CLASSIFY_OVERLAPPING   BN_CLASSIFY_OVERLAPPING
 

Definition at line 2114 of file raytrace.h.

#define RT_CLASSIFY_OUTSIDE   BN_CLASSIFY_OUTSIDE
 

Definition at line 2115 of file raytrace.h.

Referenced by rt_arb_class(), and rt_ck_overlap().

#define NUGRID_T_SETUP _ax,
_cval,
_cno   ) 
 

Value:

if( ssp->rstep[_ax] > 0 ) { \
                ssp->tv[_ax] = t0 + (nu_axis[_ax][_cno].nu_epos - _cval) * \
                                            ssp->inv_dir[_ax]; \
        } else if( ssp->rstep[_ax] < 0 ) { \
                ssp->tv[_ax] = t0 + (nu_axis[_ax][_cno].nu_spos - _cval) * \
                                            ssp->inv_dir[_ax]; \
        } else { \
                ssp->tv[_ax] = INFINITY; \
        }

Definition at line 2147 of file raytrace.h.

Referenced by rt_advance_to_next_cell().

#define NUGRID_T_ADV _ax,
_cno   ) 
 

Value:

if( ssp->rstep[_ax] != 0 )  { \
                ssp->tv[_ax] += nu_axis[_ax][_cno].nu_width * \
                        ssp->abs_inv_dir[_ax]; \
        }

Definition at line 2157 of file raytrace.h.

#define BACKING_DIST   (-2.0)
 

mm to look behind start point

Definition at line 2163 of file raytrace.h.

Referenced by rt_cell_n_on_ray(), rt_find_backing_dist(), rt_shootray(), and rt_shootray_bundle().

#define OFFSET_DIST   0.01
 

mm to advance point into box

Definition at line 2164 of file raytrace.h.

Referenced by rt_find_backing_dist().

#define FAST_NMG   1
 

Definition at line 2185 of file raytrace.h.

#define NMG_HIT_LIST   0
 

Definition at line 2187 of file raytrace.h.

#define NMG_MISS_LIST   1
 

Definition at line 2188 of file raytrace.h.

#define NMG_RT_HIT_MAGIC   0x48697400
 

"Hit"

Definition at line 2189 of file raytrace.h.

#define NMG_RT_HIT_SUB_MAGIC   0x48696d00
 

"Him"

Definition at line 2190 of file raytrace.h.

Referenced by isect_ray_lseg(), and isect_ray_planar_face().

#define NMG_RT_MISS_MAGIC   0x4d697300
 

"Mis"

Definition at line 2191 of file raytrace.h.

Referenced by isect_ray_lseg(), and isect_ray_planar_face().

#define HMG_INBOUND_STATE _hm   )     (((_hm)->in_out & 0x0f0) >> 4)
 

Definition at line 2197 of file raytrace.h.

Referenced by nmg_ck_hitmiss_list().

#define HMG_OUTBOUND_STATE _hm   )     ((_hm)->in_out & 0x0f)
 

Definition at line 2198 of file raytrace.h.

Referenced by nmg_ck_hitmiss_list().

#define NMG_RAY_STATE_INSIDE   1
 

Definition at line 2201 of file raytrace.h.

Referenced by nmg_rt_state_str().

#define NMG_RAY_STATE_ON   2
 

Definition at line 2202 of file raytrace.h.

Referenced by nmg_rt_state_str().

#define NMG_RAY_STATE_OUTSIDE   4
 

Definition at line 2203 of file raytrace.h.

Referenced by nmg_ck_hitmiss_list(), and nmg_rt_state_str().

#define NMG_RAY_STATE_ANY   8
 

Definition at line 2204 of file raytrace.h.

Referenced by nmg_rt_state_str().

#define HMG_HIT_IN_IN   0x11
 

hit internal structure

Definition at line 2206 of file raytrace.h.

Referenced by nmg_rt_inout_str().

#define HMG_HIT_IN_OUT   0x14
 

breaking out

Definition at line 2207 of file raytrace.h.

Referenced by nmg_rt_inout_str().

#define HMG_HIT_OUT_IN   0x41
 

breaking in

Definition at line 2208 of file raytrace.h.

Referenced by nmg_rt_inout_str().

#define HMG_HIT_OUT_OUT   0x44
 

edge/vertex graze

Definition at line 2209 of file raytrace.h.

Referenced by nmg_rt_inout_str().

#define HMG_HIT_IN_ON   0x12
 

Definition at line 2210 of file raytrace.h.

Referenced by nmg_rt_inout_str().

#define HMG_HIT_ON_IN   0x21
 

Definition at line 2211 of file raytrace.h.

Referenced by nmg_rt_inout_str().

#define HMG_HIT_ON_ON   0x22
 

Definition at line 2212 of file raytrace.h.

#define HMG_HIT_OUT_ON   0x42
 

Definition at line 2213 of file raytrace.h.

Referenced by nmg_rt_inout_str().

#define HMG_HIT_ON_OUT   0x24
 

Definition at line 2214 of file raytrace.h.

Referenced by nmg_rt_inout_str().

#define HMG_HIT_ANY_ANY   0x88
 

hit on non-3-mainifold

Definition at line 2215 of file raytrace.h.

Referenced by nmg_ck_hitmiss_list(), and nmg_rt_inout_str().

#define NMG_VERT_ENTER   1
 

Definition at line 2217 of file raytrace.h.

#define NMG_VERT_ENTER_LEAVE   0
 

Definition at line 2218 of file raytrace.h.

#define NMG_VERT_LEAVE   -1
 

Definition at line 2219 of file raytrace.h.

#define NMG_VERT_UNKNOWN   -2
 

Definition at line 2220 of file raytrace.h.

#define NMG_HITMISS_SEG_IN   0x696e00
 

"in"

Definition at line 2222 of file raytrace.h.

Referenced by nmg_rt_print_hitmiss().

#define NMG_HITMISS_SEG_OUT   0x6f757400
 

"out"

Definition at line 2223 of file raytrace.h.

Referenced by nmg_rt_print_hitmiss().

#define NMG_CK_HITMISS hm   ) 
 

Value:

{\
        switch (hm->l.magic) { \
        case NMG_RT_HIT_MAGIC: \
        case NMG_RT_HIT_SUB_MAGIC: \
        case NMG_RT_MISS_MAGIC: \
                break; \
        case NMG_MISS_LIST: \
                bu_log("%s[%d]: struct hitmiss has  NMG_MISS_LIST magic #\n",\
                        __FILE__, __LINE__); \
                rt_bomb("NMG_CK_HITMISS: going down in flames\n"); \
        case NMG_HIT_LIST: \
                bu_log("%s[%d]: struct hitmiss has  NMG_MISS_LIST magic #\n",\
                        __FILE__, __LINE__); \
                rt_bomb("NMG_CK_HITMISS: going down in flames\n"); \
        default: \
                bu_log("%s[%d]: bad struct hitmiss magic: %d:(0x%08x)\n", \
                        __FILE__, __LINE__, hm->l.magic, hm->l.magic); \
                rt_bomb("NMG_CK_HITMISS: going down in flames\n"); \
        }\
        if (!hm->hit.hit_private) { \
                bu_log("%s[%d]: NULL hit_private in hitmiss struct\n", \
                        __FILE__, __LINE__); \
                rt_bomb("NMG_CK_HITMISS: going down in flames\n"); \
        } \
}

Definition at line 2243 of file raytrace.h.

Referenced by isect_ray_lseg(), isect_ray_planar_face(), nmg_ck_hitmiss_list(), nmg_class_ray_vs_shell(), nmg_pl_hitmiss_list(), nmg_rt_print_hitmiss(), and rt_clean_resource().

#define NMG_CK_HITMISS_LISTS a_hit,
rd   ) 
 

Value:

{ \
    for (BU_LIST_FOR(a_hit, hitmiss, &rd->rd_hit)){NMG_CK_HITMISS(a_hit);} \
    for (BU_LIST_FOR(a_hit, hitmiss, &rd->rd_miss)){NMG_CK_HITMISS(a_hit);} }

Definition at line 2269 of file raytrace.h.

Referenced by isect_ray_lseg(), nmg_isect_ray_model(), and nmg_ray_segs().

#define NMG_PCA_EDGE   1
 

Definition at line 2293 of file raytrace.h.

#define NMG_PCA_EDGE_VERTEX   2
 

Definition at line 2294 of file raytrace.h.

#define NMG_PCA_VERTEX   3
 

Definition at line 2295 of file raytrace.h.

#define NMG_RAY_DATA_MAGIC   0x1651771
 

Definition at line 2296 of file raytrace.h.

Referenced by classify_seg(), nmg_class_ray_vs_shell(), rt_nmg_shot(), and shoot_and_plot().

#define NMG_CK_RD _rd   )     NMG_CKMAG(_rd, NMG_RAY_DATA_MAGIC, "ray data");
 

Definition at line 2297 of file raytrace.h.

Referenced by isect_ray_snurb_face().

#define GET_HITMISS _p,
_ap   ) 
 

Value:

{ \
        (_p) = BU_LIST_FIRST( hitmiss, &((_ap)->a_resource->re_nmgfree) ); \
        if( BU_LIST_IS_HEAD( (_p), &((_ap)->a_resource->re_nmgfree ) ) ) \
                (_p) = (struct hitmiss *)bu_calloc(1, sizeof( struct hitmiss ), "hitmiss" ); \
        else \
                BU_LIST_DEQUEUE( &((_p)->l) ); \
        }

Definition at line 2342 of file raytrace.h.

Referenced by isect_ray_lseg(), and isect_ray_planar_face().

#define NMG_FREE_HITLIST _p,
_ap   ) 
 

Value:

{ \
        BU_CK_LIST_HEAD( (_p) ); \
        BU_LIST_APPEND_LIST( &((_ap)->a_resource->re_nmgfree), (_p) ); \
        }

Definition at line 2350 of file raytrace.h.

Referenced by nmg_class_ray_vs_shell(), and nmg_ray_segs().

#define HIT   1
 

a hit on a face

Definition at line 2377 of file raytrace.h.

#define MISS   0
 

a miss on the face

Definition at line 2378 of file raytrace.h.

#define nmg_rt_bomb rd,
str   ) 
 

Value:

{ \
        bu_log("%s", str); \
        if (rt_g.NMG_debug & DEBUG_NMGRT) rt_bomb("End of diagnostics"); \
        BU_LIST_INIT(&rd->rd_hit); \
        BU_LIST_INIT(&rd->rd_miss); \
        rt_g.NMG_debug |= DEBUG_NMGRT; \
        nmg_isect_ray_model(rd); \
        (void) nmg_ray_segs(rd); \
        rt_bomb("Should have bombed before this\n"); }

Definition at line 2384 of file raytrace.h.

#define NMG_RADIAL_MAGIC   0x52614421
 

RaD!

Definition at line 2407 of file raytrace.h.

Referenced by nmg_radial_build_list().

#define NMG_CK_RADIAL _p   )     NMG_CKMAG(_p, NMG_RADIAL_MAGIC, "nmg_radial")
 

Definition at line 2408 of file raytrace.h.

Referenced by nmg_pr_radial(), nmg_pr_radial_list(), nmg_radial_check_parity(), nmg_radial_find_an_original(), nmg_radial_mark_cracks(), nmg_radial_mark_flips(), and nmg_radial_sorted_list_insert().

#define NMG_INTER_STRUCT_MAGIC   0x99912120
 

Definition at line 2433 of file raytrace.h.

Referenced by nmg_crackshells(), nmg_isect2d_final_cleanup(), and nmg_isect_two_generic_faces().

#define NMG_CK_INTER_STRUCT _p   )     NMG_CKMAG(_p, NMG_INTER_STRUCT_MAGIC, "nmg_inter_struct")
 

Definition at line 2434 of file raytrace.h.

Referenced by nmg_break_eu_on_v(), nmg_cut_lu_into_coplanar_and_non(), nmg_enlist_one_vu(), nmg_enlist_vu(), nmg_is_vertex_on_inter(), nmg_isect2d_cleanup(), nmg_isect2d_prep(), nmg_isect_2colinear_edge2p(), nmg_isect_construct_nice_ray(), nmg_isect_edge2p_edge2p(), nmg_isect_eu_fu(), nmg_isect_face3p_shell_int(), nmg_isect_fu_jra(), nmg_isect_line2_edge2p(), nmg_isect_line2_face2pNEW(), nmg_isect_line2_vertex2(), nmg_isect_two_ptbls(), and nmg_isect_vert2p_face2p().

#define rt_fwrite_internal5   +++__deprecated_rt_fwrite_internal5__+++
 

Definition at line 2944 of file raytrace.h.

#define db_ident a,
b,
 )     +++error+++
 

Definition at line 3144 of file raytrace.h.

#define nmg_moveeu a,
 )     nmg_je(a,b)
 

Definition at line 4034 of file raytrace.h.

#define nmg_mev _v,
_u   )     nmg_me((_v), (struct vertex *)NULL, (_u))
 

Definition at line 5409 of file raytrace.h.

#define UP   0
 

Definition at line 72 of file solid.h.

Referenced by dgo_build_tops(), dgo_drawH_part2(), dgo_illum_cmd(), and dgo_who_cmd().

#define DOWN   1
 

Definition at line 73 of file solid.h.

Referenced by dgo_illum_cmd(), and dgo_who_cmd().

#define SOLID_NULL   ((struct solid *)0)
 

Definition at line 75 of file solid.h.

Referenced by dgo_E_cmd().

#define GET_SOLID p,
fp   ) 
 

Value:

{ \
        if(BU_LIST_IS_EMPTY(fp)){ \
                BU_GETSTRUCT(p,solid); \
                db_full_path_init(&(p)->s_fullpath); \
        }else{ \
                p = BU_LIST_NEXT(solid,fp); \
                BU_LIST_DEQUEUE(&((p)->l)); \
                (p)->s_fullpath.fp_len = 0; \
        } \
        BU_LIST_INIT( &((p)->s_vlist) ); }

Definition at line 77 of file solid.h.

Referenced by dgo_drawH_part2(), and dgo_invent_solid().

#define LAST_SOLID _sp   )     DB_FULL_PATH_CUR_DIR( &(_sp)->s_fullpath )
 

Obtain the last node (the solid) on the path

Definition at line 89 of file solid.h.

#define FIRST_SOLID _sp   )     ((_sp)->s_fullpath.fp_names[0])
 

Definition at line 90 of file solid.h.

Referenced by dgo_build_tops(), dgo_who_cmd(), and dgo_zap_cmd().

#define FREE_SOLID p,
fp   ) 
 

Value:

{ \
        BU_LIST_APPEND(fp, &((p)->l)); \
        RT_FREE_VLIST(&((p)->s_vlist)); }

Definition at line 92 of file solid.h.

Referenced by dgo_zap_cmd().

#define FOR_ALL_SOLIDS p,
hp   )     for(BU_LIST_FOR(p,solid,hp))
 

Definition at line 96 of file solid.h.

Referenced by dgo_autoview(), dgo_build_tops(), dgo_color_soltab(), dgo_get_autoview_cmd(), dgo_how_cmd(), dgo_illum_cmd(), dgo_set_transparency_cmd(), and dgo_who_cmd().

#define FOR_REST_OF_SOLIDS p1,
p2,
hp   )     for(BU_LIST_PFOR(p1,p2,solid,hp))
 

Definition at line 99 of file solid.h.

Referenced by dgo_who_cmd().

#define BU_LIST_PFOR p1,
p2,
structure,
hp   ) 
 

Value:

(p1)=BU_LIST_PNEXT(structure,p2); \
        BU_LIST_NOT_HEAD(p1,hp);\
        (p1)=BU_LIST_PNEXT(structure,p1)

Definition at line 102 of file solid.h.

Referenced by dgo_build_tops().

#define DGO_WIREFRAME   0
 

Definition at line 104 of file dg_obj.c.

#define DGO_SHADED_MODE_BOTS   1
 

Definition at line 105 of file dg_obj.c.

#define DGO_SHADED_MODE_ALL   2
 

Definition at line 106 of file dg_obj.c.

#define DGO_BOOL_EVAL   3
 

Definition at line 107 of file dg_obj.c.

#define DGO_CHECK_WDBP_NULL _dgop,
_interp   ) 
 

Value:

if (_dgop->dgo_wdbp == RT_WDB_NULL) \
        { \
                Tcl_AppendResult(_interp, "Not associated with a database!\n", (char *)NULL); \
                return TCL_ERROR; \
        }

Definition at line 128 of file dg_obj.c.

Referenced by dgo_autoview_cmd(), and dgo_get_autoview_cmd().

#define PLATE_MODE   1
 

Definition at line 90 of file importFg4Section.c.

Referenced by Add_bot_face(), do_quad(), and do_tri().

#define VOLUME_MODE   2
 

Definition at line 91 of file importFg4Section.c.

#define POS_CENTER   1
 

Definition at line 93 of file importFg4Section.c.

Referenced by Add_bot_face(), and do_quad().

#define POS_FRONT   2
 

Definition at line 94 of file importFg4Section.c.

Referenced by Add_bot_face(), do_quad(), and do_tri().

#define END_OPEN   1
 

Definition at line 96 of file importFg4Section.c.

#define END_CLOSED   2
 

Definition at line 97 of file importFg4Section.c.

#define GRID_BLOCK   256
 

Definition at line 99 of file importFg4Section.c.

Referenced by Add_bot_face(), do_grid(), do_quad(), do_tri(), and wdb_importFg4Section_cmd().

#define CLINE   'l'
 

Definition at line 101 of file importFg4Section.c.

#define CHEX1   'p'
 

Definition at line 102 of file importFg4Section.c.

#define CHEX2   'b'
 

Definition at line 103 of file importFg4Section.c.

#define CTRI   't'
 

Definition at line 104 of file importFg4Section.c.

#define CQUAD   'q'
 

Definition at line 105 of file importFg4Section.c.

#define CCONE1   'c'
 

Definition at line 106 of file importFg4Section.c.

#define CCONE2   'd'
 

Definition at line 107 of file importFg4Section.c.

#define CCONE3   'e'
 

Definition at line 108 of file importFg4Section.c.

#define CSPHERE   's'
 

Definition at line 109 of file importFg4Section.c.

#define NMG   'n'
 

Definition at line 110 of file importFg4Section.c.

#define BOT   't'
 

Definition at line 111 of file importFg4Section.c.

#define COMPSPLT   'h'
 

Definition at line 112 of file importFg4Section.c.

#define FIND_NEWLINE _cp,
_eosFlag   ) 
 

Value:

while (*(_cp) != '\0' && \
           *(_cp) != '\n') \
        ++(_cp); \
\
    if (*(_cp) == '\0') \
        _eosFlag = 1; \
    else \
        *(_cp) = '\0';

Definition at line 531 of file importFg4Section.c.

Referenced by wdb_importFg4Section_cmd().

#define AMAX i,
 )     ( (i) > (j) ? (i) : (j) )
 

Definition at line 57 of file oslo_calc.c.

#define AMIN i,
 )     ( (i) < (j) ? (i) : (j) )
 

Definition at line 58 of file oslo_calc.c.


Function Documentation

OPTICAL_EXPORT void light_cleanup void   ) 
 

OPTICAL_EXPORT void light_maker int  num,
mat_t  v2m
 

OPTICAL_EXPORT int light_init struct application ap  ) 
 

OPTICAL_EXPORT void light_obs struct application ap,
struct shadework swp,
int  have
 

void rt_insert_color struct mater newp  ) 
 

Definition at line 109 of file mater.c.

References bu_free(), bu_log(), MATER_NULL, mater::mt_forw, mater::mt_high, mater::mt_low, rt_material_head, and rt_pr_mater().

Referenced by rt_color_addrec(), and wdb_color_cmd().

Here is the call graph for this function:

OPTICAL_EXPORT void BuildPhotonMap struct application ap,
point_t  eye_pos,
int  cpus,
int  width,
int  height,
int  Hypersample,
int  GlobalPhotons,
double  CausticsPercent,
int  Rays,
double  AngularTolerance,
int  RandomSeed,
int  ImportanceMapping,
int  IrradianceHypersampling,
int  VisualizeIrradiance,
double  LightIntensity,
char  pmfile[255]
 

OPTICAL_EXPORT void IrradianceEstimate struct application ap,
vect_t  irrad,
point_t  pos,
vect_t  normal,
fastf_t  rad,
int  np
 

RT_EXPORT struct rt_i * rt_dirbuild const char *  filename,
char *  buf,
int  len
 

Definition at line 72 of file dir.c.

References db_close(), db_dirbuild(), db_open(), DBI_NULL, db_i::dbi_title, NULL, resource::re_magic, RT_CK_DBI, rt_init_resource(), rt_new_rti(), rt_uniresource, and RTI_NULL.

Here is the call graph for this function:

RT_EXPORT struct rt_i* rt_new_rti struct db_i dbip  ) 
 

Definition at line 83 of file prep.c.

References BU_GETSTRUCT, BU_LIST_FIRST, BU_LIST_INIT, RT_CK_DBI, RT_DBNHASH, rt_i::rti_magic, RTI_MAGIC, and rt_i::rti_solidheads.

Referenced by db_shader_mat(), dgo_E_cmd(), rt_dirbuild(), rt_smooth_bot(), rt_submodel_prep(), wdb_get_obj_bounds(), wdb_get_obj_bounds2(), and wdb_rt_gettrees_cmd().

RT_EXPORT void rt_free_rti struct rt_i rtip  ) 
 

Definition at line 176 of file prep.c.

References BU_CK_PTBL, bu_free(), BU_LIST_IS_INITIALIZED, BU_PTBL_FOR, bu_ptbl_free(), db_close_client(), NULL, RT_CK_DIR, RT_CK_RTI, rt_clean(), and rt_i::rti_dbip.

Referenced by rt_smooth_bot(), rt_submodel_free(), wdb_get_obj_bounds(), wdb_get_obj_bounds2(), and wdb_rt_gettrees_cmd().

Here is the call graph for this function:

RT_EXPORT void rt_prep struct rt_i rtip  ) 
 

Referenced by rt_shootray(), rt_shootray_bundle(), and rt_smooth_bot().

RT_EXPORT void rt_prep_parallel struct rt_i rtip,
int  ncpu
 

Referenced by rt_cell_n_on_ray(), rt_prep(), rt_shootray(), rt_submodel_prep(), and rt_tcl_rt_prep().

RT_EXPORT int rt_overlap_quietly struct application ap,
struct partition pp,
struct region reg1,
struct region reg2,
struct partition pheadp
 

RT_EXPORT void rt_default_multioverlap struct application ap,
struct partition pp,
struct bu_ptbl regiontable,
struct partition InputHdp
 

Definition at line 928 of file bool.c.

References application::a_overlap, BU_CK_PTBL, BU_PTBL_GET, BU_PTBL_LEN, LOCAL, NULL, REGION_NON_FASTGEN, RT_AFN_NULL, RT_CK_AP, RT_CK_PARTITION, RT_CK_PT_HD, RT_CK_REGION, and rt_defoverlap().

Referenced by rt_boolfinal().

Here is the call graph for this function:

RT_EXPORT void rt_silent_logoverlap struct application ap,
const struct partition pp,
const struct bu_ptbl regiontable,
const struct partition InputHdp
 

Definition at line 1137 of file bool.c.

References BU_CK_PTBL, RT_CK_AP, and RT_CK_PT.

Referenced by rt_tcl_rt_shootray().

RT_EXPORT void rt_default_logoverlap struct application ap,
const struct partition pp,
const struct bu_ptbl regiontable,
const struct partition InputHdp
 

Definition at line 1155 of file bool.c.

References BU_CK_PTBL, bu_log(), BU_PTBL_GET, BU_PTBL_LEN, bu_vls_extend(), bu_vls_init(), bu_vls_printf(), bu_vls_putc(), REGION_NULL, RT_CK_AP, RT_CK_PT, and RT_CK_REGION.

Referenced by rt_boolfinal().

Here is the call graph for this function:

RT_EXPORT int rt_shootray struct application ap  ) 
 

Definition at line 95 of file vshoot.c.

References application::a_level, application::a_purpose, application::a_ray, application::a_resource, application::a_rt_i, application::a_x, application::a_y, bu_calloc(), bu_log(), bzero, DEBUG_ALLRAYS, DEBUG_PARTITION, DEBUG_SHOOT, ID_MAX_SOLID, INFINITY, rt_i::mdl_max, rt_i::mdl_min, NEAR_ZERO, rt_i::needprep, rt_i::nmiss_model, rt_i::nsolids, partition::pt_back, partition::pt_forw, xray::r_dir, xray::r_max, xray::r_pt, resource::re_cpu, resource::re_magic, RESOURCE_MAGIC, RESOURCE_NULL, RT_AP_CHECK, RT_CK_RESOURCE, RT_G_DEBUG, rt_in_rpp(), rt_prep(), rt_uniresource, rt_i::rti_maxsol_by_type, rt_i::rti_nrays, rt_i::rti_nsol_by_type, rt_i::rti_sol_by_type, seg::seg_stp, SOLTAB_NULL, SQRT_SMALL_FASTF, status, VPRINT, X, Y, and Z.

Referenced by rt_shoot_many_rays_worker(), rt_smooth_bot(), rt_submodel_shot(), and rt_tcl_rt_shootray().

Here is the call graph for this function:

RT_EXPORT const char* rt_basename const char *  str  ) 
 

Referenced by db_shader_mat(), and rt_getregion().

RT_EXPORT void rt_free_soltab struct soltab stp  ) 
 

Definition at line 669 of file tree.c.

References ACQUIRE_SEMAPHORE_TREE, bu_free(), BU_LIST_DEQUEUE, bu_ptbl_free(), directory::d_namep, db_dirhash(), db_free_full_path(), DIR_NULL, soltab::l, soltab::l2, db_full_path::magic, RELEASE_SEMAPHORE_TREE, rt_bomb(), RT_CK_FULL_PATH, RT_CK_SOLTAB, rt_nfunctab, soltab::st_aradius, soltab::st_dp, soltab::st_id, soltab::st_matp, soltab::st_meth, soltab::st_path, soltab::st_regions, and soltab::st_uses.

Referenced by db_free_tree(), rt_clean(), rt_gettrees_muves(), and rt_tree_kill_dead_solid_refs().

Here is the call graph for this function:

RT_EXPORT int rt_gettree struct rt_i rtip,
const char *  node
 

Definition at line 936 of file tree.c.

References rt_gettrees_and_attrs().

Referenced by db_shader_mat(), rt_smooth_bot(), and wdb_get_obj_bounds().

Here is the call graph for this function:

RT_EXPORT int rt_gettrees struct rt_i rtip,
int  argc,
const char **  argv,
int  ncpus
 

Definition at line 957 of file tree.c.

References rt_gettrees_and_attrs().

Referenced by dgo_E_cmd(), rt_submodel_prep(), and wdb_rt_gettrees_cmd().

Here is the call graph for this function:

RT_EXPORT int rt_gettrees_and_attrs struct rt_i rtip,
const char **  attrs,
int  argc,
const char **  argv,
int  ncpus
 

Definition at line 917 of file tree.c.

References rt_gettrees_muves().

Referenced by rt_gettree(), and rt_gettrees().

Here is the call graph for this function:

RT_EXPORT int rt_gettrees_muves struct rt_i rtip,
const char **  attrs,
int  argc,
const char **  argv,
int  ncpus
 

Definition at line 737 of file tree.c.

References bu_avs_add(), bu_avs_free(), bu_avs_init(), bu_avs_init_empty(), BU_LIST_FOR, bu_log(), bu_malloc(), directory::d_namep, db_ck_tree(), db_walk_tree(), db_i::dbi_version, rt_i::HeadRegion, INFINITY, rt_i::mdl_max, rt_i::mdl_min, rt_i::needprep, rt_i::nsolids, rt_i::Orca_hash_tbl, region::reg_name, region::reg_treetop, rt_bomb(), rt_bound_tree(), RT_CHECK_RTI, RT_CK_DBI, RT_CK_REGION, RT_CK_SOLTAB, rt_free_soltab(), RT_G_DEBUG, rt_gettree_leaf(), rt_gettree_region_end(), rt_gettree_region_start(), rt_initial_tree_state, rt_pr_soltab(), rt_tree_elim_nops(), rt_tree_kill_dead_solid_refs(), rt_tree_region_assign(), rt_uniresource, RT_VISIT_ALL_SOLTABS_END, RT_VISIT_ALL_SOLTABS_START, rt_i::rti_dbip, rt_i::rti_nsolids_with_pieces, soltab::st_aradius, soltab::st_dp, soltab::st_max, soltab::st_min, soltab::st_npieces, soltab::st_piecestate_num, TCL_ONE_WORD_KEYS, db_tree_state::ts_dbip, VMINMAX, void(), and X.

Referenced by rt_gettrees_and_attrs().

Here is the call graph for this function:

RT_EXPORT int rt_load_attrs struct rt_i rtip,
char **  attrs
 

Definition at line 1130 of file prep.c.

References region::attr_values, bu_calloc(), bu_free(), BU_LIST_FOR, bu_malloc(), bu_mro_free(), bu_mro_init(), db_i::dbi_version, rt_i::HeadRegion, RT_CHECK_RTI, RT_CK_DBI, RT_CK_REGION, and rt_i::rti_dbip.

Here is the call graph for this function:

RT_EXPORT void rt_pr_seg const struct seg segp  ) 
 

Referenced by rt_boolweave().

RT_EXPORT void rt_pr_partitions const struct rt_i rtip,
const struct partition phead,
const char *  title
 

Referenced by rt_boolweave().

RT_EXPORT struct soltab* rt_find_solid const struct rt_i rtip,
const char *  name
 

void rt_prep_timer void   ) 
 

Definition at line 70 of file timer42.c.

References start, time(), and time0.

Here is the call graph for this function:

double rt_get_timer struct bu_vls vp,
double *  elapsed
 

Definition at line 87 of file timer42.c.

References BU_CK_VLS, bu_vls_printf(), bu_vls_strcat(), start, time(), time0, and void().

Referenced by rt_read_timer().

Here is the call graph for this function:

double rt_read_timer char *  str,
int  len
 

Definition at line 260 of file timer42.c.

References bu_vls_addr(), bu_vls_init(), bu_vls_strlen(), and rt_get_timer().

Here is the call graph for this function:

int rt_plot_solid FILE *  fp,
struct rt_i rtip,
const struct soltab stp,
struct resource resp
 

Referenced by rt_plot_all_solids(), and rt_plot_cell().

RT_EXPORT void rt_clean struct rt_i rtip  ) 
 

Referenced by db_shader_mat(), dgo_E_cmd(), and rt_free_rti().

RT_EXPORT int rt_del_regtree struct rt_i rtip,
struct region delregp,
struct resource resp
 

RT_EXPORT void rt_ck struct rt_i rtip  ) 
 

Referenced by rt_tcl_rt_check(), and wdb_rt_gettrees_cmd().

RT_EXPORT void rt_pr_library_version  ) 
 

Definition at line 1953 of file shoot.c.

References bu_log(), and rt_version.

Here is the call graph for this function:

RT_EXPORT int rt_matrix_transform struct rt_db_internal output,
const mat_t  matrix,
struct rt_db_internal input,
int  free,
struct db_i dbip,
struct resource resource
 

r t _ m a t r i x _ t r a n s f o r m

apply a matrix transformation to a given input object, setting the resultant transformed object as the output solid. if free is set, the input object will be released.

returns zero if matrix transform was applied, non-zero on failure.

Definition at line 39 of file transform.c.

References RT_CK_DB_INTERNAL, RT_CK_DBI, and RT_CK_RESOURCE.

RT_EXPORT void rt_boolweave struct seg out_hd,
struct seg in_hd,
struct partition PartHeadp,
struct application ap
 

Definition at line 196 of file bool.c.

References application::a_no_booleans, application::a_ray, application::a_resource, application::a_rt_i, APPEND_PT, BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_INSERT, BU_LIST_NON_EMPTY, bu_log(), bu_ptbl_ins_unique(), DEBUG_PARTITION, bn_tol::dist, FAST, GET_PT_INIT, hit::hit_dist, HIT_NULL, hit::hit_rayp, hit::hit_surfno, INFINITY, INSERT_PT, seg::l, LOCAL, NEAR_ZERO, rt_i::nsolids, partition::pt_back, partition::pt_forw, partition::pt_inflip, partition::pt_inhit, partition::pt_inseg, PT_NULL, partition::pt_outflip, partition::pt_outhit, partition::pt_outseg, partition::pt_seglist, xray::r_dir, xray::r_pt, rt_bomb(), RT_CHECK_SEG, RT_CK_HIT, RT_CK_PT_HD, RT_CK_RAY, RT_CK_RESOURCE, RT_CK_RTI, RT_DUP_PT, RT_G_DEBUG, rt_pr_hit(), rt_pr_partitions(), rt_pr_pt(), rt_pr_seg(), RT_SEG_NULL, rt_weave0seg(), rt_i::rti_tol, seg::seg_in, seg::seg_out, seg::seg_stp, soltab::st_aradius, soltab::st_bit, soltab::st_id, VJOIN1, and VPRINT.

Here is the call graph for this function:

RT_EXPORT int rt_boolfinal struct partition InputHdp,
struct partition FinalHdp,
fastf_t  startdist,
fastf_t  enddist,
struct bu_ptbl regionbits,
struct application ap,
const struct bu_bitv solidbits
 

Definition at line 1324 of file bool.c.

References application::a_level, application::a_onehit, application::a_rt_i, application::a_x, application::a_y, BU_CK_BITV, BU_CK_PTBL, bu_log(), hit::hit_dist, LOCAL, NULL, partition::pt_forw, partition::pt_inhit, partition::pt_regionp, region::reg_aircode, RT_CK_PT_HD, RT_CK_RTI, rt_default_logoverlap(), rt_default_multioverlap(), and RT_G_DEBUG.

Here is the call graph for this function:

RT_EXPORT void rt_grow_boolstack struct resource res  ) 
 

Referenced by rt_booleval(), rt_optim_tree(), and rt_solid_bitfinder().

RT_EXPORT int rt_fdiff double  a,
double  b
 

Definition at line 1940 of file bool.c.

References bu_log(), DEBUG_FDIFF, FAST, INFINITY, and RT_G_DEBUG.

Referenced by rt_fastgen_plate_vol_overlap(), and rt_tor_prep().

Here is the call graph for this function:

RT_EXPORT double rt_reldiff double  a,
double  b
 

Definition at line 1998 of file bool.c.

References FAST.

Referenced by rt_tgc_prep().

RT_EXPORT void rt_pr_soltab const struct soltab stp  ) 
 

Referenced by rt_arb_uv(), rt_gettrees_muves(), rt_prep_parallel(), and rt_submodel_print().

RT_EXPORT void rt_pr_region const struct region rp  ) 
 

Referenced by rt_prep_parallel().

RT_EXPORT void rt_pr_tree const union tree tp,
int  lvl
 

Referenced by db_mkgift_tree(), db_walk_dispatcher(), db_walk_subtree(), db_walk_tree(), main(), nmg_boolean(), and rt_comb_export4().

RT_EXPORT void rt_pr_tree_val const union tree tp,
const struct partition partp,
int  pr_name,
int  lvl
 

Referenced by rt_pr_tree_val().

RT_EXPORT void rt_pr_pt const struct rt_i rtip,
const struct partition pp
 

Referenced by rt_boolweave().

RT_EXPORT void rt_pr_hit const char *  str,
const struct hit hitp
 

Referenced by rt_boolweave(), and rt_hlf_uv().

RT_EXPORT void rt_get_seg struct resource res  ) 
 

RT_EXPORT void rt_cut_it struct rt_i rtip,
int  ncpu
 

RT_EXPORT void rt_pr_cut const union cutter cutp,
int  lvl
 

Referenced by rt_cell_n_on_ray(), rt_cut_it(), rt_shootray(), and rt_shootray_bundle().

RT_EXPORT void rt_fr_cut struct rt_i rtip,
union cutter cutp
 

Referenced by rt_cut_it(), and rt_fr_cut().

RT_EXPORT void rt_rebuild_overlaps struct partition PartHdp,
struct application ap,
int  rebuild_fastgen_plates_only
 

Definition at line 2204 of file bool.c.

References application::a_resource, application::a_rt_i, bu_free(), BU_LIST_APPEND, BU_LIST_DEQUEUE, bu_ptbl_cat_uniq(), BU_PTBL_CLEAR_I, BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins(), bu_ptbl_trunc(), FREE_PT, hit::hit_dist, NULL, partition::pt_forw, partition::pt_outflip, partition::pt_outhit, partition::pt_outseg, partition::pt_overlap_reg, partition::pt_regionp, partition::pt_seglist, region::reg_is_fastgen, REGION_FASTGEN_PLATE, RT_CK_AP, RT_CK_PARTITION, RT_CK_PT_HD, RT_CK_REGION, and RT_DUP_PT.

Here is the call graph for this function:

RT_EXPORT int rt_partition_len const struct partition partheadp  ) 
 

Definition at line 2047 of file bool.c.

References partition::pt_forw, partition::pt_magic, PT_NULL, and RT_CK_PT.

RT_EXPORT int rt_defoverlap struct application ap,
struct partition pp,
struct region reg1,
struct region reg2,
struct partition pheadp
 

Referenced by rt_default_multioverlap().

RT_EXPORT void rt_region_color_map struct region regp  ) 
 

RT_EXPORT void rt_color_addrec int  low,
int  hi,
int  r,
int  g,
int  b,
long  addr
 

Definition at line 87 of file mater.c.

References BU_GETSTRUCT, mater::mt_b, mater::mt_daddr, mater::mt_g, mater::mt_high, mater::mt_low, mater::mt_r, and rt_insert_color().

Referenced by db5_import_color_table(), and db_scan().

Here is the call graph for this function:

RT_EXPORT void rt_color_free  ) 
 

Definition at line 244 of file mater.c.

References bu_free(), MATER_NULL, mater::mt_forw, and rt_material_head.

Referenced by db_close().

Here is the call graph for this function:

void rt_pr_cut_info const struct rt_i rtip,
const char *  str
 

Definition at line 2226 of file cut.c.

References bu_bomb(), bu_hist_pr(), bu_log(), CUT_BOXNODE, CUT_NUGRIDNODE, rt_i::nempty_cells, cutter::nugn, RT_CK_RTI, RT_PART_NUGRID, rt_i::rti_cut_maxdepth, rt_i::rti_cut_maxlen, rt_i::rti_cut_totobj, rt_i::rti_CutHead, rt_i::rti_hist_cell_pieces, rt_i::rti_hist_cellsize, rt_i::rti_hist_cutdepth, rt_i::rti_ncut_by_type, and rt_i::rti_space_partition.

Referenced by rt_submodel_prep().

Here is the call graph for this function:

RT_EXPORT void remove_from_bsp struct soltab stp,
union cutter cutp,
struct bn_tol tol
 

Definition at line 2281 of file cut.c.

References cutter::bn, cutter::boxnode::bn_piecelen, cutter::boxnode::bn_piecelist, bu_calloc(), CUT_BOXNODE, cutter::cut_type, index, soltab::st_npieces, and rt_piecelist::stp.

Here is the call graph for this function:

RT_EXPORT void insert_in_bsp struct soltab stp,
union cutter cutp
 

Definition at line 2362 of file cut.c.

References cutter::bn, cutter::boxnode::bn_len, cutter::boxnode::bn_list, cutter::boxnode::bn_max, cutter::boxnode::bn_maxlen, cutter::boxnode::bn_min, bu_malloc(), bu_realloc(), CUT_BOXNODE, cutter::cut_type, NULL, PIECE_BLOCK, soltab::st_npieces, soltab::st_piece_rpps, rt_piecelist::stp, and V3RPP_OVERLAP.

Here is the call graph for this function:

RT_EXPORT void fill_out_bsp struct rt_i rtip,
union cutter cutp,
struct resource resp,
fastf_t  bb[6]
 

Definition at line 2459 of file cut.c.

References cutter::bn, cutter::boxnode::bn_max, cutter::boxnode::bn_min, CUT_BOXNODE, cutter::cut_type, INFINITY, rt_i::mdl_max, and rt_i::mdl_min.

RT_EXPORT void rt_cut_extend union cutter cutp,
struct soltab stp,
const struct rt_i rtip
 

Referenced by rt_cut_it().

RT_EXPORT int rt_rpp_region struct rt_i rtip,
const char *  reg_name,
fastf_t min_rpp,
fastf_t max_rpp
 

Definition at line 1263 of file tree.c.

References region::reg_treetop, REGION_NULL, rt_bound_tree(), RT_CHECK_RTI, and rt_getregion().

Referenced by db_shader_mat().

Here is the call graph for this function:

RT_EXPORT void rt_bomb const char *  s  ) 
 

Definition at line 63 of file bomb.c.

References bu_bomb(), bu_debug, BU_DEBUG_COREDUMP, and RT_G_DEBUG.

Referenced by db_ck_tree(), db_count_subtree_regions(), db_count_tree_nodes(), db_dup_path_tail(), db_dup_subtree(), db_follow_path(), db_free_tree(), db_is_tree_all_unions(), db_path_to_mat(), db_recurse_subtree(), db_tally_subtree_regions(), db_tree_nleaves(), do_grid(), heap_increase(), init_heap(), isect_ray_planar_face(), linear_pipe_shot(), nmg_2lu_identical(), nmg_add_loop_to_face(), nmg_assess_eu(), nmg_assess_vu(), nmg_boolean(), nmg_booltree_evaluate(), nmg_break_all_es_on_v(), nmg_break_eg_on_v(), nmg_break_eu_on_v(), nmg_cface(), nmg_check_radial(), nmg_check_radial_angles(), nmg_ck_e(), nmg_ck_eu(), nmg_ck_f(), nmg_ck_face_worthless_edges(), nmg_ck_fg(), nmg_ck_fu(), nmg_ck_fu_verts(), nmg_ck_hitmiss_list(), nmg_ck_l(), nmg_ck_lu(), nmg_ck_lu_orientation(), nmg_ck_lueu(), nmg_ck_v_in_2fus(), nmg_ck_vu(), nmg_ck_vu_ptbl(), nmg_class_pt_euvu(), nmg_class_pt_fu_except(), nmg_class_pt_lu_except(), nmg_class_pt_s(), nmg_class_ray_vs_shell(), nmg_classify_lu_lu(), nmg_cmface(), nmg_cnurb_is_on_crv(), nmg_cnurb_lseg_coincident(), nmg_common_v_2eg(), nmg_crackshells(), nmg_cut_loop(), nmg_decompose_shell(), nmg_demote_eu(), nmg_demote_lu(), nmg_do_bool(), nmg_dup_loop(), nmg_dup_shell(), nmg_ebreak(), nmg_edge_g(), nmg_edge_g_cnurb(), nmg_edge_g_cnurb_plinear(), nmg_edgeuse_with_eg_tabulate(), nmg_eins(), nmg_enlist_one_vu(), nmg_enlist_vu(), nmg_esplit(), nmg_eu_2vecs_perp(), nmg_eusplit(), nmg_evaluate_boolean(), nmg_extrude_cleanup(), nmg_extrude_face(), nmg_face_coincident_vu_sort(), nmg_face_g_snurb(), nmg_face_rs_init(), nmg_face_state_transition(), nmg_find_e(), nmg_find_edge_between_2fu(), nmg_find_eg_between_2fg(), nmg_find_eu_in_face(), nmg_find_eu_leftvec(), nmg_find_eu_with_vu_in_lu(), nmg_find_first_last_use_of_v_in_fu(), nmg_find_fu_of_lu(), nmg_find_fu_of_vu(), nmg_find_model(), nmg_find_pt_in_lu(), nmg_find_radial_eu(), nmg_find_s_of_eu(), nmg_find_s_of_lu(), nmg_find_v_in_shell(), nmg_findeu(), nmg_fix_decomposed_shell_normals(), nmg_flatten_face(), nmg_fu_touchingloops(), nmg_gluefaces(), nmg_hollow_shell(), nmg_insert_vu_if_on_edge(), nmg_is_crack_outie(), nmg_is_edge_in_looplist(), nmg_is_vertex_in_looplist(), nmg_isect2d_prep(), nmg_isect_edge2p_edge2p(), nmg_isect_eu_fu(), nmg_isect_line2_edge2p(), nmg_isect_two_generic_faces(), nmg_je(), nmg_jeg(), nmg_jf(), nmg_jl(), nmg_join_2loops(), nmg_join_2singvu_loops(), nmg_join_singvu_loop(), nmg_js(), nmg_keu(), nmg_kfu(), nmg_kill_cracks(), nmg_klu(), nmg_kvu(), nmg_loop_g(), nmg_lu_reorient(), nmg_make_faces_at_vert(), nmg_make_faces_within_tol(), nmg_meonvu(), nmg_merge_regions(), nmg_mf(), nmg_ml(), nmg_mlv(), nmg_model_edge_g_fuse(), nmg_model_face_fuse(), nmg_move_lu_between_fus(), nmg_mv_eu_between_shells(), nmg_mv_fu_between_shells(), nmg_mv_lu_between_shells(), nmg_mv_shell_to_region(), nmg_next_radial_eu(), nmg_pl_isect(), nmg_plot_ray_face(), nmg_polytonmg(), nmg_prev_radial_eu(), nmg_propagate_normals(), nmg_radial_find_an_original(), nmg_radial_join_eu(), nmg_radial_join_eu_NEW(), nmg_radial_mark_flips(), nmg_radial_verify_monotone(), nmg_radial_verify_pointers(), nmg_reclassify_lu_eu(), nmg_region_v_unique(), nmg_repair_v_near_v(), nmg_reverse_face(), nmg_sanitize_fu(), nmg_search_v_eg(), nmg_shell_a(), nmg_shell_coplanar_face_merge(), nmg_snurb_calc_lu_uv_orient(), nmg_snurb_fu_eval(), nmg_snurb_fu_get_norm(), nmg_snurb_fu_get_norm_at_vu(), nmg_split_trim(), nmg_triangulate_fu(), nmg_unbreak_edge(), nmg_use_edge_g(), nmg_vedge(), nmg_veg(), nmg_vertexuse_a_cnurb(), nmg_vertexuse_nv(), nmg_veu(), nmg_vface(), nmg_vfg(), nmg_vfu(), nmg_visit(), nmg_vlg(), nmg_vloop(), nmg_vlu(), nmg_vregion(), nmg_vshell(), nmg_vvertex(), nmg_vvu(), pick_eu(), rt_boolweave(), rt_cell_n_on_ray(), rt_cut_it(), rt_dist_line3_line3(), rt_ell_norms(), rt_free_soltab(), rt_gettrees_muves(), rt_grp_curve(), rt_grp_import(), rt_grp_import5(), rt_grp_norm(), rt_grp_uv(), rt_join_cnurbs(), rt_memget(), rt_nmg_ialloc(), rt_nmg_idisk(), rt_nmg_import_fastf(), rt_nmg_magic_to_kind(), rt_nmg_reindex(), rt_nmg_shot(), rt_nugrid_cut(), rt_nurb_free(), rt_nurb_kvmult(), rt_nurb_s_eval(), rt_pr_soltab(), rt_prep_parallel(), rt_shoot_many_rays_worker(), rt_shootray(), rt_shootray_bundle(), rt_tree_region_assign(), rt_tree_test_ready(), rt_weave0seg(), and tesselate_pipe_bend().

Here is the call graph for this function:

RT_EXPORT int rt_in_rpp struct xray rp,
const fastf_t invdir,
const fastf_t min,
const fastf_t max
 

Referenced by bend_pipe_shot(), nmg_isect_construct_nice_ray(), nmg_isect_ray_model(), rt_cell_n_on_ray(), rt_ebm_dda(), rt_find_backing_dist(), rt_nurb_shot(), rt_shootray(), rt_shootray_bundle(), rt_smooth_bot(), rt_vol_shot(), and shoot_and_plot().

RT_EXPORT const union cutter* rt_cell_n_on_ray struct application ap,
int  n
 

Referenced by rt_tcl_cutter().

RT_EXPORT void rt_cut_clean struct rt_i rtip  ) 
 

Definition at line 2200 of file cut.c.

References bu_free(), BU_LIST_UNINITIALIZED, BU_PTBL_FOR, bu_ptbl_free(), CUTTER_NULL, bu_ptbl::l, bu_list::magic, RT_CK_RTI, rt_i::rti_busy_cutter_nodes, rt_i::rti_CutFree, and rt_i::rti_cuts_waiting.

Here is the call graph for this function:

RT_EXPORT char* rt_read_cmd FILE *  fp  ) 
 

Referenced by rt_regionfix().

RT_EXPORT int rt_split_cmd char **  argv,
int  lim,
char *  lp
 

Referenced by rt_do_cmd().

RT_EXPORT int rt_do_cmd struct rt_i rtip,
const char *  ilp,
const struct command_tab tp
 

RT_EXPORT struct rt_wdb* wdb_fopen const char *  filename  ) 
 

Definition at line 80 of file wdb.c.

References wdb_fopen_v().

Referenced by nmg_stash_model_to_file(), and wdb_dump_cmd().

Here is the call graph for this function:

RT_EXPORT struct rt_wdb* wdb_fopen_v const char *  filename,
int  version
 

Definition at line 66 of file wdb.c.

References db_create(), DBI_NULL, NULL, resource::re_magic, RESOURCE_MAGIC, rt_init_resource(), rt_uniresource, RT_WDB_NULL, RT_WDB_TYPE_DB_DISK, and wdb_dbopen().

Referenced by wdb_fopen().

Here is the call graph for this function:

RT_EXPORT struct rt_wdb* wdb_dbopen struct db_i dbip,
int  mode
 

Definition at line 97 of file wdb.c.

References rt_tess_tol::abs, BN_TOL_MAGIC, BU_GETSTRUCT, bu_log(), bu_vls_init(), db_i::dbi_filename, db_i::dbi_read_only, db_i::dbi_wdbp, rt_wdb::dbip, bn_tol::dist, bn_tol::dist_sq, rt_wdb::l, bu_list::magic, bn_tol::magic, rt_tess_tol::magic, rt_tess_tol::norm, NULL, bn_tol::para, bn_tol::perp, resource::re_magic, rt_tess_tol::rel, RESOURCE_MAGIC, RT_CK_DBI, rt_init_resource(), RT_TESS_TOL_MAGIC, rt_uniresource, RT_WDB_MAGIC, RT_WDB_NULL, RT_WDB_TYPE_DB_DISK, RT_WDB_TYPE_DB_DISK_APPEND_ONLY, RT_WDB_TYPE_DB_INMEM, RT_WDB_TYPE_DB_INMEM_APPEND_ONLY, rt_wdb::type, rt_wdb::wdb_prestr, rt_wdb::wdb_tol, and rt_wdb::wdb_ttol.

Referenced by wdb_fopen_v().

Here is the call graph for this function:

RT_EXPORT int wdb_import struct rt_wdb wdbp,
struct rt_db_internal internp,
const char *  name,
const mat_t  mat
 

Definition at line 158 of file wdb.c.

References db_lookup(), rt_wdb::dbip, DIR_NULL, LOOKUP_QUIET, rt_db_get_internal(), and rt_uniresource.

Referenced by rt_tcl_import_from_path().

Here is the call graph for this function:

RT_EXPORT int wdb_export_external struct rt_wdb wdbp,
struct bu_external ep,
const char *  name,
int  flags,
unsigned char  minor_type
 

Definition at line 178 of file wdb.c.

References BU_CK_EXTERNAL, bu_free_external(), bu_log(), directory::d_flags, db_diradd(), db_inmem(), db_lookup(), db_put_external(), db_wrap_v4_external(), db_wrap_v5_external(), db_i::dbi_read_only, db_i::dbi_version, rt_wdb::dbip, DIR_NULL, LOOKUP_QUIET, RT_CK_WDB, RT_WDB_TYPE_DB_DISK, RT_WDB_TYPE_DB_DISK_APPEND_ONLY, RT_WDB_TYPE_DB_INMEM, RT_WDB_TYPE_DB_INMEM_APPEND_ONLY, and rt_wdb::type.

Referenced by db_create_inmem(), nmg_stash_model_to_file(), and wdb_put_internal().

Here is the call graph for this function:

RT_EXPORT int wdb_put_internal struct rt_wdb wdbp,
const char *  name,
struct rt_db_internal ip,
double  local2mm
 

Definition at line 305 of file wdb.c.

References BU_CK_EXTERNAL, bu_free_external(), BU_INIT_EXTERNAL, bu_log(), db_flags_internal(), db_wrap_v4_external(), db_i::dbi_version, rt_wdb::dbip, flags, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, RT_CK_DB_INTERNAL, RT_CK_WDB, rt_db_cvt_to_external5(), rt_db_free_internal(), rt_uniresource, and wdb_export_external().

Referenced by wdb_adjust_cmd(), wdb_bot_decimate_cmd(), wdb_export(), and wdb_node_write().

Here is the call graph for this function:

RT_EXPORT int wdb_export struct rt_wdb wdbp,
const char *  name,
genptr_t  gp,
int  id,
double  local2mm
 

Definition at line 367 of file wdb.c.

References bu_log(), DB5_MAJORTYPE_BRLCAD, ID_COMBINATION, ID_MAX_SOLID, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, RT_CK_WDB, RT_INIT_DB_INTERNAL, and wdb_put_internal().

Here is the call graph for this function:

RT_EXPORT void wdb_close struct rt_wdb wdbp  ) 
 

Definition at line 399 of file wdb.c.

References bu_free(), bu_vls_free(), db_close(), rt_wdb::dbip, RT_CK_WDB, and rt_wdb::wdb_prestr.

Referenced by nmg_stash_model_to_file(), wdb_deleteProc(), and wdb_dump_cmd().

Here is the call graph for this function:

RT_EXPORT struct animate * db_parse_1anim struct db_i dbip,
int  argc,
const char **  argv
 

Referenced by db_parse_anim().

RT_EXPORT int db_parse_anim struct db_i dbip,
int  argc,
const char **  argv
 

D B _ P A R S E _ A N I M

A common parser for mged and rt. Experimental. Not the best name for this.

Definition at line 451 of file db_anim.c.

References animate::an_path, db_add_anim(), db_parse_1anim(), and db_full_path::fp_len.

Here is the call graph for this function:

RT_EXPORT int db_add_anim struct db_i dbip,
struct animate anp,
int  root
 

Referenced by db_parse_anim().

RT_EXPORT int db_do_anim struct animate anp,
mat_t  stack,
mat_t  arc,
struct mater_info materp
 

Referenced by db_follow_path().

RT_EXPORT void db_free_anim struct db_i dbip  ) 
 

Referenced by db_close().

RT_EXPORT void db_write_anim FILE *  fop,
struct animate anp
 

Definition at line 473 of file db_anim.c.

References animate::an_path, animate::an_type, animate::an_u, ANM_LMUL, anim_mat::anm_mat, anim_mat::anm_op, ANM_RARC, ANM_RBOTH, ANM_RMUL, ANM_RSTACK, animate::animate_specific::anu_m, bu_free(), bu_log(), db_path_to_string(), DEBUG_ANIM, RT_AN_MATRIX, RT_CK_ANIMATE, and RT_G_DEBUG.

Here is the call graph for this function:

RT_EXPORT void db_free_1anim struct animate anp  ) 
 

D B _ F R E E _ 1 A N I M

Free one animation structure

Definition at line 248 of file db_anim.c.

References animate::an_path, animate::an_type, animate::an_u, rt_anim_property::anp_shader, animate::animate_specific::anu_p, bu_free(), bu_vls_free(), db_free_full_path(), RT_AN_MATERIAL, and RT_CK_ANIMATE.

Referenced by db_free_anim().

Here is the call graph for this function:

RT_EXPORT void db_full_path_init struct db_full_path pathp  ) 
 

D B _ F U L L _ P A T H _ I N I T

Definition at line 67 of file db_path.c.

References DB_FULL_PATH_MAGIC, db_full_path::fp_len, db_full_path::fp_maxlen, db_full_path::fp_names, db_full_path::magic, and NULL.

Referenced by db_dup_combined_tree_state(), db_new_combined_tree_state(), db_parse_1anim(), db_path_to_mat(), db_string_to_path(), db_walk_tree(), rt_find_paths(), rt_tcl_import_from_path(), and wdb_get_obj_bounds().

RT_EXPORT void db_add_node_to_full_path struct db_full_path pp,
struct directory dp
 

D B _ A D D _ N O D E _ T O _ F U L L _ P A T H

Definition at line 79 of file db_path.c.

References bu_malloc(), db_full_path::fp_len, db_full_path::fp_maxlen, db_full_path::fp_names, RT_CK_FULL_PATH, and rt_realloc.

Referenced by db_apply_state_from_memb(), db_follow_path(), dgo_invent_solid(), and rt_find_paths().

Here is the call graph for this function:

RT_EXPORT void db_dup_full_path struct db_full_path newp,
const struct db_full_path oldp
 

Referenced by db_dup_combined_tree_state(), db_new_combined_tree_state(), and dgo_drawH_part2().

RT_EXPORT void db_extend_full_path struct db_full_path pathp,
int  incr
 

D B _ E X T E N D _ F U L L _ P A T H

Extend "pathp" so that it can grow from current fp_len by incr more names.

This is intended primarily as an internal method.

Definition at line 128 of file db_path.c.

References bu_malloc(), db_full_path::fp_len, db_full_path::fp_maxlen, db_full_path::fp_names, RT_CK_FULL_PATH, and rt_realloc.

Referenced by db_append_full_path().

Here is the call graph for this function:

RT_EXPORT void db_append_full_path struct db_full_path dest,
const struct db_full_path src
 

D B _ A P P E N D _ F U L L _ P A T H

Definition at line 157 of file db_path.c.

References bcopy, db_extend_full_path(), db_full_path::fp_len, db_full_path::fp_names, and RT_CK_FULL_PATH.

Here is the call graph for this function:

RT_EXPORT void db_dup_path_tail struct db_full_path newp,
const struct db_full_path oldp,
int  start
 

RT_EXPORT char* db_path_to_string const struct db_full_path pp  ) 
 

D B _ P A T H _ T O _ S T R I N G

Unlike rt_path_str(), this version can be used in parallel. Caller is responsible for freeing the returned buffer.

Definition at line 201 of file db_path.c.

References bu_malloc(), directory::d_namep, db_full_path::fp_len, db_full_path::fp_names, and RT_CK_FULL_PATH.

Referenced by db_apply_anims(), db_apply_state_from_comb(), db_apply_state_from_memb(), db_do_anim(), db_follow_path(), db_pr_combined_tree_state(), db_pr_full_path(), db_recurse(), db_walk_subtree(), db_write_anim(), rt_pr_tree_str(), rt_pr_tree_vls(), rt_reprep(), rt_submodel_wireframe_leaf(), and rt_tcl_pr_hit().

Here is the call graph for this function:

RT_EXPORT void db_path_to_vls struct bu_vls str,
const struct db_full_path pp
 

D B _ P A T H _ T O _ V L S

Append a string representation of the path onto the vls. Must have exactly the same formattting conventions as db_path_to_string().

Definition at line 241 of file db_path.c.

References BU_CK_VLS, bu_vls_putc(), bu_vls_strcat(), directory::d_namep, db_full_path::fp_len, db_full_path::fp_names, and RT_CK_FULL_PATH.

Here is the call graph for this function:

RT_EXPORT void db_pr_full_path const char *  msg,
const struct db_full_path pathp
 

D B _ P R _ F U L L _ P A T H

Definition at line 261 of file db_path.c.

References bu_free(), bu_log(), and db_path_to_string().

Here is the call graph for this function:

RT_EXPORT int db_string_to_path struct db_full_path pp,
const struct db_i dbip,
const char *  str
 

D B _ S T R I N G _ T O _ P A T H

Reverse the effects of db_path_to_string().

The db_full_path structure will be initialized. If it was already in use, user should call db_free_full_path() first.

Returns - -1 One or more components of path did not exist in the directory. 0 OK

Definition at line 282 of file db_path.c.

References BU_ASSERT_LONG, bu_free(), bu_log(), bu_malloc(), bu_strdup, db_full_path_init(), DB_FULL_PATH_MAGIC, db_lookup(), DIR_NULL, db_full_path::fp_len, db_full_path::fp_maxlen, db_full_path::fp_names, LOOKUP_NOISY, db_full_path::magic, NULL, and RT_CK_DBI.

Referenced by db_follow_path_for_state(), db_region_mat(), dgo_E_cmd(), rt_tcl_import_from_path(), and wdb_get_obj_bounds().

Here is the call graph for this function:

RT_EXPORT int db_argv_to_path register struct db_full_path pp,
struct db_i dbip,
int  argc,
const char *const *  argv
 

D B _ A R G V _ T O _ P A T H

Treat elements from argv[0] to argv[argc-1] as a path specification.

The path structure will be fully initialized. If it was already in use, user should call db_free_full_path() first.

Returns - -1 One or more components of path did not exist in the directory. 0 OK

Definition at line 361 of file db_path.c.

References bu_log(), bu_malloc(), DB_FULL_PATH_MAGIC, db_lookup(), DIR_NULL, LOOKUP_NOISY, and RT_CK_DBI.

Here is the call graph for this function:

RT_EXPORT void db_free_full_path struct db_full_path pp  ) 
 

Referenced by db_follow_path_for_state(), db_free_1anim(), db_free_combined_tree_state(), db_path_to_mat(), db_region_mat(), db_walk_tree(), dgo_E_cmd(), rt_find_paths(), rt_free_soltab(), rt_tcl_import_from_path(), rt_unprep(), and wdb_get_obj_bounds().

RT_EXPORT int db_identical_full_paths const struct db_full_path a,
const struct db_full_path b
 

D B _ I D E N T I C A L _ F U L L _ P A T H S

Returns - 1 match 0 different

Definition at line 414 of file db_path.c.

References db_full_path::fp_len, db_full_path::fp_names, and RT_CK_FULL_PATH.

RT_EXPORT int db_full_path_subset const struct db_full_path a,
const struct db_full_path b
 

D B _ F U L L _ P A T H _ S U B S E T

Returns - 1 if 'b' is a proper subset of 'a' 0 if not.

Definition at line 439 of file db_path.c.

References db_full_path::fp_len, db_full_path::fp_names, and RT_CK_FULL_PATH.

RT_EXPORT int db_full_path_search const struct db_full_path a,
const struct directory dp
 

D B _ F U L L _ P A T H _ S E A R C H

Returns - 1 'dp' is found on this path 0 not found

Definition at line 478 of file db_path.c.

References db_full_path::fp_len, db_full_path::fp_names, RT_CK_DIR, and RT_CK_FULL_PATH.

RT_EXPORT void db_sync struct db_i dbip  ) 
 

D B _ S Y N C

Ensure that the on-disk database has been completely written out of the operating system's cache.

Definition at line 450 of file db_open.c.

References BU_SEM_SYSCALL, bu_semaphore_acquire(), bu_semaphore_release(), db_i::dbi_fd, db_i::dbi_fp, RT_CK_DBI, and void().

Referenced by db_close(), and wdb_concat_cmd().

Here is the call graph for this function:

RT_EXPORT struct db_i* db_open const char *  name,
const char *  mode
 

D B _ O P E N

Open the named database. The 'mode' parameter specifies read-only or read-write mode.

As a convenience, dbi_filepath is a C-style argv array of dirs to search when attempting to open related files (such as data files for EBM solids or texture-maps). The default values are "." and the directory containing the ".g" file. They may be overriden by setting the environment variable BRLCAD_FILE_PATH.

Returns: DBI_NULL error db_i * success

Definition at line 97 of file db_open.c.

References bu_mapped_file::apbuf, bu_dirname(), bu_free(), BU_GETSTRUCT, bu_log(), bu_malloc(), bu_open_mapped_file(), bu_ptbl_init(), bu_strdup, bu_mapped_file::buf, bu_mapped_file::buflen, db_get_version(), db_i::dbi_base2local, db_i::dbi_clients, db_i::dbi_eof, db_i::dbi_fd, db_i::dbi_filename, db_i::dbi_filepath, db_i::dbi_fp, db_i::dbi_Head, db_i::dbi_inmem, db_i::dbi_local2base, db_i::dbi_magic, DBI_MAGIC, db_i::dbi_mf, DBI_NULL, db_i::dbi_read_only, db_i::dbi_title, db_i::dbi_uses, db_i::dbi_version, DEBUG_DB, DIR_NULL, NULL, RT_CK_DBI, RT_DBNHASH, and RT_G_DEBUG.

Referenced by db_create(), main(), rt_dirbuild(), rt_submodel_plot(), rt_submodel_prep(), wdb_concat_cmd(), wdb_dup_cmd(), and wdb_prep_dbip().

Here is the call graph for this function:

RT_EXPORT struct db_i* db_create const char *  name,
int  version
 

D B _ C R E A T E

Create a new database containing just a header record, regardless of whether the database previously existed or not, and open it for reading and writing.

New in BRL-CAD Release 6.0 is that this routine also calls db_dirbuild(), so the caller shouldn't.

Returns: DBI_NULL error db_i * success

Definition at line 219 of file db_open.c.

References bu_log(), db5_fwrite_ident(), db_dirbuild(), db_fwrite_ident(), db_open(), DBI_NULL, DEBUG_DB, DEFAULT_DB_TITLE, fp, NULL, perror(), RT_G_DEBUG, and void().

Referenced by wdb_fopen_v(), and wdb_prep_dbip().

Here is the call graph for this function:

RT_EXPORT void db_close_client struct db_i dbip,
long *  client
 

Referenced by rt_free_rti().

RT_EXPORT void db_close struct db_i dbip  ) 
 

Referenced by db_close_client(), rt_dirbuild(), rt_submodel_plot(), rt_submodel_prep(), wdb_close(), wdb_concat_cmd(), wdb_dup_cmd(), and wdb_reopen_cmd().

RT_EXPORT int db_dump struct rt_wdb wdbp,
struct db_i dbip
 

D B _ D U M P

Dump a full copy of one database into another. This is a good way of committing a ".inmem" database to a ".g" file. The input is a database instance, the output is a LIBWDB object, which could be a disk file or another database instance.

Returns - -1 error 0 success

Definition at line 394 of file db_open.c.

References bu_log(), directory::d_forw, directory::d_namep, db_get_external(), db_i::dbi_Head, DIR_NULL, RT_CK_DBI, RT_CK_DIR, RT_CK_WDB, and RT_DBNHASH.

Referenced by wdb_dump_cmd().

Here is the call graph for this function:

RT_EXPORT struct db_i* db_clone_dbi struct db_i dbip,
long *  client
 

RT_EXPORT int db5_write_free struct db_i dbip,
struct directory dp,
long  length
 

D B 5 _ W R I T E _ F R E E

Create a v5 database "free" object of the specified size, and place it at the indicated location in the database.

There are two interesting cases:

  • The free object is "small". Just write it all at once.
  • The free object is "large". Write header and trailer separately

Returns:
0 OK

-1 Fail. This is a horrible error.

Definition at line 76 of file db5_alloc.c.

References bcopy, bu_free_external(), BU_INIT_EXTERNAL, directory::d_flags, directory::d_un, db5_make_free_object(), db5_make_free_object_hdr(), DB5HDR_MAGIC2, db_write(), bu_external::ext_buf, bu_external::ext_nbytes, directory::ptr, RT_CK_DBI, RT_CK_DIR, and RT_DIR_INMEM.

Referenced by db5_realloc(), and db_delete().

Here is the call graph for this function:

RT_EXPORT int db5_realloc struct db_i dbip,
struct directory dp,
struct bu_external ep
 

D B 5 _ R E A L L O C

Change the size of a v5 database object.

If the object is getting smaller, break it into two pieces, and write out free objects for both. The caller is expected to re-write new data on the first one.

If the object is getting larger, seek a suitable "hole" large enough to hold it, throwing back any surplus, properly marked.

If the object is getting larger and there is no suitable "hole" in the database, extend the file, write a free object in the new space, and write a free object in the old space.

There is no point to trying to extend in place, that would require two searches through the memory map, and doesn't save any disk I/O.

Returns - 0 OK -1 Failure

Definition at line 154 of file db5_alloc.c.

References BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_log(), bu_malloc(), bu_realloc(), directory::d_flags, directory::d_len, directory::d_namep, directory::d_un, db5_write_free(), db_i::dbi_eof, db_i::dbi_freep, db_i::dbi_read_only, DEBUG_DB, bu_external::ext_nbytes, mem_map::m_addr, mem_map::m_size, MAP_NULL, directory::ptr, RT_CK_DBI, RT_CK_DIR, RT_DIR_INMEM, RT_G_DEBUG, rt_memalloc_nosplit(), and rt_memfree().

Referenced by db_put_external5(), and rt_db_put_internal5().

Here is the call graph for this function:

RT_EXPORT void db5_export_object3 struct bu_external out,
int  dli,
const char *  name,
const unsigned char  hidden,
const struct bu_external attrib,
const struct bu_external body,
int  major,
int  minor,
int  a_zzz,
int  b_zzz
 

D B 5 _ E X P O R T _ O B J E C T 3

A routine for merging together the three optional parts of an object into the final on-disk format. Results in extra data copies, but serves as a starting point for testing. Any of name, attrib, and body may be null.

Definition at line 480 of file db5_io.c.

References bcopy, body, BU_ASSERT_LONG, BU_ASSERT_PTR, bu_bomb(), BU_CK_EXTERNAL, BU_EXTERNAL_MAGIC, bu_malloc(), db5_enc_len, db5_encode_length(), db5_select_length_encoding(), db5_ondisk_header::db5h_aflags, db5_ondisk_header::db5h_bflags, db5_ondisk_header::db5h_hflags, db5_ondisk_header::db5h_magic1, db5_ondisk_header::db5h_major_type, db5_ondisk_header::db5h_minor_type, DB5HDR_AFLAGS_PRESENT, DB5HDR_AFLAGS_WIDTH_SHIFT, DB5HDR_AFLAGS_ZZZ_MASK, DB5HDR_BFLAGS_PRESENT, DB5HDR_BFLAGS_WIDTH_SHIFT, DB5HDR_BFLAGS_ZZZ_MASK, DB5HDR_HFLAGS_DLI_MASK, DB5HDR_HFLAGS_HIDDEN_OBJECT, DB5HDR_HFLAGS_NAME_PRESENT, DB5HDR_HFLAGS_NAME_WIDTH_SHIFT, DB5HDR_HFLAGS_OBJECT_WIDTH_SHIFT, DB5HDR_MAGIC1, DB5HDR_MAGIC2, bu_external::ext_buf, bu_external::ext_magic, bu_external::ext_nbytes, and NULL.

Referenced by db5_fwrite_ident(), db5_replace_attributes(), db5_update_attributes(), db5_update_ident(), db_create_inmem(), and db_wrap_v5_external().

Here is the call graph for this function:

RT_EXPORT int rt_db_cvt_to_external5 struct bu_external ext,
const char *  name,
const struct rt_db_internal ip,
double  conv2mm,
struct db_i dbip,
struct resource resp,
const int  major
 

R T _ D B _ C V T _ T O _ E X T E R N A L 5

The attributes are taken from ip->idb_avs

If present, convert attributes to on-disk format. This must happen after exporting the body, in case the ft_export5() method happened to extend the attribute set. Combinations are one "solid" which does this.

The internal representation is NOT freed, that's the caller's job.

The 'ext' pointer is accepted in uninitialized form, and an initialized structure is always returned, so that the caller may free it even when an error return is given.

Returns - 0 OK -1 FAIL

Definition at line 1213 of file db5_io.c.

References body, bu_free_external(), BU_INIT_EXTERNAL, bu_log(), rt_db_internal::idb_meth, RT_CK_DB_INTERNAL, RT_CK_DBI, and RT_CK_RESOURCE.

Referenced by nmg_stash_model_to_file(), rt_db_put_internal5(), and wdb_put_internal().

Here is the call graph for this function:

RT_EXPORT int db_wrap_v5_external struct bu_external ep,
const char *  name
 

Definition at line 1268 of file db5_io.c.

References db5_raw_internal::a_zzz, db5_raw_internal::attributes, db5_raw_internal::b_zzz, db5_raw_internal::body, BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_free_external(), BU_INIT_EXTERNAL, bu_log(), db5_export_object3(), db5_get_raw_internal_ptr(), DB5HDR_HFLAGS_DLI_APPLICATION_DATA_OBJECT, bu_external::ext_buf, db5_raw_internal::h_dli, db5_raw_internal::h_name_hidden, db5_raw_internal::major_type, db5_raw_internal::minor_type, db5_raw_internal::name, and NULL.

Referenced by db_put_external5(), and wdb_export_external().

Here is the call graph for this function:

RT_EXPORT int rt_db_get_internal5 struct rt_db_internal ip,
const struct directory dp,
const struct db_i dbip,
const mat_t  mat,
struct resource resp
 

R T _ D B _ G E T _ I N T E R N A L 5

Get an object from the database, and convert it into it's internal representation.

Applications and middleware shouldn't call this directly, they should use the generic interface "rt_db_get_internal()".

Returns - <0 On error id On success.

Definition at line 1553 of file db5_io.c.

References BU_ASSERT_LONG, bu_free_external(), BU_INIT_EXTERNAL, directory::d_namep, db_get_external(), db_i::dbi_version, rt_db_external5_to_internal5(), and RT_INIT_DB_INTERNAL.

Referenced by db_functree(), db_preorder_traverse(), rt_db_get_internal(), and rt_retrieve_binunif().

Here is the call graph for this function:

RT_EXPORT int rt_db_put_internal5 struct directory dp,
struct db_i dbip,
struct rt_db_internal ip,
struct resource resp,
const int  major
 

R T _ D B _ P U T _ I N T E R N A L 5

Convert the internal representation of a solid to the external one, and write it into the database.

Applications and middleware shouldn't call this directly, they should use the version-generic interface "rt_db_put_internal()".

The internal representation is always freed. (Not the pointer, just the contents).

Returns - <0 error 0 success

Definition at line 1395 of file db5_io.c.

References bcopy, BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_free_external(), bu_log(), directory::d_flags, directory::d_len, directory::d_namep, directory::d_un, db5_realloc(), db_write(), db_i::dbi_version, bu_external::ext_buf, bu_external::ext_nbytes, directory::ptr, RT_CK_DB_INTERNAL, RT_CK_DBI, RT_CK_DIR, RT_CK_RESOURCE, rt_db_cvt_to_external5(), rt_db_free_internal(), and RT_DIR_INMEM.

Referenced by rt_db_put_internal().

Here is the call graph for this function:

RT_EXPORT void db5_make_free_object_hdr struct bu_external ep,
long  length
 

D B 5 _ M A K E _ F R E E _ O B J E C T _ H D R

Make only the front (header) portion of a free object. This is used when operating on very large contiguous free objects in the database (e.g. 50 MBytes).

Definition at line 639 of file db5_io.c.

References BU_ASSERT_LONG, bu_calloc(), BU_CK_EXTERNAL, db5_encode_length(), db5_select_length_encoding(), db5_ondisk_header::db5h_hflags, db5_ondisk_header::db5h_magic1, DB5HDR_HFLAGS_DLI_FREE_STORAGE, DB5HDR_HFLAGS_OBJECT_WIDTH_SHIFT, DB5HDR_MAGIC1, bu_external::ext_buf, and bu_external::ext_nbytes.

Referenced by db5_write_free().

Here is the call graph for this function:

RT_EXPORT void db5_make_free_object struct bu_external ep,
long  length
 

D B 5 _ M A K E _ F R E E _ O B J E C T

Make a complete, zero-filled, free object. Note that free objects can sometimes get quite large.

Definition at line 674 of file db5_io.c.

References BU_ASSERT_LONG, bu_calloc(), BU_CK_EXTERNAL, db5_encode_length(), db5_select_length_encoding(), db5_ondisk_header::db5h_hflags, db5_ondisk_header::db5h_magic1, DB5HDR_HFLAGS_DLI_FREE_STORAGE, DB5HDR_HFLAGS_OBJECT_WIDTH_SHIFT, DB5HDR_MAGIC1, DB5HDR_MAGIC2, bu_external::ext_buf, and bu_external::ext_nbytes.

Referenced by db5_write_free().

Here is the call graph for this function:

RT_EXPORT int db5_decode_signed long *  lenp,
const unsigned char *  cp,
int  format
 

Referenced by rt_comb_import5().

RT_EXPORT int db5_decode_length long *  lenp,
const unsigned char *  cp,
int  format
 

Referenced by db5_get_raw_internal_fp(), db5_get_raw_internal_ptr(), and rt_comb_import5().

RT_EXPORT int db5_select_length_encoding long  len  ) 
 

Referenced by db5_export_object3(), db5_make_free_object(), db5_make_free_object_hdr(), and rt_comb_export5().

RT_EXPORT void db5_import_color_table char *  cp  ) 
 

D B 5 _ I M P O R T _ C O L O R _ T A B L E

Definition at line 1602 of file db5_io.c.

References NULL, and rt_color_addrec().

Referenced by db_dirbuild().

Here is the call graph for this function:

RT_EXPORT int db5_import_attributes struct bu_attribute_value_set avs,
const struct bu_external ap
 

D B 5 _ I M P O R T _ A T T R I B U T E S

Convert the on-disk encoding into a handy easy-to-use bu_attribute_value_set structure. Take advantage of the readonly_min/readonly_max capability so that we don't have to bu_strdup() each string, but can simply point to it in the provided buffer *ap. Important implication: don't free *ap until you're done with this avs.

The upshot of this is that bu_avs_add() and bu_avs_remove() can be safely used with this *avs.

Returns - >0 count of attributes successfully imported -1 Error, mal-formed input

Definition at line 722 of file db5_io.c.

References bu_attribute_value_set::avp, BU_ASSERT_LONG, BU_ASSERT_PTR, bu_avs_add(), bu_avs_init(), bu_avs_print(), BU_CK_EXTERNAL, bu_debug, BU_DEBUG_AVS, bu_log(), bu_attribute_value_set::count, bu_external::ext_buf, bu_external::ext_nbytes, bu_attribute_value_set::max, name, bu_attribute_value_pair::name, bu_attribute_value_set::readonly_max, bu_attribute_value_set::readonly_min, and bu_attribute_value_pair::value.

Referenced by db5_diradd(), db5_get_attributes(), db5_update_attributes(), db_dirbuild(), db_flags_raw_internal(), and rt_db_external5_to_internal5().

Here is the call graph for this function:

RT_EXPORT void db5_export_attributes struct bu_external ext,
const struct bu_attribute_value_set avs
 

D B 5 _ E X P O R T _ A T T R I B U T E S

Encode the attribute-value pair information into the external on-disk format.

The on-disk encoding is:

aname1 NULL value1 NULL ... anameN NULL valueN NULL NULL

'ext' is initialized on behalf of the caller.

Definition at line 820 of file db5_io.c.

References bu_attribute_value_set::avp, bu_avs_print(), BU_CK_AVS, bu_debug, BU_DEBUG_AVS, BU_INIT_EXTERNAL, bu_attribute_value_set::count, bu_attribute_value_pair::name, and bu_attribute_value_pair::value.

Referenced by db5_fwrite_ident(), db5_replace_attributes(), db5_update_attributes(), and db_create_inmem().

Here is the call graph for this function:

RT_EXPORT int db5_get_raw_internal_fp struct db5_raw_internal rip,
FILE *  fp
 

D B 5 _ G E T _ R A W _ I N T E R N A L _ F P

Returns - 0 on success -1 on EOF -2 on error

Definition at line 374 of file db5_io.c.

References db5_raw_internal::a_present, db5_raw_internal::a_width, db5_raw_internal::attributes, db5_raw_internal::b_present, db5_raw_internal::b_width, bcopy, db5_raw_internal::body, BU_ASSERT_LONG, BU_INIT_EXTERNAL, bu_log(), bu_malloc(), db5_raw_internal::buf, db5_crack_disk_header(), db5_decode_length(), DB5HDR_MAGIC2, DB5HDR_WIDTHCODE_16BIT, DB5HDR_WIDTHCODE_32BIT, DB5HDR_WIDTHCODE_64BIT, DB5HDR_WIDTHCODE_8BIT, bu_external::ext_buf, bu_external::ext_nbytes, db5_raw_internal::h_name_present, db5_raw_internal::h_name_width, db5_raw_internal::h_object_width, db5_raw_internal::name, and db5_raw_internal::object_length.

Referenced by db5_scan().

Here is the call graph for this function:

RT_EXPORT int db5_header_is_valid const unsigned char *  hp  ) 
 

D B 5 _ H E A D E R _ I S _ V A L I D

Verify that this is a valid header for a BRL-CAD v5 database.

Returns - 0 Not valid v5 header 1 Valid v5 header

Definition at line 79 of file db5_io.c.

References DB5_MAJORTYPE_RESERVED, DB5_ZZZ_UNCOMPRESSED, db5_ondisk_header::db5h_aflags, db5_ondisk_header::db5h_bflags, db5_ondisk_header::db5h_hflags, db5_ondisk_header::db5h_magic1, db5_ondisk_header::db5h_major_type, db5_ondisk_header::db5h_minor_type, DB5HDR_AFLAGS_PRESENT, DB5HDR_AFLAGS_WIDTH_MASK, DB5HDR_AFLAGS_WIDTH_SHIFT, DB5HDR_AFLAGS_ZZZ_MASK, DB5HDR_BFLAGS_PRESENT, DB5HDR_BFLAGS_WIDTH_MASK, DB5HDR_BFLAGS_WIDTH_SHIFT, DB5HDR_BFLAGS_ZZZ_MASK, DB5HDR_HFLAGS_DLI_HEADER_OBJECT, DB5HDR_HFLAGS_DLI_MASK, DB5HDR_HFLAGS_NAME_PRESENT, DB5HDR_HFLAGS_OBJECT_WIDTH_MASK, DB5HDR_HFLAGS_OBJECT_WIDTH_SHIFT, DB5HDR_MAGIC1, DB5HDR_MAGIC2, and DB5HDR_WIDTHCODE_8BIT.

Referenced by db5_scan(), db_dirbuild(), and db_get_version().

RT_EXPORT int db5_fwrite_ident FILE *  fp,
const char *  title,
double  local2mm
 

D B 5 _ F W R I T E _ I D E N T

Create a header for a v5 database. This routine has the same calling sequence as db_fwrite_ident() which makes a v4 database header.

In the v5 database, two database objects must be created to match the semantics of what was in the v4 header:

First, a database header object.

Second, create a specially named attribute-only object which contains the attributes "title=" and "units=".

This routine should only be used by db_create(). Everyone else should use db5_update_ident().

Returns - 0 Success -1 Fatal Error

Definition at line 1140 of file db5_io.c.

References bu_avs_add(), bu_avs_free(), bu_avs_init(), bu_free_external(), bu_fwrite_external(), bu_log(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db5_export_attributes(), db5_export_object3(), DB5_GLOBAL_OBJECT_NAME, DB5_MAJORTYPE_ATTRIBUTE_ONLY, DB5_MAJORTYPE_RESERVED, DB5_ZZZ_UNCOMPRESSED, DB5HDR_HFLAGS_DLI_APPLICATION_DATA_OBJECT, DB5HDR_HFLAGS_DLI_HEADER_OBJECT, DB5HDR_HFLAGS_HIDDEN_OBJECT, NULL, and units.

Referenced by db_create().

Here is the call graph for this function:

RT_EXPORT int db5_put_color_table struct db_i dbip  ) 
 

D B 5 _ P U T _ C O L O R _ T A B L E

Put the old region-id-color-table into the global object. A null attribute is set if the material table is empty.

Returns - <0 error 0 OK

Definition at line 1625 of file db5_io.c.

References BU_ASSERT_LONG, bu_vls_addr(), bu_vls_free(), bu_vls_init(), db5_export_color_table(), DB5_GLOBAL_OBJECT_NAME, db5_update_attribute(), db_i::dbi_version, and RT_CK_DBI.

Here is the call graph for this function:

RT_EXPORT int db5_update_ident struct db_i dbip,
const char *  title,
double  local2mm
 

D B 5 _ U P D A T E _ I D E N T

Update the _GLOBAL object, which in v5 serves the place of the "ident" header record in v4 as the place to stash global information. Since every database will have one of these things, it's no problem to update it.

Returns - 0 Success -1 Fatal Error

Definition at line 1060 of file db5_io.c.

References bu_avs_add(), bu_avs_init(), bu_free(), bu_free_external(), bu_log(), bu_strdup, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_major_type, db5_export_object3(), DB5_GLOBAL_OBJECT_NAME, DB5_MAJORTYPE_ATTRIBUTE_ONLY, db5_update_attributes(), DB5_ZZZ_UNCOMPRESSED, DB5HDR_HFLAGS_DLI_APPLICATION_DATA_OBJECT, DB5HDR_HFLAGS_HIDDEN_OBJECT, db_diradd(), db_lookup(), db_put_external(), db_i::dbi_title, DIR_NULL, LOOKUP_QUIET, NULL, RT_CK_DBI, and units.

Referenced by db_dirbuild(), and db_update_ident().

Here is the call graph for this function:

RT_EXPORT int db_put_external5 struct bu_external ep,
struct directory dp,
struct db_i dbip
 

D B _ P U T _ E X T E R N A L 5

Given that caller already has an external representation of the database object, update it to have a new name (taken from dp->d_namep) in that external representation, and write the new object into the database, obtaining different storage if the size has changed.

Changing the name on a v5 object is a relatively expensive operation.

Caller is responsible for freeing memory of external representation, using bu_free_external().

This routine is used to efficiently support MGED's "cp" and "keep" commands, which don't need to import and decompress objects just to rename and copy them.

Returns - -1 error 0 success

Definition at line 1334 of file db5_io.c.

References bcopy, BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_log(), directory::d_flags, directory::d_len, directory::d_namep, directory::d_un, db5_realloc(), db_wrap_v5_external(), db_write(), db_i::dbi_filename, db_i::dbi_read_only, db_i::dbi_version, DEBUG_DB, bu_external::ext_buf, bu_external::ext_nbytes, directory::ptr, RT_CK_DBI, RT_CK_DIR, RT_DIR_INMEM, and RT_G_DEBUG.

Referenced by db5_replace_attributes(), db5_update_attributes(), and db_put_external().

Here is the call graph for this function:

RT_EXPORT int db5_update_attributes struct directory dp,
struct bu_attribute_value_set avsp,
struct db_i dbip
 

D B 5 _ U P D A T E _ A T T R I B U T E S

Update an arbitrary number of attributes on a given database object. For efficiency, this is done without looking at the object body at all.

Contents of the bu_attribute_value_set are freed, but not the struct itself.

Returns - 0 on success <0 on error

Definition at line 949 of file db5_io.c.

References db5_raw_internal::a_zzz, db5_raw_internal::attributes, db5_raw_internal::b_zzz, db5_raw_internal::body, BU_ASSERT_LONG, bu_avs_free(), bu_avs_init(), bu_avs_merge(), bu_avs_print(), BU_CK_AVS, bu_free_external(), BU_INIT_EXTERNAL, bu_log(), directory::d_namep, db5_export_attributes(), db5_export_object3(), db5_get_raw_internal_ptr(), db5_import_attributes(), db_get_external(), db_put_external5(), db_i::dbi_filename, db_i::dbi_read_only, db_i::dbi_version, DEBUG_DB, bu_external::ext_buf, db5_raw_internal::h_dli, db5_raw_internal::h_name_hidden, db5_raw_internal::major_type, db5_raw_internal::minor_type, NULL, RT_CK_DBI, RT_CK_DIR, and RT_G_DEBUG.

Referenced by db5_update_attribute(), and db5_update_ident().

Here is the call graph for this function:

RT_EXPORT int db5_update_attribute const char *  obj_name,
const char *  aname,
const char *  value,
struct db_i dbip
 

D B 5 _ U P D A T E _ A T T R I B U T E

A convenience routine to update the value of a single attribute.

Returns - 0 on success <0 on error

Definition at line 1033 of file db5_io.c.

References bu_avs_add(), bu_avs_init(), db5_update_attributes(), db_lookup(), DIR_NULL, LOOKUP_NOISY, and RT_CK_DBI.

Referenced by db5_put_color_table(), and wdb_color_cmd().

Here is the call graph for this function:

RT_EXPORT int db5_replace_attributes struct directory dp,
struct bu_attribute_value_set avsp,
struct db_i dbip
 

D B 5 _ R E P L A C E _ A T T R I B U T E S

Replace the attributes of a given database object. For efficiency, this is done without looking at the object body at all.

Contents of the bu_attribute_value_set are freed, but not the struct itself.

Returns - 0 on success <0 on error

Definition at line 876 of file db5_io.c.

References db5_raw_internal::a_zzz, db5_raw_internal::b_zzz, db5_raw_internal::body, BU_ASSERT_LONG, bu_avs_free(), bu_avs_print(), BU_CK_AVS, bu_free_external(), BU_INIT_EXTERNAL, bu_log(), directory::d_namep, db5_export_attributes(), db5_export_object3(), db5_get_raw_internal_ptr(), db_get_external(), db_put_external5(), db_i::dbi_filename, db_i::dbi_read_only, db_i::dbi_version, DEBUG_DB, bu_external::ext_buf, db5_raw_internal::h_dli, db5_raw_internal::h_name_hidden, db5_raw_internal::major_type, db5_raw_internal::minor_type, NULL, RT_CK_DBI, RT_CK_DIR, and RT_G_DEBUG.

Here is the call graph for this function:

RT_EXPORT int db5_get_attributes const struct db_i dbip,
struct bu_attribute_value_set avs,
const struct directory dp
 

D B _ G E T _ A T T R I B U T E S

Get attributes for an object pointed to by *dp

returns: 0 - all is well <0 - error

Definition at line 1652 of file db5_io.c.

References db5_raw_internal::attributes, bu_free_external(), BU_INIT_EXTERNAL, db5_get_raw_internal_ptr(), db5_import_attributes(), db_get_external(), db_i::dbi_version, bu_external::ext_buf, NULL, RT_CK_DBI, and RT_CK_DIR.

Referenced by db_lookup_by_attr(), wdb_attr_cmd(), and wdb_do_list().

Here is the call graph for this function:

RT_EXPORT int db_tree_nleaves const union tree tp  ) 
 

D B _ T R E E _ N L E A V E S

Return count of number of leaf nodes in this tree.

Definition at line 113 of file db_comb.c.

References bu_log(), db_tree_nleaves(), OP_DB_LEAF, OP_GUARD, OP_INTERSECT, OP_NOP, OP_NOT, OP_REGION, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XNOP, OP_XOR, rt_bomb(), RT_CK_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, tree::tr_b, and TREE_NULL.

Referenced by db_tree_flatten_describe(), db_tree_nleaves(), rt_comb_export4(), and wdb_combadd().

Here is the call graph for this function:

RT_EXPORT struct rt_tree_array* db_flatten_tree struct rt_tree_array rt_tree_array,
union tree tp,
int  op,
int  free,
struct resource resp
 

D B _ F L A T T E N _ T R E E

Take a binary tree in "V4-ready" layout (non-unions pushed below unions, left-heavy), and flatten it into an array layout, ready for conversion back to the GIFT-inspired V4 database format.

This is done using the db_non_union_push() routine.

If argument 'free' is non-zero, then the non-leaf nodes are freed along the way, to prevent memory leaks. In this case, the caller's copy of 'tp' will be invalid upon return.

When invoked at the very top of the tree, the op argument must be OP_UNION.

Definition at line 166 of file db_comb.c.

References bu_bomb(), bu_log(), db_flatten_tree(), NULL, OP_DB_LEAF, OP_INTERSECT, OP_SUBTRACT, OP_UNION, RT_CK_RESOURCE, RT_CK_TREE, RT_FREE_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, rt_tree_array::tl_op, rt_tree_array::tl_tree, tree::tr_b, and TREE_NULL.

Referenced by db_flatten_tree(), db_tree_flatten_describe(), rt_comb_export4(), and wdb_combadd().

Here is the call graph for this function:

RT_EXPORT int rt_comb_import4 struct rt_db_internal ip,
const struct bu_external ep,
const mat_t  matrix,
const struct db_i dbip,
struct resource resp
 

R T _ C O M B _ I M P O R T 4

Import a combination record from a V4 database into internal form.

Definition at line 211 of file db_comb.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_free(), bu_log(), bu_external::ext_buf, bu_external::ext_nbytes, ID_COMB, ID_MEMB, NULL, and record::u_id.

Here is the call graph for this function:

RT_EXPORT int rt_comb_export4 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip,
struct resource resp
 

R T _ C O M B _ E X P O R T 4

Definition at line 421 of file db_comb.c.

References rt_comb_internal::aircode, bn_mat_identity, BU_ASSERT_LONG, bu_bomb(), bu_calloc(), bu_free(), BU_INIT_EXTERNAL, bu_log(), bu_shader_to_key_eq(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_strlen(), record::c, record::combination::c_aircode, record::combination::c_flags, record::combination::c_inherit, record::combination::c_los, record::combination::c_material, record::combination::c_matname, record::combination::c_matparm, record::combination::c_override, record::combination::c_regionid, record::combination::c_rgb, db_ck_v4gift_tree(), db_flatten_tree(), db_free_tree(), db_non_union_push(), db_tree_nleaves(), DBV4_NON_REGION, DBV4_REGION, DBV4_REGION_FASTGEN_PLATE, DBV4_REGION_FASTGEN_VOLUME, bu_external::ext_buf, bu_external::ext_nbytes, rt_comb_internal::GIFTmater, ID_COMB, ID_COMBINATION, ID_MEMB, rt_db_internal::idb_ptr, rt_comb_internal::inherit, rt_comb_internal::is_fastgen, rt_comb_internal::los, record::M, M, record::member::m_relation, NAMESIZE, NULL, OP_DB_LEAF, OP_INTERSECT, OP_SUBTRACT, OP_UNION, REGION_FASTGEN_PLATE, REGION_FASTGEN_VOLUME, rt_comb_internal::region_flag, rt_comb_internal::region_id, REGION_NON_FASTGEN, rt_comb_internal::rgb, rt_comb_internal::rgb_valid, RT_CK_COMB, RT_CK_DB_INTERNAL, RT_CK_RESOURCE, RT_CK_TREE, rt_dbmat_mat(), rt_pr_tree(), rt_comb_internal::shader, tree::tree_db_leaf::tl_mat, tree::tree_db_leaf::tl_name, rt_tree_array::tl_tree, tree::tr_l, rt_comb_internal::tree, TREE_NULL, and record::u_id.

Here is the call graph for this function:

RT_EXPORT void db_tree_flatten_describe struct bu_vls vls,
const union tree tp,
int  indented,
int  lvl,
double  mm2local,
struct resource resp
 

D B _ T R E E _ F L A T T E N _ D E S C R I B E

Produce a GIFT-compatible listing, one "member" per line, regardless of the structure of the tree we've been given.

Definition at line 595 of file db_comb.c.

References bn_ae_vec(), bn_mat_identity, BU_ASSERT_LONG, BU_ASSERT_PTR, bu_bomb(), bu_calloc(), BU_CK_VLS, bu_vls_printf(), bu_vls_spaces(), bu_vls_strcat(), db_ck_v4gift_tree(), db_dup_subtree(), db_flatten_tree(), db_non_union_push(), db_tree_nleaves(), MDX, MDY, MDZ, NULL, OP_DB_LEAF, OP_INTERSECT, OP_NOP, OP_SUBTRACT, OP_UNION, RT_CK_RESOURCE, RT_CK_TREE, STAT_PERSP, STAT_ROT, STAT_SCALE, STAT_XLATE, status, rt_tree_array::tl_op, rt_tree_array::tl_tree, and void().

Referenced by db_comb_describe().

Here is the call graph for this function:

RT_EXPORT void db_tree_describe struct bu_vls vls,
const union tree tp,
int  indented,
int  lvl,
double  mm2local
 

D B _ T R E E _ D E S C R I B E

Definition at line 711 of file db_comb.c.

References bn_ae_vec(), bn_mat_identity, bu_bomb(), BU_CK_VLS, bu_log(), bu_vls_printf(), bu_vls_spaces(), bu_vls_strcat(), db_tree_describe(), MDX, MDY, MDZ, OP_DB_LEAF, OP_GUARD, OP_INTERSECT, OP_NOP, OP_NOT, OP_SUBTRACT, OP_UNION, OP_XNOP, OP_XOR, RT_CK_TREE, STAT_PERSP, STAT_ROT, STAT_SCALE, STAT_XLATE, status, tree::tree_node::tb_left, tree::tree_node::tb_right, tree::tree_db_leaf::tl_mat, tree::tree_db_leaf::tl_name, tree::tr_b, and tree::tr_l.

Referenced by db_tree_describe().

Here is the call graph for this function:

RT_EXPORT void db_comb_describe struct bu_vls str,
const struct rt_comb_internal comb,
int  verbose,
double  mm2local,
struct resource resp
 

D B _ C O M B _ D E S C R I B E

Definition at line 817 of file db_comb.c.

References rt_comb_internal::aircode, bu_vls_addr(), bu_vls_printf(), bu_vls_strcat(), bu_vls_strlen(), db_tree_flatten_describe(), rt_comb_internal::GIFTmater, rt_comb_internal::inherit, rt_comb_internal::is_fastgen, rt_comb_internal::los, REGION_FASTGEN_PLATE, REGION_FASTGEN_VOLUME, rt_comb_internal::region_flag, rt_comb_internal::region_id, rt_comb_internal::rgb, rt_comb_internal::rgb_valid, RT_CK_COMB, RT_CK_RESOURCE, rt_pr_tree_vls(), rt_comb_internal::shader, and rt_comb_internal::tree.

Referenced by rt_comb_describe().

Here is the call graph for this function:

RT_EXPORT void rt_comb_ifree struct rt_db_internal ip,
struct resource resp
 

R T _ C O M B _ I F R E E

Free the storage associated with the rt_db_internal version of this combination.

Definition at line 881 of file db_comb.c.

References bu_free(), bu_vls_free(), db_free_tree(), GENPTR_NULL, rt_db_internal::idb_ptr, rt_comb_internal::magic, rt_comb_internal::material, NULL, RT_CK_DB_INTERNAL, RT_CK_RESOURCE, rt_comb_internal::shader, and rt_comb_internal::tree.

Referenced by wdb_showmats_cmd(), and wdb_whatid_cmd().

Here is the call graph for this function:

RT_EXPORT int rt_comb_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local,
struct resource resp,
struct db_i db_i
 

R T _ C O M B _ D E S C R I B E

rt_functab[ID_COMBINATION].ft_describe() method

Definition at line 910 of file db_comb.c.

References db_comb_describe(), rt_db_internal::idb_ptr, RT_CK_COMB, RT_CK_DB_INTERNAL, and RT_CK_RESOURCE.

Here is the call graph for this function:

RT_EXPORT void db_wrap_v4_external struct bu_external op,
const char *  name
 

D B _ W R A P _ V 4 _ E X T E R N A L

As the v4 database does not really have the notion of "wrapping", this function writes the object name into the proper place (a standard location in all granules).

Definition at line 940 of file db_comb.c.

References BU_CK_EXTERNAL, bu_external::ext_buf, NAMEMOVE, record::s, and record::solidrec::s_name.

Referenced by db_fwrite_external(), db_put_external(), nmg_stash_model_to_file(), wdb_export_external(), and wdb_put_internal().

RT_EXPORT int db_ck_left_heavy_tree const union tree tp,
int  no_unions
 

D B _ C K _ L E F T _ H E A V Y _ T R E E

Support routine for db_ck_v4gift_tree(). Ensure that the tree below 'tp' is left-heavy, i.e. that there are nothing but solids on the right side of any binary operations.

Returns - -1 ERROR 0 OK

Definition at line 964 of file db_comb.c.

References bu_bomb(), bu_log(), db_ck_left_heavy_tree(), OP_DB_LEAF, OP_INTERSECT, OP_SUBTRACT, OP_UNION, OP_XOR, RT_CK_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, and tree::tr_b.

Referenced by db_ck_left_heavy_tree(), and db_ck_v4gift_tree().

Here is the call graph for this function:

RT_EXPORT int db_ck_v4gift_tree const union tree tp  ) 
 

D B _ C K _ V 4 G I F T _ T R E E

Look a gift-tree in the mouth. Ensure that this boolean tree conforms to the GIFT convention that union operations must bind the loosest. There are two stages to this check: 1) Ensure that if unions are present they are all at the root of tree, 2) Ensure non-union children of union nodes are all left-heavy (nothing but solid nodes permitted on rhs of binary operators).

Returns - -1 ERROR 0 OK

Definition at line 1008 of file db_comb.c.

References bu_bomb(), bu_log(), db_ck_left_heavy_tree(), db_ck_v4gift_tree(), OP_DB_LEAF, OP_INTERSECT, OP_SUBTRACT, OP_UNION, OP_XOR, RT_CK_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, and tree::tr_b.

Referenced by db_ck_v4gift_tree(), db_tree_flatten_describe(), main(), rt_comb_export4(), and wdb_combadd().

Here is the call graph for this function:

RT_EXPORT union tree* db_mkbool_tree struct rt_tree_array rt_tree_array,
int  howfar,
struct resource resp
 

D B _ M K B O O L _ T R E E

Given a rt_tree_array array, build a tree of "union tree" nodes appropriately connected together. Every element of the rt_tree_array array used is replaced with a TREE_NULL. Elements which are already TREE_NULL are ignored. Returns a pointer to the top of the tree.

Definition at line 1044 of file db_comb.c.

References RT_CK_RESOURCE, rt_tree_array::tl_tree, and TREE_NULL.

Referenced by db_mkgift_tree().

RT_EXPORT union tree* db_mkgift_tree struct rt_tree_array trees,
int  subtreecount,
struct resource resp
 

D B _ M K G I F T _ T R E E

Definition at line 1109 of file db_comb.c.

References bu_log(), db_mkbool_tree(), DEBUG_TREEWALK, OP_UNION, RT_CK_RESOURCE, RT_G_DEBUG, rt_pr_tree(), rt_tree_array::tl_op, and rt_tree_array::tl_tree.

Referenced by wdb_combadd().

Here is the call graph for this function:

RT_EXPORT void rt_pt_sort register fastf_t  t[],
int  npts
 

R T _ P T _ S O R T

Sorts the values in t[] in descending order.

Definition at line 1347 of file g_tgc.c.

RT_EXPORT void rt_ell_16pts register fastf_t ov,
register fastf_t V,
fastf_t A,
fastf_t B
 

Definition at line 590 of file g_ell.c.

References ELLOUT, VADD2, VJOIN2, and VSUB2.

Referenced by rt_cline_plot(), rt_ell_plot(), rt_metaball_plot_sph(), rt_part_plot(), and rt_tgc_plot().

RT_EXPORT int rt_poly_roots bn_poly_t eqn,
bn_complex_t  roots[],
const char *  name
 

Referenced by bend_pipe_shot(), rt_eto_shot(), rt_superell_shot(), and rt_tor_shot().

RT_EXPORT int db_write struct db_i dbip,
const genptr_t  addr,
long  count,
long  offset
 

Referenced by db5_write_free(), db_put(), db_put_external(), db_put_external5(), and rt_db_put_internal5().

RT_EXPORT int db_fwrite_external FILE *  fp,
const char *  name,
struct bu_external ep
 

D B _ F W R I T E _ E X T E R N A L

Add name from dp->d_namep to external representation of solid, and write it into a file.

Caller is responsible for freeing memory of external representation, using bu_free_external().

The 'name' field of the external representation is modified to contain the desired name.

Returns - <0 error 0 OK

NOTE: Callers of this should be using wdb_export_external() instead.

Definition at line 474 of file db_io.c.

References BU_CK_EXTERNAL, bu_fwrite_external(), bu_log(), db_wrap_v4_external(), DEBUG_DB, and RT_G_DEBUG.

Here is the call graph for this function:

RT_EXPORT genptr_t db_getmrec const struct db_i dbip,
const struct directory dp
 

D B _ G E T M R E C

Retrieve all records in the database pertaining to an object, and place them in malloc()'ed storage, which the caller is responsible for free()'ing.

This loads the combination into a local record buffer. This is in external v4 format.

Returns - union record * OK (union record *)0 failure

Definition at line 150 of file db_io.c.

References bcopy, bu_free(), bu_log(), bu_malloc(), directory::d_flags, directory::d_len, directory::d_namep, directory::d_un, db_read(), db_i::dbi_version, DEBUG_DB, NULL, directory::ptr, RT_CK_DBI, RT_CK_DIR, RT_DIR_INMEM, and RT_G_DEBUG.

Referenced by db_functree(), and db_preorder_traverse().

Here is the call graph for this function:

RT_EXPORT int db_get const struct db_i ,
const struct directory dp,
genptr_t  where,
int  offset,
int  len
 

Referenced by db_alloc(), and db_update_ident().

RT_EXPORT int db_put const struct db_i ,
const struct directory dp,
genptr_t  where,
int  offset,
int  len
 

Referenced by db_update_ident(), and db_zapper().

RT_EXPORT int db_get_external struct bu_external ep,
const struct directory dp,
const struct db_i dbip
 

Referenced by db5_get_attributes(), db5_replace_attributes(), db5_update_attributes(), db_dirbuild(), db_dump(), rt_db_get_internal(), rt_db_get_internal5(), rt_retrieve_binunif(), and wdb_copy_cmd().

RT_EXPORT int db_put_external struct bu_external ep,
struct directory dp,
struct db_i dbip
 

D B _ P U T _ E X T E R N A L

Given that caller already has an external representation of the database object, update it to have a new name (taken from dp->d_namep) in that external representation, and write the new object into the database, obtaining different storage if the size has changed.

Caller is responsible for freeing memory of external representation, using bu_free_external().

This routine is used to efficiently support MGED's "cp" and "keep" commands, which don't need to import objects just to rename and copy them.

Returns - -1 error 0 success

Definition at line 399 of file db_io.c.

References bcopy, bu_bomb(), BU_CK_EXTERNAL, bu_log(), directory::d_flags, directory::d_len, directory::d_namep, directory::d_un, db_alloc(), db_delete(), db_put_external5(), db_wrap_v4_external(), db_write(), db_i::dbi_filename, db_i::dbi_read_only, db_i::dbi_version, DEBUG_DB, bu_external::ext_buf, bu_external::ext_nbytes, directory::ptr, RT_CK_DBI, RT_CK_DIR, RT_DIR_INMEM, and RT_G_DEBUG.

Referenced by db5_update_ident(), rt_db_put_internal(), wdb_copy_cmd(), and wdb_export_external().

Here is the call graph for this function:

RT_EXPORT void db_free_external struct bu_external ep  ) 
 

RT_EXPORT int db_scan struct db_i ,
int(*)()  handler,
int  do_old_matter,
genptr_t  client_data
 

Referenced by db_dirbuild(), and wdb_dup_cmd().

RT_EXPORT int db_update_ident struct db_i dbip,
const char *  new_title,
double  local2mm
 

D B _ U P D A T E _ I D E N T

Update the existing v4 IDENT record with new title and units. To permit using db_get and db_put, a custom directory entry is crafted.

Note: Special care is required, because the "title" arg may actually be passed in as dbip->dbi_title.

Definition at line 374 of file db_scan.c.

References BU_ASSERT_LONG, bu_free(), bu_log(), bu_strdup, bu_units_string(), directory::d_flags, directory::d_len, directory::d_magic, db5_update_ident(), db_get(), db_put(), db_v4_get_units_code(), db_i::dbi_read_only, db_i::dbi_title, db_i::dbi_version, DEBUG_DB, record::i, record::ident::i_title, record::ident::i_units, ID_IDENT, ID_MM_UNIT, RT_CK_DBI, RT_DIR_MAGIC, RT_DIR_SET_NAMEP, RT_G_DEBUG, record::u_id, and void().

Referenced by wdb_title_cmd(), and wdb_units_cmd().

Here is the call graph for this function:

RT_EXPORT int db_fwrite_ident FILE *  fp,
const char *  title,
double  local2mm
 

D B _ F W R I T E _ I D E N T

Fwrite an IDENT record with given title and editing scale. Attempts to map the editing scale into a v4 database unit as best it can. No harm done if it doesn't map.

This should be called by db_create() only. All others should call db_update_ident().

Returns - 0 Success -1 Fatal Error

Definition at line 443 of file db_scan.c.

References bu_log(), bu_units_string(), bzero, db_v4_get_units_code(), DEBUG_DB, ID_IDENT, ID_VERSION, RT_G_DEBUG, and void().

Referenced by db_create().

Here is the call graph for this function:

RT_EXPORT void db_conversions struct db_i dbip,
int  local
 

D B _ C O N V E R S I O N S

Initialize conversion factors given the v4 database unit

Definition at line 470 of file db_scan.c.

References db_i::dbi_base2local, db_i::dbi_local2base, ID_CM_UNIT, ID_FT_UNIT, ID_IN_UNIT, ID_KM_UNIT, ID_M_UNIT, ID_MI_UNIT, ID_MM_UNIT, ID_NO_UNIT, ID_UM_UNIT, ID_YD_UNIT, and RT_CK_DBI.

Referenced by db_scan().

RT_EXPORT int db_v4_get_units_code const char *  str  ) 
 

D B _ V 4 _ G E T _ U N I T S _ C O D E

Given a string, return the V4 database code representing the user's preferred editing units. The v4 database format does not have many choices.

Returns - -1 Not a legal V4 database code # The V4 database code number

Definition at line 548 of file db_scan.c.

References ID_CM_UNIT, ID_FT_UNIT, ID_IN_UNIT, ID_KM_UNIT, ID_M_UNIT, ID_MI_UNIT, ID_MM_UNIT, ID_NO_UNIT, ID_UM_UNIT, and ID_YD_UNIT.

Referenced by db_fwrite_ident(), and db_update_ident().

RT_EXPORT int db_dirbuild struct db_i dbip  ) 
 

D B _ D I R B U I L D

A generic routine to determine the type of the database, (v4 or v5) and to invoke the appropriate db_scan()-like routine to build the in-memory directory.

It is the caller's responsibility to close the database in case of error.

Called from rt_dirbuild(), and g_submodel.c

Returns - 0 OK -1 failure

Definition at line 350 of file db5_scan.c.

References db5_raw_internal::attributes, bu_avs_free(), bu_avs_get(), bu_avs_init_empty(), BU_CK_AVS, bu_free_external(), BU_INIT_EXTERNAL, bu_log(), bu_strdup, db5_diradd_handler(), db5_get_raw_internal_ptr(), DB5_GLOBAL_OBJECT_NAME, db5_header_is_valid(), db5_import_attributes(), db5_import_color_table(), DB5_MAJORTYPE_ATTRIBUTE_ONLY, db5_scan(), db5_update_ident(), db_diradd(), db_get_external(), db_lookup(), db_scan(), db_i::dbi_base2local, db_i::dbi_filename, db_i::dbi_fp, db_i::dbi_local2base, db_i::dbi_title, db_i::dbi_version, DIR_NULL, bu_external::ext_buf, LOOKUP_NOISY, db5_raw_internal::major_type, NEAR_ZERO, NULL, RT_CK_DBI, and VUNITIZE_TOL.

Referenced by db_create(), main(), rt_dirbuild(), rt_submodel_plot(), rt_submodel_prep(), wdb_concat_cmd(), and wdb_prep_dbip().

Here is the call graph for this function:

RT_EXPORT struct directory* db5_diradd struct db_i dbip,
const struct db5_raw_internal rip,
long  laddr,
genptr_t  client_data
 

Definition at line 220 of file db5_scan.c.

References db5_raw_internal::attributes, bu_avs_free(), bu_avs_get(), bu_avs_init_empty(), BU_LIST_INIT, bu_log(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_strcpy(), directory::d_animate, directory::d_flags, directory::d_forw, directory::d_len, directory::d_major_type, directory::d_minor_type, directory::d_nref, directory::d_un, directory::d_use_hd, directory::d_uses, db5_import_attributes(), DB5_MAJORTYPE_ATTRIBUTE_ONLY, DB5_MAJORTYPE_BINARY_EXPM, DB5_MAJORTYPE_BINARY_MIME, DB5_MAJORTYPE_BINARY_UNIF, DB5_MAJORTYPE_BRLCAD, db_dircheck(), DIR_COMB, DIR_HIDDEN, DIR_NON_GEOM, DIR_NULL, DIR_REGION, DIR_SOLID, bu_external::ext_buf, bu_external::ext_nbytes, directory::file_offset, db5_raw_internal::h_name_hidden, ID_COMBINATION, db5_raw_internal::major_type, db5_raw_internal::minor_type, db5_raw_internal::name, NULL, db5_raw_internal::object_length, resource::re_magic, RT_CK_DBI, RT_CK_DIR, RT_DIR_SET_NAMEP, RT_GET_DIRECTORY, rt_init_resource(), and rt_uniresource.

Referenced by db5_diradd_handler().

Here is the call graph for this function:

RT_EXPORT int db_get_version struct db_i dbip  ) 
 

Definition at line 456 of file db5_scan.c.

References bu_log(), db5_header_is_valid(), db_i::dbi_filename, and db_i::dbi_fp.

Referenced by db_open().

Here is the call graph for this function:

RT_EXPORT int db5_scan struct db_i dbip,
void(*)(struct db_i *, const struct db5_raw_internal *, long addr, genptr_t client_data)  handler,
genptr_t  client_data
 

D B 5 _ S C A N

Returns - 0 Success -1 Fatal Error

Definition at line 67 of file db5_scan.c.

Referenced by db_dirbuild(), and wdb_dup_cmd().

RT_EXPORT int rt_comb_import5 struct rt_db_internal ip,
const struct bu_external ep,
const mat_t  mat,
const struct db_i dbip,
struct resource resp,
const int  minor_type
 

R T _ C O M B _ I M P O R T 5

Read a combination object in v5 external (on-disk) format, and convert it into the internal format described in h/rtgeom.h

This is an unusual conversion, because some of the data is taken from attributes, not just from the object body. By the time this is called, the attributes will already have been cracked into ip->idb_avs, we get the attributes from there.

Returns - 0 OK -1 FAIL

Definition at line 484 of file db5_comb.c.

RT_EXPORT int rt_extrude_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const mat_t  mat,
const struct db_i dbip,
struct resource resp,
const int  minor_type
 

R T _ E X T R U D E _ I M P O R T 5

Import an EXTRUDE from the database format to the internal format. Apply modeling transformations as well.

Definition at line 2305 of file g_extrude.c.

References bn_mat_identity, BU_CK_EXTERNAL, bu_free(), bu_glong(), bu_log(), bu_malloc(), bu_strdup, DB5_MAJORTYPE_BRLCAD, db_lookup(), DIR_NULL, ELEMENTS_PER_VECT, bu_external::ext_buf, rt_extrude_internal::h, ID_EXTRUDE, ID_SKETCH, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_extrude_internal::keypoint, LOCAL, LOOKUP_NOISY, rt_extrude_internal::magic, MAT4X3PNT, MAT4X3VEC, ntohd(), NULL, ptr, RT_CK_DB_INTERNAL, rt_db_get_internal(), RT_EXTRUDE_INTERNAL_MAGIC, SIZEOF_NETWORK_DOUBLE, SIZEOF_NETWORK_LONG, rt_extrude_internal::sketch_name, rt_extrude_internal::skt, rt_extrude_internal::u_vec, rt_extrude_internal::V, and rt_extrude_internal::v_vec.

Here is the call graph for this function:

RT_EXPORT struct db_i* db_open_inmem void   ) 
 

d b _ o p e n _ i n m e m

"open" an in-memory-only database instance. this initializes a dbip for use, creating an inmem dbi_wdbp as the means to add geometry to the directory (use wdb_export_external()).

Definition at line 71 of file db_inmem.c.

References BU_GETSTRUCT, db_i::dbi_eof, db_i::dbi_fd, db_i::dbi_fp, db_i::dbi_Head, db_i::dbi_mf, DBI_NULL, db_i::dbi_read_only, DIR_NULL, NULL, and RT_DBNHASH.

Referenced by db_create_inmem().

RT_EXPORT struct db_i* db_create_inmem void   ) 
 

d b _ c r e a t e _ i n m e m

creates an in-memory-only database. this is very similar to db_open_inmem() with the exception that the this routine adds a default _GLOBAL object.

Definition at line 118 of file db_inmem.c.

References bu_avs_add(), bu_avs_free(), bu_avs_init(), bu_free_external(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db5_export_attributes(), db5_export_object3(), DB5_GLOBAL_OBJECT_NAME, DB5_MAJORTYPE_ATTRIBUTE_ONLY, DB5_MAJORTYPE_RESERVED, DB5_ZZZ_UNCOMPRESSED, DB5HDR_HFLAGS_DLI_APPLICATION_DATA_OBJECT, DB5HDR_HFLAGS_DLI_HEADER_OBJECT, DB5HDR_HFLAGS_HIDDEN_OBJECT, db_open_inmem(), db_i::dbi_local2base, db_i::dbi_title, db_i::dbi_wdbp, DIR_HIDDEN, DIR_NON_GEOM, flags, NULL, RT_CK_DBI, RT_CK_WDB, RT_DIR_INMEM, units, and wdb_export_external().

Here is the call graph for this function:

RT_EXPORT void db_inmem struct directory dp,
struct bu_external ext,
int  flags,
struct db_i dbip
 

D B _ I N M E M

Transmogrify an existing directory entry to be an in-memory-only one, stealing the external representation from 'ext'.

Definition at line 171 of file db_inmem.c.

References BU_CK_EXTERNAL, bu_free(), directory::d_flags, directory::d_len, directory::d_un, db_i::dbi_version, bu_external::ext_buf, bu_external::ext_nbytes, NULL, directory::ptr, RT_CK_DIR, and RT_DIR_INMEM.

Referenced by wdb_export_external().

Here is the call graph for this function:

RT_EXPORT int db_get_directory_size const struct db_i dbip  ) 
 

D B _ G E T _ D I R E C T O R Y _ S I Z E

Return the number of "struct directory" nodes in the given database.

Definition at line 95 of file db_lookup.c.

References directory::d_forw, db_i::dbi_Head, DIR_NULL, RT_CK_DBI, and RT_DBNHASH.

Referenced by wdb_getspace().

RT_EXPORT void db_ck_directory const struct db_i dbip  ) 
 

D B _ C K _ D I R E C T O R Y

For debugging, ensure that all the linked-lists for the directory structure are intact.

Definition at line 117 of file db_lookup.c.

References directory::d_forw, db_i::dbi_Head, DIR_NULL, RT_CK_DBI, RT_CK_DIR, and RT_DBNHASH.

Referenced by rt_ck().

RT_EXPORT int db_is_directory_non_empty const struct db_i dbip  ) 
 

D B _ I S _ D I R E C T O R Y _ N O N _ E M P T Y

Returns - 0 if the in-memory directory is empty 1 if the in-memory directory has entries, which implies that a db_scan() has already been performed.

Definition at line 76 of file db_lookup.c.

References db_i::dbi_Head, DIR_NULL, record::i, RT_CK_DBI, and RT_DBNHASH.

Referenced by rt_submodel_plot(), and rt_submodel_prep().

RT_EXPORT int db_dirhash const char *  str  ) 
 

D B _ D I R H A S H

Internal function to return pointer to head of hash chain corresponding to the given string.

Definition at line 137 of file db_lookup.c.

References RT_DBHASH.

Referenced by db_dircheck(), db_dirdelete(), db_lookup(), db_rename(), rt_find_identical_solid(), rt_free_soltab(), and rt_gettree_leaf().

RT_EXPORT int db_dircheck struct db_i dbip,
struct bu_vls ret_name,
int  noisy,
struct directory ***  headp
 

Name - D B _ D I R C H E C K

Description - This routine ensures that ret_name is not already in the directory. If it is, it tries a fixed number of times to modify ret_name before giving up. Note - most of the time, the hash for ret_name is computed once.

Inputs - dbip database instance pointer ret_name the original name noisy to blather or not

Outputs - ret_name the name to use headp pointer to the first (struct directory *) in the bucket

Returns - 0 success <0 fail

Definition at line 175 of file db_lookup.c.

References bu_vls_addr(), bu_vls_strcat(), bu_vls_strcpy(), directory::d_forw, directory::d_namep, db_dirhash(), db_lookup(), db_i::dbi_Head, and DIR_NULL.

Referenced by db5_diradd(), db_diradd(), and db_diradd5().

Here is the call graph for this function:

RT_EXPORT struct directory* db_lookup const struct db_i ,
const char *  name,
int  noisy
 

Referenced by build_etree(), db5_update_attribute(), db5_update_ident(), db_apply_state_from_memb(), db_argv_to_path(), db_count_refs(), db_dirbuild(), db_dircheck(), db_functree(), db_functree_subtree(), db_preorder_traverse(), db_string_to_path(), db_traverse_subtree(), db_update_nref(), dgo_build_dpp(), dgo_eraseobjpath(), dgo_invent_solid(), Do_copy_membs(), Do_ref_incr(), main(), rt_db_lookup_internal(), rt_extrude_import(), rt_extrude_import5(), rt_find_solid(), rt_retrieve_binunif(), rt_tcl_import_from_path(), rt_unprep(), wdb_adjust_cmd(), wdb_attr_cmd(), wdb_binary_cmd(), wdb_bot_decimate_cmd(), wdb_bot_face_sort_cmd(), wdb_cat_cmd(), wdb_check_syntax(), wdb_comb_cmd(), wdb_comb_std_cmd(), wdb_combadd(), wdb_copy_cmd(), wdb_copyeval_cmd(), wdb_dir_check(), wdb_dir_check5(), wdb_export_external(), wdb_facetize_cmd(), wdb_get_objpath_mat(), wdb_group_cmd(), wdb_hide_cmd(), wdb_import(), wdb_instance_cmd(), wdb_kill_cmd(), wdb_killtree_cmd(), wdb_lt_cmd(), wdb_make_bb_cmd(), wdb_move_all_cmd(), wdb_move_cmd(), wdb_nmg_collapse_cmd(), wdb_nmg_simplify_cmd(), wdb_node_write(), wdb_orotate_cmd(), wdb_oscale_cmd(), wdb_pathsum_cmd(), wdb_push_cmd(), wdb_put_cmd(), wdb_region_cmd(), wdb_remove_cmd(), wdb_shells_cmd(), wdb_showmats_cmd(), wdb_smooth_bot_cmd(), wdb_tree_cmd(), wdb_unhide_cmd(), wdb_whatid_cmd(), and wdb_xpush_cmd().

RT_EXPORT struct bu_ptbl* db_lookup_by_attr struct db_i dbip,
int  dir_flags,
struct bu_attribute_value_set avs,
int  op
 

D B _ L O O K U P _ B Y _ A T T R

lookup directory entries based on directory flags (dp->d_flags) and attributes the "dir_flags" arg is a mask for the directory flags the *"avs" is an attribute value set used to select from the objects that *pass the flags mask. if "op" is 1, then the object must have all the *attributes and values that appear in "avs" in order to be *selected. If "op" is 2, then the object must have at least one of *the attribute/value pairs from "avs".

dir_flags are in the form used in struct directory (d_flags)

for op: 1 -> all attribute name/value pairs must be present and match 2 -> at least one of the name/value pairs must be present and match

returns a ptbl list of selected directory pointers an empty list means nothing met the requirements a NULL return means something went wrong.

Definition at line 559 of file db_lookup.c.

References bu_attribute_value_set::avp, BU_CK_AVS, bu_log(), bu_malloc(), bu_ptbl_init(), bu_attribute_value_set::count, directory::d_flags, directory::d_namep, db5_get_attributes(), FOR_ALL_DIRECTORY_START, bu_attribute_value_pair::name, NULL, RT_CK_DBI, and bu_attribute_value_pair::value.

Here is the call graph for this function:

RT_EXPORT struct directory* db_diradd struct db_i ,
const char *  name,
long  laddr,
int  len,
int  flags,
genptr_t  ptr
 

Referenced by db5_update_ident(), db_dirbuild(), dgo_invent_solid(), wdb_combadd(), wdb_copy_cmd(), wdb_export_external(), wdb_facetize_cmd(), wdb_make_bb_cmd(), wdb_nmg_collapse_cmd(), wdb_nmg_simplify_cmd(), wdb_shells_cmd(), and wdb_smooth_bot_cmd().

RT_EXPORT struct directory* db_diradd5 struct db_i dbip,
const char *  name,
long  laddr,
unsigned char  major_type,
unsigned char  minor_type,
unsigned char  name_hidden,
long  object_length,
struct bu_attribute_value_set avs
 

Definition at line 145 of file db5_scan.c.

References bu_avs_get(), BU_LIST_INIT, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_strcpy(), bu_attribute_value_set::count, directory::d_animate, directory::d_flags, directory::d_forw, directory::d_len, directory::d_major_type, directory::d_minor_type, directory::d_nref, directory::d_un, directory::d_use_hd, directory::d_uses, DB5_MAJORTYPE_ATTRIBUTE_ONLY, DB5_MAJORTYPE_BINARY_EXPM, DB5_MAJORTYPE_BINARY_MIME, DB5_MAJORTYPE_BINARY_UNIF, DB5_MAJORTYPE_BRLCAD, db_dircheck(), DIR_COMB, DIR_HIDDEN, DIR_NON_GEOM, DIR_NULL, DIR_REGION, DIR_SOLID, directory::file_offset, ID_COMBINATION, NULL, directory::ptr, resource::re_magic, RT_CK_DBI, RT_CK_DIR, RT_DIR_SET_NAMEP, RT_GET_DIRECTORY, rt_init_resource(), and rt_uniresource.

Here is the call graph for this function:

RT_EXPORT int db_dirdelete struct db_i ,
struct directory dp
 

Referenced by dgo_zap_cmd(), and wdb_kill_cmd().

RT_EXPORT void db_pr_dir const struct db_i dbip  ) 
 

RT_EXPORT int db_rename struct db_i ,
struct directory ,
const char *  newname
 

Referenced by wdb_move_cmd().

RT_EXPORT void db_update_nref struct db_i dbip,
struct resource resp
 

D B _ U P D A T E _ N R E F

Updates the d_nref fields (which count the number of times a given entry is referenced by a COMBination in the database).

Definition at line 184 of file db_match.c.

References directory::d_forw, directory::d_major_type, directory::d_minor_type, directory::d_nref, DB5_MAJORTYPE_BRLCAD, DB5_MINORTYPE_BRLCAD_EXTRUDE, db_lookup(), db_i::dbi_Head, DIR_NULL, LOOKUP_QUIET, NULL, RT_CK_DBI, RT_CK_RESOURCE, rt_db_get_internal(), RT_DBNHASH, and RT_EXTRUDE_CK_MAGIC.

Referenced by wdb_tops_cmd().

Here is the call graph for this function:

RT_EXPORT int db_regexp_match const char *  pattern,
const char *  string
 

Referenced by db_regexp_match(), and db_regexp_match_all().

RT_EXPORT int db_regexp_match_all struct bu_vls dest,
struct db_i dbip,
const char *  pattern
 

D B _ R E G E X P _ M A T C H _ A L L

Appends a list of all database matches to the given vls, or the pattern itself if no matches are found. Returns the number of matches.

Definition at line 140 of file db_match.c.

References bu_vls_strcat(), directory::d_forw, directory::d_namep, db_regexp_match(), db_i::dbi_Head, DIR_NULL, num, and RT_DBNHASH.

Referenced by wdb_match_cmd().

Here is the call graph for this function:

RT_EXPORT int db_flags_internal const struct rt_db_internal intern  ) 
 

D B _ F L A G S _ I N T E R N A L

Given the internal form of a database object, return the appropriate 'flags' word for stashing in the in-memory directory of objects.

Definition at line 64 of file db_flags.c.

References DIR_COMB, DIR_REGION, DIR_SOLID, ID_COMBINATION, rt_db_internal::idb_ptr, rt_comb_internal::region_flag, RT_CK_COMB, and RT_CK_DB_INTERNAL.

Referenced by nmg_stash_model_to_file(), and wdb_put_internal().

RT_EXPORT int db_flags_raw_internal const struct db5_raw_internal raw  ) 
 

d b _ f l a g s _ r a w _ i n t e r n a l

Given a database object in "raw" internal form, return the appropriate 'flags' word for stashing in the in-memory directory of objects.

Definition at line 91 of file db_flags.c.

References db5_raw_internal::attributes, bu_avs_get(), bu_avs_init_empty(), db5_import_attributes(), DB5_MAJORTYPE_BRLCAD, DB5_MINORTYPE_BRLCAD_COMBINATION, DIR_COMB, DIR_NON_GEOM, DIR_REGION, DIR_SOLID, bu_external::ext_buf, db5_raw_internal::major_type, db5_raw_internal::minor_type, and NULL.

Here is the call graph for this function:

RT_EXPORT int db_alloc struct db_i ,
struct directory dp,
int  count
 

Referenced by db_put_external().

RT_EXPORT int db_delrec struct db_i ,
struct directory dp,
int  recnum
 

RT_EXPORT int db_delete struct db_i dbip,
struct directory dp
 

D B _ D E L E T E

Delete the indicated database record(s). Arrange to write "free storage" database markers in it's place, positively erasing what had been there before.

Definition at line 158 of file db_alloc.c.

References bu_bomb(), bu_free(), bu_log(), directory::d_flags, directory::d_len, directory::d_namep, directory::d_un, db5_write_free(), db_zapper(), db_i::dbi_freep, db_i::dbi_version, DEBUG_DB, record::i, NULL, directory::ptr, RT_CK_DBI, RT_CK_DIR, RT_DIR_INMEM, RT_G_DEBUG, and rt_memfree().

Referenced by db_put_external(), and wdb_kill_cmd().

Here is the call graph for this function:

RT_EXPORT int db_zapper struct db_i dbip,
struct directory dp,
int  start
 

D B _ Z A P P E R

Using a single call to db_put(), write multiple zeroed records out, all with u_id field set to ID_FREE. This will zap all records from "start" to the end of this entry.

Returns: -1 on error 0 on success (from db_put())

Definition at line 203 of file db_alloc.c.

References BU_ASSERT_LONG, bu_bomb(), bu_free(), bu_log(), bu_malloc(), bzero, directory::d_flags, directory::d_len, directory::d_namep, db_put(), db_i::dbi_read_only, db_i::dbi_version, DEBUG_DB, record::i, ID_FREE, RT_CK_DBI, RT_CK_DIR, RT_DIR_INMEM, RT_G_DEBUG, and record::u_id.

Referenced by db_alloc(), and db_delete().

Here is the call graph for this function:

RT_EXPORT void db_dup_db_tree_state struct db_tree_state otsp,
const struct db_tree_state itsp
 

D B _ D U P _ D B _ T R E E _ S T A T E

Duplicate the contents of a db_tree_state structure, including a private copy of the ts_mater field(s) and the attribute/value set.

Definition at line 75 of file db_tree.c.

References bu_attribute_value_set::avp, bu_avs_add(), bu_avs_init(), bu_avs_init_empty(), bu_malloc(), bu_attribute_value_set::count, record::i, mater_info::ma_shader, bu_attribute_value_pair::name, NULL, RT_CK_DBI, RT_CK_DBTS, db_tree_state::ts_attrs, db_tree_state::ts_dbip, db_tree_state::ts_mater, and bu_attribute_value_pair::value.

Referenced by db_dup_combined_tree_state(), db_new_combined_tree_state(), db_recurse(), and db_recurse_subtree().

Here is the call graph for this function:

RT_EXPORT void db_free_db_tree_state struct db_tree_state tsp  ) 
 

D B _ F R E E _ D B _ T R E E _ S T A T E

Release dynamic fields inside the structure, but not the structure itself.

Definition at line 111 of file db_tree.c.

References bu_attribute_value_set::avp, bu_avs_free(), bu_free(), mater_info::ma_shader, bu_attribute_value_set::max, NULL, RT_CK_DBI, RT_CK_DBTS, db_tree_state::ts_attrs, db_tree_state::ts_dbip, and db_tree_state::ts_mater.

Referenced by db_free_combined_tree_state(), db_path_to_mat(), db_recurse(), and db_recurse_subtree().

Here is the call graph for this function:

RT_EXPORT void db_init_db_tree_state struct db_tree_state tsp,
struct db_i dbip,
struct resource resp
 

D B _ I N I T _ D B _ T R E E _ S T A T E

In most cases, you don't want to use this routine, you want to struct copy mged_initial_tree_state or rt_initial_tree_state, and then set ts_dbip in your copy.

Definition at line 134 of file db_tree.c.

References bu_avs_init_empty(), bzero, MAT_IDN, RT_CK_DBI, RT_CK_RESOURCE, and RT_DBTS_MAGIC.

Referenced by db_parse_1anim(), db_path_to_mat(), rt_tcl_import_from_path(), and wdb_facetize_cmd().

Here is the call graph for this function:

RT_EXPORT struct combined_tree_state* db_new_combined_tree_state const struct db_tree_state tsp,
const struct db_full_path pathp
 

Referenced by db_gettree_leaf(), db_gettree_region_end(), and db_recurse().

RT_EXPORT struct combined_tree_state* db_dup_combined_tree_state const struct combined_tree_state old  ) 
 

D B _ D U P _ C O M B I N E D _ T R E E _ S T A T E

Definition at line 171 of file db_tree.c.

References BU_GETSTRUCT, combined_tree_state::cts_p, combined_tree_state::cts_s, db_dup_db_tree_state(), db_dup_full_path(), db_full_path_init(), RT_CK_CTS, and RT_CTS_MAGIC.

Referenced by db_dup_subtree().

Here is the call graph for this function:

RT_EXPORT void db_free_combined_tree_state struct combined_tree_state ctsp  ) 
 

Referenced by db_free_tree(), db_walk_dispatcher(), db_walk_subtree(), and db_walk_tree().

RT_EXPORT void db_pr_tree_state const struct db_tree_state tsp  ) 
 

Referenced by db_pr_combined_tree_state().

RT_EXPORT void db_pr_combined_tree_state const struct combined_tree_state ctsp  ) 
 

Referenced by db_recurse(), and db_walk_dispatcher().

RT_EXPORT int db_apply_state_from_comb struct db_tree_state tsp,
const struct db_full_path pathp,
const struct rt_comb_internal comb
 

Referenced by db_follow_path(), and db_recurse().

RT_EXPORT int db_apply_state_from_memb struct db_tree_state tsp,
struct db_full_path pathp,
const union tree tp
 

D B _ A P P L Y _ S T A T E _ F R O M _ M E M B

Updates state via *tsp, pushes member's directory entry on *pathp. (Caller is responsible for popping it).

Returns - -1 failure 0 success, member pushed on path

Definition at line 373 of file db_tree.c.

References bn_mat_mul(), bu_free(), bu_log(), db_add_node_to_full_path(), db_apply_anims(), db_lookup(), db_path_to_string(), DIR_NULL, LOOKUP_QUIET, MAT_COPY, MAT_IDN, NULL, RT_CK_DBTS, RT_CK_FULL_PATH, RT_CK_TREE, tree::tree_db_leaf::tl_mat, tree::tree_db_leaf::tl_name, tree::tr_l, db_tree_state::ts_dbip, db_tree_state::ts_mat, db_tree_state::ts_mater, db_tree_state::ts_sofar, and TS_SOFAR_REGION.

Referenced by db_apply_state_from_one_member(), and db_recurse_subtree().

Here is the call graph for this function:

RT_EXPORT int db_apply_state_from_one_member struct db_tree_state tsp,
struct db_full_path pathp,
const char *  cp,
int  sofar,
const union tree tp
 

D B _ A P P L Y _ S T A T E _ F R O M _ O N E _ M E M B E R

Returns - -1 found member, failed to apply state 0 unable to find member 'cp' 1 state applied OK

Definition at line 423 of file db_tree.c.

References bu_bomb(), bu_log(), db_apply_state_from_memb(), db_apply_state_from_one_member(), OP_DB_LEAF, OP_INTERSECT, OP_SUBTRACT, OP_UNION, OP_XOR, RT_CHECK_DBI, RT_CK_DBTS, RT_CK_FULL_PATH, RT_CK_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, tree::tree_db_leaf::tl_name, tree::tr_b, tree::tr_l, db_tree_state::ts_dbip, db_tree_state::ts_sofar, TS_SOFAR_INTER, and TS_SOFAR_MINUS.

Referenced by db_apply_state_from_one_member(), and db_follow_path().

Here is the call graph for this function:

RT_EXPORT union tree* db_find_named_leaf union tree tp,
const char *  cp
 

D B _ F I N D _ N A M E D _ L E A F

The search stops on the first match.

Returns - tp if found TREE_NULL if not found in this tree

Definition at line 478 of file db_tree.c.

References bu_bomb(), bu_log(), db_find_named_leaf(), OP_DB_LEAF, OP_INTERSECT, OP_SUBTRACT, OP_UNION, OP_XOR, RT_CK_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, tree::tree_db_leaf::tl_name, tree::tr_b, tree::tr_l, and TREE_NULL.

Referenced by db_find_named_leaf().

Here is the call graph for this function:

RT_EXPORT union tree* db_find_named_leafs_parent int *  side,
union tree tp,
const char *  cp
 

D B _ F I N D _ N A M E D _ L E A F S _ P A R E N T

The search stops on the first match.

Returns - TREE_NULL if not found in this tree tp if found *side == 1 if leaf is on lhs. *side == 2 if leaf is on rhs.

Definition at line 519 of file db_tree.c.

References bu_bomb(), bu_log(), db_find_named_leafs_parent(), OP_DB_LEAF, OP_INTERSECT, OP_SUBTRACT, OP_UNION, OP_XOR, RT_CK_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, tree::tree_db_leaf::tl_name, tree::tr_b, tree::tr_l, and TREE_NULL.

Referenced by db_find_named_leafs_parent(), and db_tree_del_dbleaf().

Here is the call graph for this function:

RT_EXPORT void db_tree_del_lhs union tree tp,
struct resource resp
 

D B _ T R E E _ D E L _ L H S

Definition at line 564 of file db_tree.c.

References bu_bomb(), db_free_tree(), OP_DB_LEAF, OP_INTERSECT, OP_NMG_TESS, OP_NOP, OP_REGION, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XOR, RT_CK_TREE, RT_FREE_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, tree::tr_b, and TREE_NULL.

Referenced by db_non_union_push(), and db_tree_del_dbleaf().

Here is the call graph for this function:

RT_EXPORT void db_tree_del_rhs union tree tp,
struct resource resp
 

D B _ T R E E _ D E L _ R H S

Definition at line 608 of file db_tree.c.

References bu_bomb(), db_free_tree(), OP_DB_LEAF, OP_INTERSECT, OP_NMG_TESS, OP_NOP, OP_REGION, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XOR, RT_CK_TREE, RT_FREE_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, tree::tr_b, and TREE_NULL.

Referenced by db_non_union_push(), and db_tree_del_dbleaf().

Here is the call graph for this function:

RT_EXPORT int db_tree_del_dbleaf union tree **  tp,
const char *  cp,
struct resource resp
 

D B _ T R E E _ D E L _ D B L E A F

Given a name presumably referenced in a OP_DB_LEAF node, delete that node, and the operation node that references it. Not that this may not produce an equivalant tree, for example when rewriting (A - subtree) as (subtree), but that will be up to the caller/user to adjust. This routine gets rid of exactly two nodes in the tree: leaf, and op. Use some other routine if you wish to kill the entire rhs below "-" and "intersect" nodes.

The two nodes deleted will have their memory freed.

If the tree is a single OP_DB_LEAF node, the leaf is freed and *tp is set to NULL.

Returns - -3 Internal error -2 Tree is empty -1 Unable to find OP_DB_LEAF node specified by 'cp'. 0 OK

Definition at line 672 of file db_tree.c.

References bu_log(), db_find_named_leafs_parent(), db_free_tree(), db_tree_del_dbleaf(), db_tree_del_lhs(), db_tree_del_rhs(), OP_DB_LEAF, RT_CK_RESOURCE, RT_CK_TREE, TREE_NULL, and void().

Referenced by db_tree_del_dbleaf(), and wdb_remove_cmd().

Here is the call graph for this function:

RT_EXPORT void db_tree_mul_dbleaf union tree tp,
const mat_t  mat
 

D B _ T R E E _ M U L _ D B L E A F

Multiply on the left every matrix found in a DB_LEAF node in a tree.

Definition at line 713 of file db_tree.c.

References bn_mat_dup(), bn_mat_mul(), bu_bomb(), bu_log(), db_tree_mul_dbleaf(), MAT_COPY, NULL, OP_DB_LEAF, OP_INTERSECT, OP_SUBTRACT, OP_UNION, OP_XOR, RT_CK_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, tree::tree_db_leaf::tl_mat, tree::tr_b, and tree::tr_l.

Referenced by db_tree_mul_dbleaf().

Here is the call graph for this function:

RT_EXPORT void db_tree_funcleaf struct db_i dbip,
struct rt_comb_internal comb,
union tree comb_tree,
void(*)()  leaf_func,
genptr_t  user_ptr1,
genptr_t  user_ptr2,
genptr_t  user_ptr3
 

D B _ T R E E _ F U N C L E A F

This routine traverses a combination (union tree) in LNR order and calls the provided function for each OP_DB_LEAF node. Note that this routine does not go outside this one combination!!!! was comb_functree().

Definition at line 754 of file db_tree.c.

References bu_bomb(), bu_log(), db_tree_funcleaf(), OP_DB_LEAF, OP_INTERSECT, OP_SUBTRACT, OP_UNION, OP_XOR, RT_CK_DBI, and RT_CK_TREE.

Referenced by db_tree_funcleaf(), wdb_identitize(), and wdb_showmats_cmd().

Here is the call graph for this function:

RT_EXPORT int db_follow_path struct db_tree_state tsp,
struct db_full_path total_path,
const struct db_full_path new_path,
int  noisy,
int  depth
 

D B _ F O L L O W _ P A T H

Starting with possible prior partial path and corresponding accumulated state, follow the path given by "new_path", updating *tsp and *total_path with full state information along the way. In a better world, there would have been a "combined_tree_state" arg.

Parameter 'depth' controls how much of 'new_path' is used: 0 use all of new_path >0 use only this many of the first elements of the path <0 use all but this many path elements.

A much more complete version of rt_plookup() and pathHmat(). There is also a TCL interface.

Returns - 0 success (plus *tsp is updated) -1 error (*tsp values are not useful)

Definition at line 810 of file db_tree.c.

References animate::an_forw, animate::an_path, ANIM_NULL, bn_mat_mul(), bu_free(), bu_log(), directory::d_flags, directory::d_namep, db_add_node_to_full_path(), db_apply_state_from_comb(), db_apply_state_from_one_member(), db_do_anim(), DB_FULL_PATH_CUR_DIR, db_path_to_string(), db_i::dbi_anroot, DEBUG_TREEWALK, DIR_COMB, DIR_NULL, db_full_path::fp_len, db_full_path::fp_names, rt_db_internal::idb_ptr, MAT_COPY, MAT_IDN, NULL, rt_bomb(), RT_CHECK_DBI, RT_CK_ANIMATE, RT_CK_COMB, RT_CK_DBTS, RT_CK_DIR, RT_CK_FULL_PATH, RT_CK_RESOURCE, rt_db_free_internal(), rt_db_get_internal(), RT_G_DEBUG, rt_comb_internal::tree, db_tree_state::ts_dbip, db_tree_state::ts_mat, db_tree_state::ts_mater, and db_tree_state::ts_resp.

Referenced by db_follow_path_for_state(), db_path_to_mat(), and rt_tcl_import_from_path().

Here is the call graph for this function:

RT_EXPORT int db_follow_path_for_state struct db_tree_state tsp,
struct db_full_path total_path,
const char *  orig_str,
int  noisy
 

D B _ F O L L O W _ P A T H _ F O R _ S T A T E

Follow the slash-separated path given by "cp", and update *tsp and *total_path with full state information along the way.

A much more complete version of rt_plookup().

Returns - 0 success (plus *tsp is updated) -1 error (*tsp values are not useful)

Definition at line 972 of file db_tree.c.

References db_follow_path(), db_free_full_path(), db_string_to_path(), db_full_path::fp_len, RT_CK_DBTS, and db_tree_state::ts_dbip.

Referenced by db_parse_1anim(), and db_walk_tree().

Here is the call graph for this function:

RT_EXPORT union tree* db_recurse struct db_tree_state tsp,
struct db_full_path pathp,
struct combined_tree_state **  region_start_statepp,
genptr_t  client_data
 

D B _ R E C U R S E

Recurse down the tree, finding all the leaves (or finding just all the regions).

ts_region_start_func() is called to permit regions to be skipped. It is not intended to be used for collecting state.

Definition at line 1125 of file db_tree.c.

References bn_mat_ck(), bu_avs_merge(), bu_free(), bu_log(), directory::d_flags, directory::d_namep, db_apply_state_from_comb(), db_dup_db_tree_state(), db_free_db_tree_state(), DB_FULL_PATH_CUR_DIR, db_new_combined_tree_state(), db_path_to_string(), db_pr_combined_tree_state(), db_recurse_subtree(), DEBUG_TREEWALK, DIR_COMB, db_full_path::fp_len, rt_db_internal::idb_avs, rt_db_internal::idb_ptr, tree::magic, NULL, OP_NOP, RT_CHECK_DBI, RT_CK_COMB, RT_CK_DBTS, RT_CK_FULL_PATH, RT_CK_RESOURCE, RT_CK_TREE, rt_db_free_internal(), rt_db_get_internal(), RT_DIR_PHONY_ADDR, RT_G_DEBUG, RT_GET_TREE, RT_INIT_DB_INTERNAL, RT_TREE_MAGIC, rt_comb_internal::tree, TREE_NULL, db_tree_state::ts_attrs, db_tree_state::ts_dbip, db_tree_state::ts_mat, db_tree_state::ts_resp, db_tree_state::ts_sofar, and db_tree_state::ts_stop_at_regions.

Referenced by db_recurse_subtree(), db_walk_subtree(), and db_walk_tree().

Here is the call graph for this function:

RT_EXPORT union tree* db_dup_subtree const union tree tp,
struct resource resp
 

D B _ D U P _ S U B T R E E

Definition at line 1344 of file db_tree.c.

References bn_mat_dup(), bu_log(), bu_strdup, db_dup_combined_tree_state(), db_dup_subtree(), OP_DB_LEAF, OP_GUARD, OP_INTERSECT, OP_NOP, OP_NOT, OP_REGION, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XNOP, OP_XOR, rt_bomb(), RT_CK_RESOURCE, RT_CK_TREE, RT_GET_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, tree::tree_cts::tc_ctsp, tree::tree_db_leaf::tl_mat, tree::tree_db_leaf::tl_name, tree::tr_b, tree::tr_c, tree::tr_l, and TREE_NULL.

Referenced by db_dup_subtree(), db_non_union_push(), and db_tree_flatten_describe().

Here is the call graph for this function:

RT_EXPORT void db_free_tree union tree tp,
struct resource resp
 

Referenced by db_free_tree(), db_non_union_push(), db_recurse_subtree(), db_tcl_tree_parse(), db_tree_del_dbleaf(), db_tree_del_lhs(), db_tree_del_rhs(), nmg_booltree_evaluate(), rt_clean(), rt_comb_export4(), rt_comb_ifree(), rt_del_regtree(), rt_tree_elim_nops(), wdb_facetize_cmd(), and wdb_free_tokens().

RT_EXPORT void db_left_hvy_node union tree tp  ) 
 

D B _ L E F T _ H V Y _ N O D E

Re-balance this node to make it left heavy. Unions operators will be moved to left side. when finished "tp" MUST still point to top node od this subtree.

Definition at line 1562 of file db_tree.c.

References OP_UNION, RT_CK_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, and tree::tr_b.

Referenced by db_non_union_push().

RT_EXPORT void db_non_union_push union tree tp,
struct resource resp
 

Referenced by db_non_union_push(), db_tree_flatten_describe(), rt_comb_export4(), and wdb_combadd().

RT_EXPORT int db_count_tree_nodes const union tree tp,
int  count
 

D B _ C O U N T _ T R E E _ N O D E S

Return a count of the number of "union tree" nodes below "tp", including tp.

Definition at line 1810 of file db_tree.c.

References bu_log(), db_count_tree_nodes(), OP_DB_LEAF, OP_GUARD, OP_INTERSECT, OP_NOP, OP_NOT, OP_REGION, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XNOP, OP_XOR, rt_bomb(), RT_CK_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, and tree::tr_b.

Referenced by db_count_tree_nodes().

Here is the call graph for this function:

RT_EXPORT int db_is_tree_all_unions const union tree tp  ) 
 

D B _ I S _ T R E E _ A L L _ U N I O N S

Returns - 1 if this tree contains nothing but union operations. 0 if at least one subtraction or intersection op exists.

Definition at line 1852 of file db_tree.c.

References bu_log(), db_is_tree_all_unions(), OP_DB_LEAF, OP_GUARD, OP_INTERSECT, OP_NOP, OP_NOT, OP_REGION, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XNOP, OP_XOR, rt_bomb(), RT_CK_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, and tree::tr_b.

Referenced by db_is_tree_all_unions().

Here is the call graph for this function:

RT_EXPORT int db_count_subtree_regions const union tree tp  ) 
 

D B _ C O U N T _ S U B T R E E _ R E G I O N S

Definition at line 1889 of file db_tree.c.

References bu_log(), db_count_subtree_regions(), OP_DB_LEAF, OP_GUARD, OP_INTERSECT, OP_NOP, OP_NOT, OP_REGION, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XNOP, OP_XOR, rt_bomb(), RT_CK_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, and tree::tr_b.

Referenced by db_count_subtree_regions().

Here is the call graph for this function:

RT_EXPORT int db_tally_subtree_regions union tree tp,
union tree **  reg_trees,
int  cur,
int  lim,
struct resource resp
 

D B _ T A L L Y _ S U B T R E E _ R E G I O N S

Definition at line 1927 of file db_tree.c.

References bu_log(), db_tally_subtree_regions(), OP_DB_LEAF, OP_GUARD, OP_INTERSECT, OP_NOP, OP_NOT, OP_REGION, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XNOP, OP_XOR, rt_bomb(), RT_CK_RESOURCE, RT_CK_TREE, RT_GET_TREE, tree::tree_node::tb_left, tree::tree_node::tb_right, and tree::tr_b.

Referenced by db_tally_subtree_regions().

Here is the call graph for this function:

RT_EXPORT int db_walk_tree struct db_i dbip,
int  argc,
const char **  argv,
int  ncpu,
const struct db_tree_state init_state,
int(*)(struct db_tree_state *, struct db_full_path *, const struct rt_comb_internal *, genptr_t client_data)  reg_start_func,
union tree *(*)(struct db_tree_state *, struct db_full_path *, union tree *, genptr_t client_data)  reg_end_func,
union tree *(*)(struct db_tree_state *, struct db_full_path *, struct rt_db_internal *, genptr_t client_data)  leaf_func,
genptr_t  client_data
 

Referenced by rt_gettrees_muves(), rt_submodel_plot(), wdb_facetize_cmd(), wdb_pathlist_cmd(), and wdb_push_cmd().

RT_EXPORT int db_path_to_mat struct db_i dbip,
struct db_full_path pathp,
mat_t  mat,
int  depth,
struct resource resp
 

D B _ P A T H _ T O _ M A T

Returns - 1 OK, path matrix written into 'mat'. 0 FAIL

Called in librt/db_tree.c, mged/dodraw.c, and mged/animedit.c

Definition at line 2477 of file db_tree.c.

References db_follow_path(), db_free_db_tree_state(), db_free_full_path(), db_full_path_init(), db_init_db_tree_state(), LOOKUP_NOISY, MAT_COPY, rt_bomb(), RT_CHECK_DBI, RT_CK_FULL_PATH, and db_tree_state::ts_mat.

Referenced by db_region_mat().

Here is the call graph for this function:

RT_EXPORT void db_apply_anims struct db_full_path pathp,
struct directory dp,
mat_t  stack,
mat_t  arc,
struct mater_info materp
 

D B _ A P P L Y _ A N I M S

'arc' may be a null pointer, signifying an identity matrix. 'materp' may be a null pointer, signifying that the region has already been finalized above this point in the tree.

Definition at line 2514 of file db_tree.c.

References animate::an_forw, animate::an_path, ANIM_NULL, bu_free(), bu_log(), directory::d_animate, directory::d_namep, db_path_to_string(), DEBUG_ANIM, db_full_path::fp_len, db_full_path::fp_names, RT_CK_ANIMATE, and RT_G_DEBUG.

Referenced by db_apply_state_from_memb().

Here is the call graph for this function:

RT_EXPORT int db_region_mat mat_t  m,
struct db_i dbip,
const char *  name,
struct resource resp
 

D B _ R E G I O N _ M A T

Given the name of a region, return the matrix which maps model coordinates into "region" coordinates.

Returns: 0 OK <0 Failure

Definition at line 2583 of file db_tree.c.

References bn_mat_inv(), bu_log(), db_free_full_path(), db_path_to_mat(), and db_string_to_path().

Referenced by db_shader_mat().

Here is the call graph for this function:

RT_EXPORT int db_shader_mat mat_t  model_to_shader,
const struct rt_i rtip,
const struct region rp,
point_t  p_min,
point_t  p_max,
struct resource resp
 

D B _ S H A D E R _ M A T XXX given that this routine depends on rtip, it should be called XXX rt_shader_mat().

Given a region, return a matrix which maps model coordinates into region "shader space". This is a space where points in the model within the bounding box of the region are mapped into "region" space (the coordinate system in which the region is defined). The area occupied by the region's bounding box (in region coordinates) are then mapped into the unit cube. This unit cube defines "shader space".

Returns: 0 OK <0 Failure

Definition at line 2631 of file db_tree.c.

References bn_mat_mul(), bn_mat_print(), bu_bomb(), bu_log(), bu_semaphore_acquire(), bu_semaphore_release(), db_region_mat(), MAT_DELTAS_VEC, MAT_IDN, MAT_SCALE_VEC, region::reg_name, rt_basename(), RT_CK_RESOURCE, RT_CK_RTI, rt_clean(), rt_gettree(), rt_new_rti(), rt_rpp_region(), RT_SEM_MODEL, rt_i::rti_dbip, rt_i::useair, V3ARGS, VEQUAL, VINVDIR, VSCALE, and VSUB2.

Here is the call graph for this function:

RT_EXPORT int rt_db_get_internal struct rt_db_internal ip,
const struct directory dp,
const struct db_i dbip,
const mat_t  mat,
struct resource resp
 

Definition at line 109 of file dir.c.

References bn_mat_identity, bu_avs_init_empty(), bu_free_external(), BU_INIT_EXTERNAL, bu_log(), directory::d_flags, directory::d_namep, db_get_external(), db_i::dbi_version, DIR_COMB, ID_COMBINATION, NULL, RT_CK_DB_INTERNAL, rt_db_free_internal(), rt_db_get_internal5(), rt_id_solid(), and RT_INIT_DB_INTERNAL.

Referenced by add_solid(), db_follow_path(), db_recurse(), db_update_nref(), main(), rt_arb_uv(), rt_db_lookup_internal(), rt_extrude_import(), rt_extrude_import5(), rt_find_paths(), rt_tcl_import_from_path(), rt_vlist_solid(), wdb_adjust_cmd(), wdb_binary_cmd(), wdb_bot_decimate_cmd(), wdb_comb_std_cmd(), wdb_combadd(), wdb_do_list(), wdb_find_cmd(), wdb_get_obj_bounds2(), wdb_identitize(), wdb_import(), wdb_killall_cmd(), wdb_move_all_cmd(), wdb_move_cmd(), wdb_nmg_collapse_cmd(), wdb_nmg_simplify_cmd(), wdb_node_write(), wdb_ocenter_cmd(), wdb_orotate_cmd(), wdb_oscale_cmd(), wdb_otranslate_cmd(), wdb_push_cmd(), wdb_remove_cmd(), wdb_rmap_cmd(), wdb_shells_cmd(), wdb_showmats_cmd(), wdb_smooth_bot_cmd(), and wdb_whatid_cmd().

Here is the call graph for this function:

RT_EXPORT int rt_db_put_internal struct directory dp,
struct db_i dbip,
struct rt_db_internal ip,
struct resource resp
 

Definition at line 166 of file dir.c.

References bu_free_external(), BU_INIT_EXTERNAL, bu_log(), directory::d_namep, DB5_MAJORTYPE_BRLCAD, db_put_external(), db_i::dbi_version, rt_db_internal::idb_meth, RT_CK_DB_INTERNAL, rt_db_free_internal(), and rt_db_put_internal5().

Referenced by wdb_comb_std_cmd(), wdb_combadd(), wdb_facetize_cmd(), wdb_identitize(), wdb_make_bb_cmd(), wdb_move_all_cmd(), wdb_move_cmd(), wdb_nmg_collapse_cmd(), wdb_nmg_simplify_cmd(), wdb_ocenter_cmd(), wdb_orotate_cmd(), wdb_oscale_cmd(), wdb_otranslate_cmd(), wdb_push_cmd(), wdb_shells_cmd(), and wdb_smooth_bot_cmd().

Here is the call graph for this function:

RT_EXPORT int rt_fwrite_internal FILE *  fp,
const char *  name,
const struct rt_db_internal ip,
double  conv2mm
 

Definition at line 215 of file dir.c.

References bu_free_external(), BU_INIT_EXTERNAL, bu_log(), rt_db_internal::idb_meth, NULL, RT_CK_DB_INTERNAL, RT_CK_FUNCTAB, and rt_uniresource.

Here is the call graph for this function:

RT_EXPORT void rt_db_free_internal struct rt_db_internal ip,
struct resource resp
 

Definition at line 250 of file dir.c.

References bu_avs_free(), BU_AVS_MAGIC, rt_db_internal::idb_avs, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, bu_attribute_value_set::magic, NULL, RT_CK_DB_INTERNAL, RT_CK_FUNCTAB, and RT_INIT_DB_INTERNAL.

Referenced by add_solid(), db_follow_path(), db_functree(), db_preorder_traverse(), db_recurse(), main(), rt_arb_uv(), rt_db_external5_to_internal5(), rt_db_get_internal(), rt_db_put_internal(), rt_db_put_internal5(), rt_extrude_xform(), rt_find_paths(), rt_generic_xform(), rt_hf_to_dsp(), rt_hlf_xform(), rt_mk_binunif(), rt_vlist_solid(), wdb_adjust_cmd(), wdb_binary_cmd(), wdb_bot_decimate_cmd(), wdb_comb_std_cmd(), wdb_combadd(), wdb_do_list(), wdb_facetize_cmd(), wdb_get_cmd(), wdb_get_obj_bounds2(), wdb_get_type_cmd(), wdb_make_bb_cmd(), wdb_move_arb_edge_cmd(), wdb_move_arb_face_cmd(), wdb_move_cmd(), wdb_nmg_collapse_cmd(), wdb_nmg_simplify_cmd(), wdb_ocenter_cmd(), wdb_orotate_cmd(), wdb_oscale_cmd(), wdb_otranslate_cmd(), wdb_push_cmd(), wdb_put_internal(), wdb_rotate_arb_face_cmd(), wdb_showmats_cmd(), wdb_smooth_bot_cmd(), and wdb_whatid_cmd().

Here is the call graph for this function:

RT_EXPORT int rt_db_lookup_internal struct db_i dbip,
const char *  obj_name,
struct directory **  dpp,
struct rt_db_internal ip,
int  noisy,
struct resource resp
 

Definition at line 287 of file dir.c.

References bu_log(), directory::d_namep, db_lookup(), DIR_NULL, ID_NULL, idb_type, LOOKUP_NOISY, NULL, and rt_db_get_internal().

Here is the call graph for this function:

RT_EXPORT void rt_optim_tree register union tree tp,
struct resource resp
 

Definition at line 1383 of file tree.c.

References bu_log(), OP_INTERSECT, OP_NOP, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XOR, resource::re_boolstack, RT_CK_TREE, rt_grow_boolstack(), tree::tree_node::tb_left, tree::tree_node::tb_right, tree::tr_b, and TREE_NULL.

Referenced by rt_prep_parallel().

Here is the call graph for this function:

RT_EXPORT void db_get_directory register struct resource resp  ) 
 

D B _ G E T _ D I R E C T O R Y

This routine is called by the RT_GET_DIRECTORY macro when the freelist is exhausted. Rather than simply getting one additional structure, we get a whole batch, saving overhead.

Definition at line 511 of file db_lookup.c.

References BU_ASSERT_PTR, BU_CK_PTBL, BU_FLSTR, bu_malloc(), bu_malloc_len_roundup(), bu_ptbl_ins(), NULL, RT_CK_RESOURCE, and RT_DIR_MAGIC.

Here is the call graph for this function:

RT_EXPORT void db_functree struct db_i dbip,
struct directory dp,
void(*)(struct db_i *, struct directory *, genptr_t comb_func,
void(*)(struct db_i *, struct directory *, genptr_t leaf_func,
struct resource resp,
genptr_t  client_data
 

D B _ F U N C T R E E

This subroutine is called for a no-frills tree-walk, with the provided subroutines being called at every combination and leaf (solid) node, respectively.

This routine is recursive, so no variables may be declared static.

Definition at line 234 of file db_walk.c.

References bu_free(), bu_log(), directory::d_flags, directory::d_len, directory::d_namep, db_functree(), db_functree_subtree(), db_getmrec(), db_lookup(), db_i::dbi_version, DEBUG_DB, DIR_COMB, DIR_NULL, rt_db_internal::idb_ptr, LOOKUP_NOISY, M, NULL, RT_CK_DBI, rt_db_free_internal(), rt_db_get_internal5(), RT_G_DEBUG, and rt_comb_internal::tree.

Referenced by db_functree(), db_functree_subtree(), and wdb_killtree_cmd().

Here is the call graph for this function:

RT_EXPORT int rt_arb_get_cgtype  ) 
 

Referenced by rt_arb_std_type().

RT_EXPORT int rt_arb_std_type const struct rt_db_internal ip,
const struct bn_tol tol
 

R T _ A R B _ S T D _ T Y P E

Given an ARB in internal form, return it's specific ARB type.

Set tol.dist = 0.0001 to obtain past behavior.

Returns - 0 Error in input ARB 4 ARB4 5 ARB5 6 ARB6 7 ARB7 8 ARB8

Implicit return - rt_arb_internal pt[] array reorganized into GIFT "standard" order.

Definition at line 324 of file g_arb.c.

References BN_CK_TOL, bu_bomb(), ID_ARB8, rt_db_internal::idb_ptr, RT_ARB_CK_MAGIC, rt_arb_get_cgtype(), and RT_CK_DB_INTERNAL.

Referenced by rt_arb_describe(), wdb_get_type_cmd(), wdb_move_arb_edge_cmd(), wdb_move_arb_face_cmd(), and wdb_rotate_arb_face_cmd().

Here is the call graph for this function:

RT_EXPORT void rt_arb_centroid  ) 
 

RT_EXPORT int rt_arb_calc_points  ) 
 

Referenced by wdb_move_arb_face_cmd().

RT_EXPORT int rt_arb_3face_intersect point_t  point,
const plane_t  planes[6],
int  type,
int  loc
 

R T _ A R B _ 3 F A C E _ I N T E R S E C T

Finds the intersection point of three faces of an ARB.

Returns - 0 success, value is in 'point' -1 failure

Definition at line 1754 of file g_arb.c.

References bn_mkpoint_3planes().

Referenced by rt_arb_calc_points().

Here is the call graph for this function:

RT_EXPORT void rt_ell fastf_t ov,
const fastf_t V,
const fastf_t A,
const fastf_t B,
int  sides
 

Referenced by rt_ehy_plot(), rt_ehy_tess(), rt_epa_plot(), and rt_epa_tess().

RT_EXPORT void rt_vls_pipept struct bu_vls vp,
int  seg_no,
const struct rt_db_internal ip,
double  mm2local
 

R T _ V L S _ P I P E P T

Definition at line 469 of file g_pipe.c.

References BU_LIST_FIRST, BU_LIST_NEXT, BU_LIST_NOT_HEAD, bu_vls_strcat(), rt_db_internal::idb_ptr, wdb_pipept::l, rt_pipe_internal::pipe_segs_head, wdb_pipept::pp_bendradius, wdb_pipept::pp_coord, wdb_pipept::pp_id, wdb_pipept::pp_od, RT_PIPE_CK_MAGIC, V3ARGS, and VSCALE.

Here is the call graph for this function:

RT_EXPORT void rt_pipept_print  ) 
 

RT_EXPORT int rt_pipe_ck const struct bu_list headp  ) 
 

R T _ P I P E _ C K

Check pipe solid Bend radius must be at least as large as the outer radius All bends must have constant diameters No consecutive LINEAR sections without BENDS unless the LINEAR sections are collinear.

Definition at line 3681 of file g_pipe.c.

References bn_pi, BU_LIST_FIRST, BU_LIST_NEXT, BU_LIST_NOT_HEAD, bu_log(), wdb_pipept::l, MAGNITUDE, wdb_pipept::pp_bendradius, wdb_pipept::pp_coord, wdb_pipept::pp_od, SQRT_SMALL_FASTF, V3ARGS, VCROSS, VDIVIDE_TOL, VDOT, VNEAR_ZERO, VSCALE, VSETALL, and VSUB2.

Here is the call graph for this function:

RT_EXPORT int rt_mk_parabola struct rt_pt_node pts,
fastf_t  r,
fastf_t  b,
fastf_t  dtol,
fastf_t  ntol
 

R T _ M K _ P A R A B O L A

Approximate a parabola with line segments. The initial single segment is broken at the point farthest from the parabola if that point is not aleady within the distance and normal error tolerances. The two resulting segments are passed recursively to this routine until each segment is within tolerance.

Definition at line 848 of file g_rpc.c.

References NEAR_ZERO, rt_pt_node::next, rt_pt_node::p, RPC_TOL, rt_mk_parabola(), rt_ptalloc(), VDOT, VMOVE, VSET, VUNITIZE, X, Y, and Z.

Referenced by rt_epa_plot(), rt_epa_tess(), rt_mk_parabola(), rt_rpc_plot(), and rt_rpc_tess().

Here is the call graph for this function:

RT_EXPORT struct rt_pt_node* rt_ptalloc  ) 
 

Definition at line 904 of file g_rpc.c.

References bu_malloc().

Referenced by rt_ehy_plot(), rt_ehy_tess(), rt_ell4(), rt_epa_plot(), rt_epa_tess(), rt_mk_ell(), rt_mk_hyperbola(), rt_mk_parabola(), rt_rhc_plot(), rt_rhc_tess(), rt_rpc_plot(), and rt_rpc_tess().

Here is the call graph for this function:

RT_EXPORT unsigned long rt_memalloc struct mem_map **  pp,
unsigned  size
 

Referenced by db_alloc().

RT_EXPORT struct mem_map* rt_memalloc_nosplit struct mem_map **  pp,
unsigned  size
 

Referenced by db5_realloc().

RT_EXPORT unsigned long rt_memget struct mem_map **  pp,
unsigned int  size,
unsigned int  place
 

RT_EXPORT void rt_memfree struct mem_map **  pp,
unsigned  size,
unsigned long  addr
 

Referenced by db5_diradd_handler(), db5_realloc(), db_delete(), and db_scan().

RT_EXPORT void rt_mempurge struct mem_map **  pp  ) 
 

Definition at line 382 of file memalloc.c.

References mem_map::m_nxtp, and MAP_NULL.

Referenced by db_close(), wdb_concat_cmd(), and wdb_dup_cmd().

RT_EXPORT void rt_memprint struct mem_map **  pp  ) 
 

Definition at line 407 of file memalloc.c.

References bu_log(), mem_map::m_addr, mem_map::m_nxtp, and mem_map::m_size.

Here is the call graph for this function:

RT_EXPORT void rt_memclose  ) 
 

Definition at line 422 of file memalloc.c.

References BU_FLSTR, bu_free(), mem_map::m_nxtp, and MAP_NULL.

Referenced by db_close().

Here is the call graph for this function:

RT_EXPORT struct bn_vlblock * rt_vlblock_init  ) 
 

Definition at line 102 of file vlist.c.

References bn_vlblock_init().

Referenced by nmg_2face_plot(), nmg_face_plot(), nmg_pl_2fu(), nmg_pl_comb_fu(), nmg_pl_fu(), nmg_pl_isect(), nmg_pl_lu(), nmg_pl_m(), nmg_pl_r(), nmg_pl_s(), nmg_pl_shell(), nmg_plot_lu_around_eu(), and nmg_show_broken_classifier_stuff().

Here is the call graph for this function:

RT_EXPORT void rt_vlblock_free struct bn_vlblock vbp  ) 
 

Definition at line 111 of file vlist.c.

References BN_CK_VLBLOCK, BN_FREE_VLIST, BU_LIST_IS_EMPTY, bn_vlblock::free_vlist_hd, bn_vlblock::head, bn_vlblock::nused, and bn_vlblock::rgb.

Referenced by nmg_2face_plot(), nmg_face_plot(), nmg_pl_2fu(), nmg_pl_comb_fu(), nmg_pl_fu(), nmg_pl_isect(), nmg_pl_lu(), nmg_pl_m(), nmg_pl_r(), nmg_pl_s(), nmg_pl_shell(), nmg_plot_lu_around_eu(), and nmg_show_broken_classifier_stuff().

RT_EXPORT struct bu_list * rt_vlblock_find struct bn_vlblock vbp,
int  r,
int  g,
int  b
 

Definition at line 132 of file vlist.c.

References BN_CK_VLBLOCK, bn_vlblock::head, bn_vlblock::nused, and bn_vlblock::rgb.

Referenced by dgo_qray_data_to_vlist(), nmg_vlblock_around_eu(), nmg_vlblock_e(), nmg_vlblock_eu(), nmg_vlblock_v(), rt_label_vlist_verts(), rt_process_uplot_value(), and rt_uplot_to_vlist().

RT_EXPORT void rt_hitsort struct hit  h[],
int  nh
 

Referenced by rt_ars_shot(), rt_bot_piece_hitsegs(), rt_part_shot(), and rt_pg_shot().

RT_EXPORT int rt_pg_to_bot struct rt_db_internal ip,
const struct bn_tol tol,
struct resource resp
 

R T _ P G _ T O _ B O T

Convert in-memory form of a polysolid (pg) to a bag of triangles (BoT) There is no record in the V5 database for a polysolid.

Depends on the "max_npts" parameter having been set.

Returns - -1 FAIL 0 OK

Definition at line 889 of file g_pg.c.

References rt_bot_internal::bot_flags, BU_ASSERT_LONG, bu_calloc(), bu_log(), bu_malloc(), bn_tol::dist, rt_bot_internal::face_mode, rt_bot_internal::faces, ID_POLY, rt_db_internal::idb_ptr, LOCAL, rt_bot_internal::magic, MAGNITUDE, rt_pg_internal::max_npts, rt_bot_internal::mode, rt_pg_internal::npoly, rt_pg_internal::rt_pg_face_internal::npts, NULL, rt_bot_internal::num_faces, rt_bot_internal::num_vertices, rt_bot_internal::orientation, rt_pg_internal::poly, RT_BOT_CCW, RT_BOT_INTERNAL_MAGIC, RT_BOT_SOLID, RT_CK_DB_INTERNAL, RT_CK_RESOURCE, RT_CK_TOL, RT_PG_CK_MAGIC, rt_bot_internal::thickness, tri_specific::tri_BA, tri_specific::tri_CA, tri_specific::tri_wn, VCROSS, rt_bot_internal::vertices, rt_pg_internal::rt_pg_face_internal::verts, VMOVE, and VSUB2.

Here is the call graph for this function:

RT_EXPORT int rt_pg_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ P G _ P L O T

Definition at line 490 of file g_pg.c.

References BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, rt_db_internal::idb_ptr, rt_pg_internal::npoly, rt_pg_internal::poly, RT_ADD_VLIST, RT_CK_DB_INTERNAL, and RT_PG_CK_MAGIC.

RT_EXPORT int rt_pg_plot_poly struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ P G _ P L O T _ P O L Y

Convert to vlist, draw as polygons.

Definition at line 520 of file g_pg.c.

References BN_VLIST_POLY_DRAW, BN_VLIST_POLY_MOVE, BN_VLIST_POLY_START, rt_db_internal::idb_ptr, rt_pg_internal::npoly, rt_pg_internal::poly, RT_ADD_VLIST, RT_CK_DB_INTERNAL, RT_PG_CK_MAGIC, VCROSS, VSUB2, and VUNITIZE.

RT_EXPORT int rt_hf_to_dsp struct rt_db_internal db_intern,
struct resource resp
 

R T _ H F _ T O _ D S P

Convert in-memory form of a height-field (HF) to a displacement-map solid (DSP) in internal representation. There is no record in the V5 database for an HF.

Definition at line 139 of file g_hf.c.

References bn_mat_inv(), BU_GETSTRUCT, bu_log(), bu_vls_init(), bu_vls_strcat(), DB5_MAJORTYPE_BRLCAD, DEBUG_HF, rt_hf_internal::dfile, DSP_CUT_DIR_ADAPT, rt_hf_internal::file2mm, ID_DSP, rt_db_internal::idb_ptr, MAT_DELTAS_VEC, MAT_IDN, rt_hf_internal::n, RT_CK_DB_INTERNAL, RT_CK_RESOURCE, rt_db_free_internal(), RT_DSP_INTERNAL_MAGIC, RT_DSP_SRC_FILE, RT_G_DEBUG, RT_HF_CK_MAGIC, rt_hf_internal::shorts, rt_hf_internal::v, VCROSS, VSCALE, VUNITIZE, rt_hf_internal::w, rt_hf_internal::x, rt_hf_internal::xlen, rt_hf_internal::y, and rt_hf_internal::ylen.

Here is the call graph for this function:

RT_EXPORT int dsp_pos point_t  out,
struct soltab stp,
point_t  p
 

D S P _ P O S

Given an arbitrary point return the projection of that point onto the surface of the DSP. If the point is outside the bounds of the DSP then it will be projected to the nearest edge of the DSP. Return the cell number and the height above/below the plane

Definition at line 4380 of file g_dsp.c.

References bu_log(), CLAMP, DSP, dsp_specific::dsp_i, dsp_rpp::dsp_max, dsp_rpp::dsp_min, rt_dsp_internal::dsp_mtos, rt_dsp_internal::dsp_stom, ID_DSP, MAT4X3PNT, project_pt(), RT_CK_SOLTAB, RT_G_DEBUG, soltab::st_id, soltab::st_specific, V3ARGS, VPRINT, VSET, X, XSIZ, Y, and YSIZ.

Here is the call graph for this function:

RT_EXPORT void rt_pr_pt_vls struct bu_vls v,
const struct rt_i rtip,
const struct partition pp
 

Referenced by rt_pr_partitions(), and rt_pr_pt().

RT_EXPORT void rt_pr_seg_vls struct bu_vls ,
const struct seg
 

Referenced by rt_pr_pt_vls(), and rt_pr_seg().

RT_EXPORT void rt_pr_hit_vls struct bu_vls v,
const char *  str,
const struct hit hitp
 

Referenced by rt_pr_hit(), and rt_pr_pt_vls().

RT_EXPORT void rt_pr_hitarray_vls struct bu_vls v,
const char *  str,
const struct hit hitp,
int  count
 

RT_EXPORT void rt_pr_tree_vls struct bu_vls vls,
const union tree tp
 

Referenced by db_comb_describe(), main(), rt_pr_region(), and rt_pr_tree_vls().

RT_EXPORT char* rt_pr_tree_str const union tree tree  ) 
 

Definition at line 504 of file pr.c.

References bu_free(), bu_malloc(), bu_strdup, combined_tree_state::cts_p, directory::d_namep, db_path_to_string(), NULL, OP_DB_LEAF, OP_GUARD, OP_INTERSECT, OP_REGION, OP_SOLID, OP_SUBTRACT, OP_UNION, RT_CK_SOLTAB, RT_CK_TREE, rt_pr_tree_str(), soltab::st_dp, tree::tree_node::tb_left, tree::tree_node::tb_right, tree::tree_cts::tc_ctsp, tree::tree_db_leaf::tl_name, tree::tr_a, tree::tr_b, tree::tr_c, tree::tr_l, and tree::tree_leaf::tu_stp.

Referenced by Print_tree(), and rt_pr_tree_str().

Here is the call graph for this function:

RT_EXPORT void rt_pr_fallback_angle struct bu_vls str,
const char *  prefix,
const double  angles[5]
 

Referenced by rt_ell_describe(), rt_superell_describe(), and rt_tgc_describe().

RT_EXPORT void rt_find_fallback_angle double  angles[5],
const vect_t  vec
 

Referenced by rt_ell_describe(), rt_superell_describe(), and rt_tgc_describe().

RT_EXPORT void rt_pr_tol const struct bn_tol tol  ) 
 

Definition at line 766 of file pr.c.

References BN_CK_TOL, bu_log(), bn_tol::dist, bn_tol::dist_sq, bn_tol::para, and bn_tol::perp.

Referenced by nmg_is_crack_outie(), and rt_nmg_shot().

Here is the call graph for this function:

RT_EXPORT void rt_regionfix struct rt_i rtip  ) 
 

Definition at line 79 of file regionfix.c.

References bu_free(), BU_LIST_FOR, bu_log(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_strcat(), bu_vls_strcpy(), bu_vls_trunc(), db_i::dbi_filename, DEBUG_INSTANCE, fp, rt_i::HeadRegion, name, NULL, perror(), region::reg_instnum, region::reg_name, region::reg_regionid, regcomp(), regexec(), regfree(), RT_CK_RTI, RT_G_DEBUG, rt_read_cmd(), rt_i::rti_dbip, and rt_i::rti_region_fix_file.

Here is the call graph for this function:

RT_EXPORT int rt_id_solid struct bu_external ep  ) 
 

Definition at line 1218 of file table.c.

References BU_CK_EXTERNAL, bu_log(), DBID_ARBN, DBID_BOT, DBID_CLINE, DBID_EXTR, DBID_NMG, DBID_PARTICLE, DBID_PIPE, DBID_SKETCH, DBID_STRSOL, bu_external::ext_buf, ID_ARBN, ID_ARS, ID_ARS_A, ID_BOT, ID_BSOLID, ID_BSPLINE, ID_CLINE, ID_DSP, ID_EBM, ID_EXTRUDE, ID_HF, ID_MAX_SOLID, ID_NMG, ID_P_HEAD, ID_PARTICLE, ID_PIPE, ID_POLY, ID_SKETCH, ID_SOLID, ID_SUBMODEL, ID_VOL, int, record::s, record::solidrec::s_type, record::ss, record::strsol::ss_keyword, record::strsol::ss_name, and record::u_id.

Referenced by rt_db_get_internal().

Here is the call graph for this function:

RT_EXPORT const struct rt_functab* rt_get_functab_by_label const char *  label  ) 
 

Definition at line 1304 of file table.c.

References rt_functab::ft_label, and rt_functab::magic.

Referenced by wdb_form_cmd().

int rt_generic_xform struct rt_db_internal op,
const mat_t  mat,
struct rt_db_internal ip,
int  avail,
struct db_i dbip,
struct resource resp
 

Definition at line 1330 of file table.c.

References bu_avs_free(), bu_avs_init(), BU_AVS_MAGIC, bu_avs_merge(), bu_free_external(), BU_INIT_EXTERNAL, bu_log(), bu_attribute_value_set::count, db_i::dbi_version, bu_attribute_value_set::magic, RT_CK_DB_INTERNAL, RT_CK_DBI, RT_CK_RESOURCE, rt_db_free_internal(), and RT_INIT_DB_INTERNAL.

Here is the call graph for this function:

RT_EXPORT void rt_nul_make const struct rt_functab ftp,
struct rt_db_internal intern,
double  diameter
 

RT_EXPORT void rt_plot_all_bboxes FILE *  fp,
struct rt_i rtip
 

Definition at line 463 of file prep.c.

References INFINITY, pdv_3box(), pdv_3space(), RT_CK_RTI, RT_VISIT_ALL_SOLTABS_END, RT_VISIT_ALL_SOLTABS_START, rt_i::rti_pmax, rt_i::rti_pmin, soltab::st_aradius, soltab::st_max, and soltab::st_min.

Here is the call graph for this function:

RT_EXPORT void rt_plot_all_solids FILE *  fp,
struct rt_i rtip,
struct resource resp
 

Definition at line 483 of file prep.c.

References INFINITY, pdv_3space(), RT_CK_RTI, rt_plot_solid(), RT_VISIT_ALL_SOLTABS_END, RT_VISIT_ALL_SOLTABS_START, rt_i::rti_pmax, rt_i::rti_pmin, soltab::st_aradius, and void().

Here is the call graph for this function:

RT_EXPORT void rt_init_resource struct resource resp,
int  cpu_num,
struct rt_i rtip
 

Definition at line 614 of file prep.c.

References bu_ptbl::blen, BU_ASSERT_LONG, BU_ASSERT_PTR, bu_bomb(), BU_LIST_INIT, BU_LIST_UNINITIALIZED, bu_log(), BU_PTBL_GET, bu_ptbl_init(), BU_PTBL_SET, bu_ptbl::l, MAX_PSW, NULL, resource::re_boolslen, resource::re_boolstack, resource::re_cpu, resource::re_directory_blocks, resource::re_magic, resource::re_nmgfree, resource::re_parthead, resource::re_region_ptbl, resource::re_seg, resource::re_seg_blocks, resource::re_solid_bitv, RESOURCE_MAGIC, RT_CK_RTI, rt_uniresource, rt_i::rti_resources, and rt_i::rti_treetop.

Referenced by db5_diradd(), db_diradd5(), main(), rt_cell_n_on_ray(), rt_clean_resource(), rt_dirbuild(), Rt_Init(), rt_shootray(), rt_shootray_bundle(), rt_submodel_prep(), rt_submodel_shot(), wdb_dbopen(), wdb_fopen_v(), and wdb_rt_gettrees_cmd().

Here is the call graph for this function:

RT_EXPORT void rt_clean_resource struct rt_i rtip,
struct resource resp
 

Definition at line 704 of file prep.c.

References BU_CK_BITV, BU_CK_PTBL, bu_free(), BU_LIST_DEQUEUE, BU_LIST_INIT, BU_LIST_IS_INITIALIZED, BU_LIST_WHILE, BU_PTBL_FOR, bu_ptbl_free(), bu_ptbl::l, bu_bitv::l, bu_bitv::nbits, NMG_CK_HITMISS, NULL, resource::re_boolslen, resource::re_boolstack, resource::re_cpu, resource::re_nmgfree, resource::re_parthead, resource::re_region_ptbl, resource::re_seg, resource::re_seg_blocks, resource::re_solid_bitv, resource::re_tree_hd, RT_CK_PT, RT_CK_RESOURCE, RT_CK_RTI, RT_CK_SEG, rt_init_resource(), rt_res_pieces_clean(), tree::tree_node::tb_left, tree::tr_b, and TREE_NULL.

Referenced by rt_submodel_free().

Here is the call graph for this function:

RT_EXPORT int rt_unprep struct rt_i rtip,
struct rt_reprep_obj_list objs,
struct resource resp
 

Definition at line 1478 of file prep.c.

References BU_PTBL_END, bu_ptbl_free(), BU_PTBL_GET, bu_ptbl_init(), db_free_full_path(), db_lookup(), DIR_NULL, rt_reprep_obj_list::ntopobjs, path, rt_reprep_obj_list::paths, rt_res_pieces_clean(), rt_i::rti_dbip, start, and rt_reprep_obj_list::topobjs.

Here is the call graph for this function:

RT_EXPORT int rt_reprep struct rt_i rtip,
struct rt_reprep_obj_list objs,
struct resource resp
 

Definition at line 1674 of file prep.c.

References bu_calloc(), BU_PTBL_GET, BU_PTBL_LEN, db_path_to_string(), rt_i::mdl_max, rt_i::mdl_min, rt_i::needprep, rt_reprep_obj_list::paths, and VMOVE.

Here is the call graph for this function:

RT_EXPORT int re_prep_solids struct rt_i rtip,
int  num_solids,
char **  solid_names,
struct resource resp
 

RT_EXPORT int rt_find_paths struct db_i dbip,
struct directory start,
struct directory end,
struct bu_ptbl paths,
struct resource resp
 

Definition at line 1283 of file prep.c.

References bu_free(), bu_log(), bu_malloc(), bu_ptbl_ins(), directory::d_namep, db_add_node_to_full_path(), db_free_full_path(), db_full_path_init(), DIR_COMB, DIR_REGION, rt_db_internal::idb_ptr, NULL, path, rt_db_free_internal(), rt_db_get_internal(), start, and rt_comb_internal::tree.

Here is the call graph for this function:

RT_EXPORT struct bu_bitv* get_solidbitv long  nbits,
struct resource resp
 

Definition at line 798 of file prep.c.

References bu_bitv_new(), bu_bomb(), BU_CK_BITV, BU_LIST_DEQUEUE, BU_LIST_FOR, BU_LIST_HEAD_MAGIC, BU_LIST_IS_EMPTY, bu_bitv::l, bu_list::magic, bu_bitv::nbits, and resource::re_solid_bitv.

Referenced by rt_find_backing_dist(), rt_shootray(), and rt_shootray_bundle().

Here is the call graph for this function:

RT_EXPORT void rt_add_res_stats struct rt_i rtip,
struct resource resp
 

RT_EXPORT void rt_zero_res_stats struct resource resp  ) 
 

Definition at line 1959 of file shoot.c.

References resource::re_ndup, resource::re_nempty_cells, resource::re_nmiss_model, resource::re_nshootray, resource::re_piece_ndup, resource::re_piece_shot_hit, resource::re_piece_shot_miss, resource::re_piece_shots, resource::re_prune_solrpp, resource::re_shot_hit, resource::re_shot_miss, resource::re_shots, and RT_CK_RESOURCE.

Referenced by rt_add_res_stats().

RT_EXPORT void rt_res_pieces_clean struct resource resp,
struct rt_i rtip
 

Definition at line 123 of file shoot.c.

References bu_bitv_free(), bu_free(), bu_ptbl_free(), rt_piecestate::htab, rt_piecestate::magic, NULL, resource::re_pieces, resource::re_pieces_pending, RT_CK_PIECESTATE, RT_CK_RESOURCE, RT_CK_RTI, rt_htbl_free(), rt_i::rti_nsolids_with_pieces, and rt_piecestate::shot.

Referenced by rt_clean_resource(), and rt_unprep().

Here is the call graph for this function:

RT_EXPORT void rt_res_pieces_init struct resource resp,
struct rt_i rtip
 

Definition at line 94 of file shoot.c.

References bu_bitv_new(), bu_calloc(), rt_piecestate::cutp, CUTTER_NULL, rt_piecestate::htab, rt_piecestate::magic, resource::re_pieces, RT_CK_RESOURCE, RT_CK_RTI, RT_CK_SOLTAB, rt_htbl_init(), RT_PIECESTATE_MAGIC, RT_VISIT_ALL_SOLTABS_END, RT_VISIT_ALL_SOLTABS_START, rt_i::rti_nsolids_with_pieces, rt_piecestate::shot, soltab::st_npieces, soltab::st_piecestate_num, and rt_piecestate::stp.

Referenced by rt_shootray().

Here is the call graph for this function:

RT_EXPORT void rt_vstub struct soltab stp[],
struct xray rp[],
struct seg  segp[],
int  n,
struct application ap
 

Referenced by rt_arbn_vshot(), rt_bot_vshot(), rt_cline_vshot(), rt_dsp_vshot(), rt_ehy_vshot(), rt_epa_vshot(), rt_extrude_vshot(), rt_nmg_vshot(), rt_nurb_vshot(), rt_part_vshot(), rt_pipe_vshot(), rt_rhc_vshot(), rt_rpc_vshot(), rt_sketch_vshot(), rt_submodel_vshot(), and rt_xxx_vshot().

RT_EXPORT int rt_bound_tree const union tree tp,
vect_t  tree_min,
vect_t  tree_max
 

Referenced by rt_bound_tree(), rt_gettrees_muves(), and rt_rpp_region().

RT_EXPORT int rt_tree_elim_nops union tree ,
struct resource resp
 

Referenced by rt_gettrees_muves(), and rt_tree_elim_nops().

RT_EXPORT struct bn_vlblock* bn_vlblock_init struct bu_list free_vlist_hd,
int  max_ent
 

Definition at line 67 of file vlist.c.

References BN_VLBLOCK_MAGIC, bu_calloc(), BU_GETSTRUCT, BU_LIST_INIT, BU_LIST_UNINITIALIZED, bn_vlblock::free_vlist_hd, bn_vlblock::head, bn_vlblock::magic, bn_vlblock::max, and bn_vlblock::rgb.

Referenced by rt_vlblock_init().

Here is the call graph for this function:

RT_EXPORT int rt_ck_vlist const struct bu_list vhead  ) 
 

Definition at line 222 of file vlist.c.

References BN_CK_VLIST, BN_VLIST_POLY_VERTNORM, bu_bomb(), BU_LIST_FOR, bu_log(), bn_vlist::cmd, INFINITY, bn_vlist::nused, bn_vlist::pt, and V3ARGS.

Here is the call graph for this function:

RT_EXPORT void rt_vlist_copy struct bu_list dest,
const struct bu_list src
 

Definition at line 272 of file vlist.c.

References BN_ADD_VLIST, BU_LIST_FOR, bn_vlist::cmd, bn_vlist::nused, and bn_vlist::pt.

Referenced by dgo_invent_solid().

RT_EXPORT void bn_vlist_cleanup struct bu_list hd  ) 
 

Definition at line 294 of file vlist.c.

References BN_CK_VLIST, bu_free(), BU_LIST_DEQUEUE, BU_LIST_INIT, BU_LIST_UNINITIALIZED, and BU_LIST_WHILE.

Referenced by rt_vlist_cleanup().

Here is the call graph for this function:

RT_EXPORT void rt_vlist_cleanup  ) 
 

Definition at line 312 of file vlist.c.

References bn_vlist_cleanup().

Here is the call graph for this function:

RT_EXPORT void bn_vlist_rpp struct bu_list hd,
const point_t  minn,
const point_t  maxx
 

Definition at line 323 of file vlist.c.

References BN_ADD_VLIST, BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, VSET, X, Y, and Z.

RT_EXPORT void rt_vlist_export struct bu_vls vls,
struct bu_list hp,
const char *  name
 

Definition at line 388 of file vlist.c.

References BU_CK_VLS, BU_LIST_FOR, bu_plong(), bu_vls_addr(), bu_vls_setlen(), bn_vlist::cmd, and bn_vlist::nused.

Here is the call graph for this function:

RT_EXPORT void rt_vlist_import struct bu_list hp,
struct bu_vls namevls,
const unsigned char *  buf
 

Definition at line 446 of file vlist.c.

References BN_ADD_VLIST, BU_CK_VLS, bu_glong(), bu_vls_strncpy(), bn_vlist::cmd, and ntohd().

Here is the call graph for this function:

RT_EXPORT void rt_plot_vlblock FILE *  fp,
const struct bn_vlblock vbp
 

Definition at line 489 of file vlist.c.

References BN_CK_VLBLOCK, BU_LIST_IS_EMPTY, bn_vlblock::head, bn_vlblock::nused, pl_color(), bn_vlblock::rgb, and rt_vlist_to_uplot().

Referenced by nmg_face_plot(), nmg_pl_2fu(), nmg_pl_comb_fu(), nmg_pl_fu(), nmg_pl_isect(), nmg_pl_lu(), nmg_pl_m(), nmg_pl_r(), nmg_pl_s(), nmg_pl_shell(), and nmg_plot_lu_around_eu().

Here is the call graph for this function:

RT_EXPORT void rt_vlist_to_uplot FILE *  fp,
const struct bu_list vhead
 

Definition at line 514 of file vlist.c.

References BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, BN_VLIST_POLY_DRAW, BN_VLIST_POLY_END, BN_VLIST_POLY_MOVE, BN_VLIST_POLY_START, BU_LIST_FOR, bu_log(), bn_vlist::cmd, bn_vlist::nused, pdv_3cont(), pdv_3move(), and bn_vlist::pt.

Referenced by rt_plot_solid(), and rt_plot_vlblock().

Here is the call graph for this function:

RT_EXPORT int rt_process_uplot_value struct bu_list **  vhead,
struct bn_vlblock vbp,
FILE *  fp,
int  c,
double  char_size,
int  mode
 

Referenced by rt_uplot_to_vlist().

RT_EXPORT int rt_uplot_to_vlist struct bn_vlblock vbp,
FILE *  fp,
double  char_size,
int  mode
 

RT_EXPORT void rt_label_vlist_verts struct bn_vlblock vbp,
struct bu_list src,
mat_t  mat,
double  sz,
double  mm2local
 

RT_EXPORT void rt_htbl_init struct rt_htbl b,
int  len,
const char *  str
 

Definition at line 57 of file htbl.c.

References rt_htbl::blen, bu_calloc(), bu_debug, BU_DEBUG_PTBL, BU_LIST_INIT, bu_log(), rt_htbl::end, rt_htbl::hits, rt_htbl::l, bu_list::magic, and RT_HTBL_MAGIC.

Referenced by rt_res_pieces_init().

Here is the call graph for this function:

RT_EXPORT void rt_htbl_reset struct rt_htbl b  ) 
 

Definition at line 78 of file htbl.c.

References bu_debug, BU_DEBUG_PTBL, bu_log(), rt_htbl::end, and RT_CK_HTBL.

Referenced by rt_shootray().

Here is the call graph for this function:

RT_EXPORT void rt_htbl_free struct rt_htbl b  ) 
 

Definition at line 93 of file htbl.c.

References bu_debug, BU_DEBUG_PTBL, bu_free(), bu_log(), bzero, rt_htbl::hits, and RT_CK_HTBL.

Referenced by rt_res_pieces_clean().

Here is the call graph for this function:

RT_EXPORT struct hit* rt_htbl_get struct rt_htbl b  ) 
 

Definition at line 110 of file htbl.c.

References rt_htbl::blen, bu_realloc(), rt_htbl::end, rt_htbl::hits, and RT_CK_HTBL.

Here is the call graph for this function:

RT_EXPORT struct model* nmg_mm  ) 
 

Definition at line 262 of file nmg_mk.c.

References BU_GETSTRUCT, BU_LIST_INIT, bu_log(), DEBUG_BASIC, model::index, model::magic, model::maxindex, NMG_MODEL_MAGIC, and model::r_hd.

Referenced by add_solid(), nmg_booltree_leaf_tess(), nmg_mmr(), nmg_to_poly(), rt_ars_prep(), rt_nmg_ialloc(), rt_nmg_make(), rt_vol_tess(), stash_shell(), and wdb_facetize_cmd().

Here is the call graph for this function:

RT_EXPORT struct model* nmg_mmr void   ) 
 

N M G _ M M R

Make Model and Region Create a new model, and an "empty" region to go with it. Essentially this creates a minimal model system.

Returns - (struct model *)

Implicit Return - The new region is found with BU_LIST_FIRST( nmgregion, &m->r_hd );

Definition at line 294 of file nmg_mk.c.

References BU_LIST_APPEND, BU_LIST_INIT, bu_log(), DEBUG_BASIC, GET_REGION, nmgregion::l, nmgregion::m_p, bu_list::magic, nmg_mm(), NMG_REGION_MAGIC, NULL, model::r_hd, nmgregion::ra_p, and nmgregion::s_hd.

Referenced by wdb_shells_cmd().

Here is the call graph for this function:

RT_EXPORT struct nmgregion* nmg_mrsv struct model m  ) 
 

N M G _ M R S V

Make new region, shell, vertex in model as well as the required "uses". Create a new region in model consisting of a minimal shell.

Returns - (struct nmgregion *)

Implicit Returns - Region is also found with r=BU_LIST_FIRST( nmgregion, &m->r_hd ); The new shell is found with s=BU_LIST_FIRST( shell, &r->s_hd ); The new vertexuse is s->vu_p;

Definition at line 333 of file nmg_mk.c.

References BU_LIST_APPEND, BU_LIST_INIT, bu_log(), DEBUG_BASIC, GET_REGION, nmgregion::l, nmgregion::m_p, bu_list::magic, NMG_CK_MODEL, nmg_msv(), NMG_REGION_MAGIC, NULL, model::r_hd, nmgregion::ra_p, nmgregion::s_hd, and void().

Referenced by nmg_extrude_cleanup(), nmg_extrude_shell(), nmg_fix_normals(), nmg_hollow_shell(), nmg_to_poly(), rt_arb_tess(), rt_arb_tnurb(), rt_bot_tess(), rt_cline_tess(), rt_ebm_tess(), rt_ehy_tess(), rt_ell_tess(), rt_ell_tnurb(), rt_epa_tess(), rt_part_tess(), rt_pg_tess(), rt_pipe_tess(), rt_rhc_tess(), rt_rpc_tess(), rt_tgc_tnurb(), rt_vol_tess(), and stash_shell().

Here is the call graph for this function:

RT_EXPORT struct shell* nmg_msv struct nmgregion r  ) 
 

N M G _ M S V

Make Shell, Vertex Use, Vertex Create a new shell in a specified region. The shell will consist of a single vertexuse and vertex (which are also created).

Returns - (struct shell *)

Implicit Returns - The new shell is also found with s=BU_LIST_FIRST( shell, &r->s_hd ); The new vertexuse is s->vu_p;

Definition at line 373 of file nmg_mk.c.

References BU_LIST_APPEND, BU_LIST_INIT, bu_log(), DEBUG_BASIC, shell::eu_hd, shell::fu_hd, GET_SHELL, shell::l, shell::lu_hd, nmgregion::m_p, bu_list::magic, NMG_CK_REGION, NMG_SHELL_MAGIC, NULL, shell::r_p, nmgregion::s_hd, shell::sa_p, and shell::vu_p.

Referenced by nmg_dup_shell(), nmg_isect_shell_self(), nmg_mrsv(), and nmg_polytonmg().

Here is the call graph for this function:

RT_EXPORT struct faceuse* nmg_mf struct loopuse lu1  ) 
 

N M G _ M F

Make Face from a wire loop. make a face from a pair of loopuses. The loopuses must be direct children of a shell. The new face will be a child of the same shell.

Given a wire loop (by definition, a loop attached to a shell), create a new face, faceuse (and mate) and move the wire loop from the shell to the new faceuse (and mate).

Implicit Returns - The first faceuse is fu1=BU_LIST_FIRST( faceuse, &s->fu_hd ); The second faceuse follows: fu2=BU_LIST_NEXT( faceuse, &fu1->l.magic );

Definition at line 419 of file nmg_mk.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_INIT, bu_log(), DEBUG_BASIC, faceuse::f_p, face::flip, shell::fu_hd, face::fu_p, loopuse::fu_p, faceuse::fumate_p, face::g, GET_FACE, GET_FACEUSE, shell::l, face::l, faceuse::l, loopuse::l, faceuse::lu_hd, loopuse::lumate_p, bu_list::magic, loopuse::magic_p, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_FACE_MAGIC, NMG_FACEUSE_MAGIC, nmg_find_model(), NMG_SHELL_MAGIC, NULL, faceuse::orientation, loopuse::orientation, OT_SAME, OT_UNSPEC, face::plane_p, rt_bomb(), loopuse::s_p, faceuse::s_p, and loopuse::up.

Referenced by nmg_add_loop_to_face(), nmg_dup_face(), nmg_dup_shell(), and nmg_mk_new_face_from_loop().

Here is the call graph for this function:

RT_EXPORT struct loopuse* nmg_mlv long *  magic,
struct vertex v,
int  orientation
 

Referenced by nmg_add_loop_to_face(), nmg_cut_loop(), nmg_demote_eu(), nmg_dup_loop(), nmg_enlist_vu(), nmg_fix_overlapping_loops(), nmg_isect_vert2p_face2p(), nmg_make_dualvu(), nmg_ml(), nmg_mv_vu_between_shells(), nmg_split_lu_at_vu(), tesselate_pipe_end(), and tesselate_pipe_start().

RT_EXPORT struct edgeuse* nmg_me struct vertex v1,
struct vertex v2,
struct shell s
 

N M G _ M E

Make wire edge Make a new edge between a pair of vertices in a shell.

A new vertex will be made for any NULL vertex pointer parameters. If we need to make a new vertex and the shell still has its vertexuse we re-use that vertex rather than freeing and re-allocating.

If both vertices were specified, and the shell also had a vertexuse pointer, the vertexuse in the shell is killed. XXX Why?

Explicit Return - An edgeuse in shell "s" whose vertexuse refers to vertex v1. The edgeuse mate's vertexuse refers to vertex v2

Implicit Returns - 1) If the shell had a lone vertex in vu_p, it is destroyed, even if both vertices were specified. 2) The returned edgeuse is the first item on the shell's eu_hd list, followed immediately by the mate.

Definition at line 724 of file nmg_mk.c.

References BU_LIST_APPEND, BU_LIST_INIT, bu_log(), DEBUG_BASIC, edgeuse::e_p, shell::eu_hd, edge::eu_p, vertexuse::eu_p, edgeuse::eumate_p, GET_EDGE, GET_EDGEUSE, shell::l, edgeuse::l, edgeuse::l2, bu_list::magic, edge::magic, NMG_CK_SHELL, NMG_CK_VERTEX, NMG_EDGE_MAGIC, NMG_EDGEUSE2_MAGIC, NMG_EDGEUSE_MAGIC, nmg_find_model(), nmg_kvu(), NULL, edgeuse::orientation, OT_NONE, edgeuse::radial_p, edgeuse::s_p, edgeuse::up, vertexuse::up, void(), edgeuse::vu_p, and shell::vu_p.

Referenced by nmg_dup_shell(), nmg_eins(), nmg_eusplit(), nmg_vlist_to_eu(), and nmg_vlist_to_wire_edges().

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_meonvu struct vertexuse vu  ) 
 

N M G _ M E o n V U

Make an edge on vertexuse. The new edge runs from and to that vertex.

If the vertexuse was the shell's sole vertexuse, then the new edge is a wire edge in the shell's eu_hd list.

If the vertexuse was part of a loop-of-a-single-vertex, either as a loop in a face or as a wire-loop in the shell, the loop becomes a regular loop with one edge that runs from and to the original vertex.

Definition at line 825 of file nmg_mk.c.

References BU_LIST_APPEND, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_INIT, bu_log(), DEBUG_BASIC, loopuse::down_hd, edgeuse::e_p, shell::eu_hd, edge::eu_p, vertexuse::eu_p, edgeuse::eumate_p, GET_EDGE, GET_EDGEUSE, edge::is_real, edgeuse::l, edgeuse::l2, vertexuse::lu_p, edgeuse::lu_p, loopuse::lumate_p, bu_list::magic, edge::magic, vertexuse::magic_p, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGE_MAGIC, NMG_EDGEUSE2_MAGIC, NMG_EDGEUSE_MAGIC, nmg_find_model(), NMG_LOOPUSE_MAGIC, NMG_SHELL_MAGIC, NMG_VERTEXUSE_MAGIC, NULL, edgeuse::orientation, OT_NONE, edgeuse::radial_p, rt_bomb(), edgeuse::s_p, vertexuse::s_p, vertexuse::up, edgeuse::up, vertexuse::v_p, edgeuse::vu_p, and shell::vu_p.

Referenced by nmg_add_loop_to_face(), nmg_dup_loop(), nmg_join_2singvu_loops(), and tesselate_pipe_start().

Here is the call graph for this function:

RT_EXPORT struct loopuse* nmg_ml struct shell s  ) 
 

N M G _ M L

Make wire loop from wire edgeuse list

Passed a pointer to a shell. The wire edgeuse child of the shell is taken as the head of a list of edge(use)s which will form the new loop. The loop is created from the first N contiguous edges. Thus the end of the new loop is delineated by the "next" edge(use)being:

A) the first object in the list (no other edgeuses in shell list) B) non-contiguous with the previous edge

A loop is created from this list of edges. The edges must form a true circuit, or we dump core on your disk. If we succeed, then the edgeuses are moved from the shell edgeuse list to the loop, and the two loopuses are inserted into the shell.

Definition at line 953 of file nmg_mk.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_INIT, BU_LIST_INSERT, BU_LIST_IS_EMPTY, BU_LIST_NON_EMPTY, bu_log(), DEBUG_BASIC, loopuse::down_hd, shell::eu_hd, edgeuse::eumate_p, GET_LOOP, GET_LOOPUSE, shell::l, loopuse::l, edgeuse::l, loopuse::l_p, loop::lg_p, shell::lu_hd, loop::lu_p, edgeuse::lu_p, loopuse::lumate_p, bu_list::magic, loop::magic, NMG_CK_EDGEUSE, NMG_CK_SHELL, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, nmg_find_model(), NMG_LOOP_MAGIC, NMG_LOOPUSE_MAGIC, nmg_mlv(), nmg_pr_s(), NULL, loopuse::orientation, OT_UNSPEC, rt_bomb(), loopuse::s_p, edgeuse::s_p, loopuse::up, edgeuse::up, vertexuse::v_p, shell::vu_p, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT int nmg_keg struct edgeuse eu  ) 
 

static

Definition at line 1375 of file nmg_mk.c.

References bu_free(), BU_LIST_NON_EMPTY, edgeuse::cnurb_p, edge_g_cnurb::ctl_points, edge_g_lseg::eu_hd2, edge_g_cnurb::eu_hd2, FREE_EDGE_G_CNURB, FREE_EDGE_G_LSEG, edgeuse::g, edge_g_cnurb::k, knot_vector::knots, edgeuse::lseg_p, edgeuse::magic_p, NMG_CK_EDGEUSE, NMG_EDGE_G_CNURB_MAGIC, NMG_EDGE_G_LSEG_MAGIC, NULL, and edge_g_cnurb::order.

Referenced by nmg_eusplit(), nmg_keu(), and nmg_use_edge_g().

Here is the call graph for this function:

RT_EXPORT int nmg_kvu struct vertexuse vu  ) 
 

Referenced by nmg_cut_loop(), nmg_dup_shell(), nmg_fix_overlapping_loops(), nmg_keu(), nmg_klu(), nmg_ks(), nmg_me(), nmg_mv_vu_between_shells(), nmg_polytonmg(), and nmg_split_lu_at_vu().

RT_EXPORT int nmg_kfu struct faceuse fu1  ) 
 

N M G _ K F U

Kill Faceuse

delete a faceuse and its mate from the parent shell. Any children found are brutally murdered as well. The faceuses are dequeued from the parent shell's list here.

Returns - 0 If all is well 1 If parent shell is now empty, and is thus "illegal"

Definition at line 1227 of file nmg_mk.c.

References BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_IS_EMPTY, BU_LIST_NON_EMPTY, bu_log(), DEBUG_BASIC, faceuse::f_p, FREE_FACE, FREE_FACEUSE, shell::fu_hd, faceuse::fumate_p, face::g, face::l, faceuse::l, faceuse::lu_hd, face::magic_p, NMG_CK_FACE, NMG_CK_FACEUSE, NMG_CK_SHELL, nmg_klu(), nmg_shell_is_empty(), NULL, rt_bomb(), faceuse::s_p, and void().

Referenced by nmg_edge_collapse(), nmg_jf(), nmg_kill_anti_loops(), nmg_kill_cracks(), nmg_kill_cracks_at_vertex(), nmg_kill_non_common_cracks(), nmg_kill_zero_length_edgeuses(), nmg_ks(), nmg_rm_redundancies(), nmg_sanitize_s_lv(), nmg_simplify_shell(), nmg_simplify_shell_edges(), tesselate_pipe_end(), and tesselate_pipe_linear().

Here is the call graph for this function:

RT_EXPORT int nmg_klu struct loopuse lu1  ) 
 

N M G _ K L U

Kill loopuse, loopuse mate, and loop.

if the loop contains any edgeuses or vertexuses they are killed before the loop is deleted.

We support the concept of killing a loop with no children to support the routine "nmg_demote_lu"

Returns - 0 If all is well 1 If parent is empty, and is thus "illegal"

Definition at line 1291 of file nmg_mk.c.

References bu_identify_magic(), BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_HEAD_MAGIC, BU_LIST_IS_EMPTY, BU_LIST_NON_EMPTY, bu_log(), DEBUG_BASIC, loopuse::down_hd, FREE_LOOP, FREE_LOOP_G, FREE_LOOPUSE, loopuse::fu_p, loopuse::l, loopuse::l_p, loop::lg_p, faceuse::lu_hd, loopuse::lumate_p, loopuse::magic_p, NMG_CK_LOOP, NMG_CK_LOOP_G, NMG_CK_LOOPUSE, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, nmg_keu(), nmg_kvu(), nmg_shell_is_empty(), NMG_SHELL_MAGIC, NMG_VERTEXUSE_MAGIC, rt_bomb(), loopuse::s_p, loopuse::up, and void().

Referenced by nmg_demote_lu(), nmg_edge_collapse(), nmg_face_state_transition(), nmg_insert_vu_if_on_edge(), nmg_jl(), nmg_join_2loops(), nmg_join_2singvu_loops(), nmg_join_singvu_loop(), nmg_kfu(), nmg_kill_anti_loops(), nmg_kill_cracks(), nmg_kill_cracks_at_vertex(), nmg_kill_non_common_cracks(), nmg_kill_wire_edges(), nmg_kill_zero_length_edgeuses(), nmg_ks(), nmg_rm_redundancies(), nmg_sanitize_fu(), nmg_sanitize_s_lv(), nmg_simplify_face(), and nmg_simplify_shell_edges().

Here is the call graph for this function:

RT_EXPORT int nmg_keu struct edgeuse eu  ) 
 

Referenced by nmg_demote_eu(), nmg_edge_collapse(), nmg_jl(), nmg_k0eu(), nmg_kill_accordions(), nmg_kill_cracks(), nmg_kill_cracks_at_vertex(), nmg_kill_non_common_cracks(), nmg_kill_snakes(), nmg_kill_wire_edges(), nmg_kill_zero_length_edgeuses(), nmg_klu(), nmg_ks(), nmg_rm_redundancies(), and nmg_simplify_shell_edges().

RT_EXPORT int nmg_ks struct shell s  ) 
 

N M G _ K S

Kill a shell and all children

Returns - 0 If all is well 1 If parent nmgregion is now empty. While not "illegal", an empty region is probably worthy of note.

Definition at line 1552 of file nmg_mk.c.

References BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_IS_EMPTY, BU_LIST_NON_EMPTY, bu_log(), DEBUG_BASIC, shell::eu_hd, FREE_SHELL, FREE_SHELL_A, shell::fu_hd, shell::l, shell::lu_hd, NMG_CK_REGION, NMG_CK_SHELL, nmg_keu(), nmg_kfu(), nmg_klu(), nmg_kvu(), shell::r_p, nmgregion::s_hd, shell::sa_p, void(), and shell::vu_p.

Referenced by nmg_do_bool(), nmg_extrude_cleanup(), nmg_extrude_shell(), nmg_fix_normals(), nmg_hollow_shell(), nmg_js(), nmg_kill_zero_length_edgeuses(), and nmg_kr().

Here is the call graph for this function:

RT_EXPORT int nmg_kr struct nmgregion r  ) 
 

N M G _ K R

Kill a region and all shells in it

Returns - 0 If all is well 1 If model is now empty. While not "illegal", an empty model is probably worthy of note.

Definition at line 1593 of file nmg_mk.c.

References BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_IS_EMPTY, BU_LIST_NON_EMPTY, bu_log(), DEBUG_BASIC, FREE_REGION, FREE_REGION_A, nmgregion::l, nmgregion::m_p, model::maxindex, NMG_CK_MODEL, NMG_CK_REGION, nmg_ks(), model::r_hd, nmgregion::ra_p, nmgregion::s_hd, and void().

Referenced by db_free_tree(), nmg_do_bool(), nmg_extrude_cleanup(), nmg_kill_zero_length_edgeuses(), nmg_km(), and nmg_merge_regions().

Here is the call graph for this function:

RT_EXPORT void nmg_km struct model m  ) 
 

N M G _ K M

Kill an entire model. Nothing is left.

Definition at line 1626 of file nmg_mk.c.

References BU_LIST_FIRST, BU_LIST_NON_EMPTY, bu_log(), DEBUG_BASIC, FREE_MODEL, NMG_CK_MODEL, nmg_kr(), model::r_hd, and void().

Referenced by add_solid(), free_etree(), nmg_fix_normals(), nmg_to_poly(), rt_ars_prep(), rt_nmg_free(), rt_nmg_ifree(), stash_shell(), wdb_facetize_cmd(), and wdb_shells_cmd().

Here is the call graph for this function:

RT_EXPORT void nmg_vertex_gv struct vertex v,
const point_t  pt
 

Referenced by nmg_break_crossed_loops(), nmg_dup_loop(), nmg_dup_shell(), nmg_fix_overlapping_loops(), nmg_intersect_loops_self(), nmg_isect_edge2p_edge2p(), nmg_isect_eu_eu(), nmg_isect_eu_fu(), nmg_isect_line2_edge2p(), nmg_move_edge_thru_pt(), nmg_vertex_g(), nmg_vlist_to_eu(), nmg_vlist_to_wire_edges(), rt_ebm_tess(), rt_vol_tess(), tesselate_pipe_end(), tesselate_pipe_linear(), and tesselate_pipe_start().

RT_EXPORT void nmg_vertex_g struct vertex v,
fastf_t  x,
fastf_t  y,
fastf_t  z
 

RT_EXPORT void nmg_vertexuse_nv struct vertexuse vu,
const vect_t  norm
 

Referenced by tesselate_pipe_linear().

RT_EXPORT void nmg_vertexuse_a_cnurb struct vertexuse vu,
const fastf_t uvw
 

N M G _ V E R T E X U S E _ A _ C N U R B

Given a vertex with associated geometry in model space which lies on a face_g_snurb surface, it will have a corresponding set of (u,v) or (u,v,w) parameters on that surface. Build the association here.

Note that all vertexuses of a single vertex which are all used by the same face_g_snurb will have the same "param" value, but will have individual vertexuse_a_cnurb structures.

Definition at line 1741 of file nmg_mk.c.

References vertexuse::a, bu_log(), edgeuse::cnurb_p, vertexuse::cnurb_p, DEBUG_BASIC, vertexuse::eu_p, edgeuse::g, GET_VERTEXUSE_A_CNURB, vertexuse::l, bu_list::magic, vertexuse_a_cnurb::magic, vertexuse::magic_p, edgeuse::magic_p, NMG_CK_EDGE_G_CNURB, NMG_CK_EDGEUSE, NMG_CK_VERTEXUSE, nmg_find_model(), NMG_VERTEXUSE_A_CNURB_MAGIC, vertexuse_a_cnurb::param, rt_bomb(), vertexuse::up, V3ARGS, and VMOVE.

Referenced by rt_ell_tnurb(), and rt_tgc_tnurb().

Here is the call graph for this function:

RT_EXPORT void nmg_edge_g struct edgeuse eu  ) 
 

N M G _ E D G E _ G

Compute the equation of the line formed by the endpoints of the edge.

XXX This isn't the best name. nmg_edge_g_lseg() ?

Definition at line 1773 of file nmg_mk.c.

References BU_LIST_DEQUEUE, BU_LIST_INIT, BU_LIST_INSERT, bu_log(), vertex_g::coord, DEBUG_BASIC, edge_g_lseg::e_dir, edgeuse::e_p, edge_g_lseg::e_pt, edge_g_lseg::eu_hd2, edgeuse::eumate_p, edgeuse::g, GET_EDGE_G_LSEG, edgeuse::l, edge_g_lseg::l, edgeuse::l2, edgeuse::lseg_p, bu_list::magic, edgeuse::magic_p, NMG_CK_EDGE, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, NMG_EDGE_G_LSEG_MAGIC, nmg_find_model(), NULL, edgeuse::radial_p, rt_bomb(), SMALL_FASTF, vertexuse::v_p, vertex::vg_p, VMOVE, VNEAR_ZERO, VPRINT, VSET, VSUB2, edgeuse::vu_p, X, Y, and Z.

Referenced by nmg_dup_loop(), nmg_edge_collapse(), nmg_edge_geom_isect_line(), nmg_loop_g(), nmg_move_edge_thru_pt(), nmg_radial_join_eu_NEW(), and nmg_vlist_to_wire_edges().

Here is the call graph for this function:

RT_EXPORT void nmg_edge_g_cnurb struct edgeuse eu,
int  order,
int  n_knots,
fastf_t kv,
int  n_pts,
int  pt_type,
fastf_t points
 

N M G _ E D G E _ G _ C N U R B

For an edgeuse associated with a face_g_snurb surface, create a spline curve in the parameter space of the snurb which describes the path from the start vertex to the end vertex.

The parameters of the end points are taken from the vertexuse attributes at either end of the edgeuse.

Definition at line 1885 of file nmg_mk.c.

References vertexuse::a, bu_calloc(), BU_LIST_DEQUEUE, BU_LIST_INIT, BU_LIST_INSERT, bu_log(), edge_g_cnurb::c_size, edgeuse::cnurb_p, vertexuse::cnurb_p, edge_g_cnurb::ctl_points, DEBUG_BASIC, edgeuse::e_p, edge_g_cnurb::eu_hd2, edgeuse::eumate_p, faceuse::f_p, edgeuse::g, face::g, GET_EDGE_G_CNURB, edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, edgeuse::l, edge_g_cnurb::l, edgeuse::l2, bu_list::magic, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_FACE_G_SNURB, NMG_CK_FACEUSE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, NMG_CK_VERTEXUSE_A_CNURB, NMG_EDGE_G_CNURB_MAGIC, nmg_find_fu_of_eu(), nmg_find_model(), NULL, edge_g_cnurb::order, vertexuse_a_cnurb::param, edge_g_cnurb::pt_type, rt_bomb(), RT_NURB_EXTRACT_COORDS, rt_nurb_kvknot(), face::snurb_p, V2MOVE, vertexuse::v_p, vertex::vg_p, VMOVE, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT void nmg_edge_g_cnurb_plinear struct edgeuse eu  ) 
 

N M G _ E D G E _ G _ C N U R B _ P L I N E A R

For an edgeuse associated with a face_g_snurb surface, create a spline "curve" in the parameter space of the snurb which describes a STRAIGHT LINE in parameter space from the u,v parameters of the start vertex to the end vertex.

The parameters of the end points are found in the vertexuse attributes at either end of the edgeuse, which should have already been established.

This is a special case of nmg_edge_g_cnurb(), and should be used when the path through parameter space is known to be a line segment. This permits the savings of a lot of memory, both in core and on disk, by eliminating a knot vector (typ. 64 bytes or more) and a ctl_point[] array (typ. 16 bytes or more).

This special condition is indicated by order == 0. See nmg.h for details.

Definition at line 2008 of file nmg_mk.c.

References vertexuse::a, BU_LIST_DEQUEUE, BU_LIST_INIT, BU_LIST_INSERT, bu_log(), vertexuse::cnurb_p, edgeuse::cnurb_p, DEBUG_BASIC, edgeuse::e_p, edge_g_cnurb::eu_hd2, edgeuse::eumate_p, faceuse::f_p, edgeuse::g, face::g, GET_EDGE_G_CNURB, edgeuse::l, edge_g_cnurb::l, edgeuse::l2, bu_list::magic, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_FACE_G_SNURB, NMG_CK_FACEUSE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, NMG_CK_VERTEXUSE_A_CNURB, NMG_EDGE_G_CNURB_MAGIC, nmg_find_fu_of_eu(), nmg_find_model(), edge_g_cnurb::order, rt_bomb(), face::snurb_p, vertexuse::v_p, vertex::vg_p, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT int nmg_use_edge_g struct edgeuse eu,
long *  eg
 

Referenced by nmg_edge_geom_isect_line(), nmg_eusplit(), nmg_jeg(), and nmg_radial_join_eu_NEW().

RT_EXPORT void nmg_loop_g struct loop l,
const struct bn_tol tol
 

N M G _ L O O P _ G

Build the bounding box for a loop The bounding box is guaranteed never to have zero thickness. XXX This really isn't loop geometry, this is a loop attribute. XXX This routine really should be called nmg_loop_bb(), unless XXX it gets something more to do.

Definition at line 2171 of file nmg_mk.c.

References BN_CK_TOL, bu_identify_magic(), BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), vertex_g::coord, DEBUG_BASIC, bn_tol::dist, loopuse::down_hd, FAST, GET_LOOP_G, INFINITY, vertexuse::l, loop::lg_p, loop::lu_p, loop_g::magic, loopuse::magic_p, loop_g::max_pt, loop_g::min_pt, NMG_CK_LOOP, NMG_CK_LOOP_G, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, nmg_edge_g(), NMG_EDGEUSE_MAGIC, nmg_find_model(), NMG_LOOP_G_MAGIC, NMG_VERTEXUSE_MAGIC, rt_bomb(), loopuse::up, vertexuse::v_p, vertex::vg_p, VMINMAX, VMOVE, VSETALL, X, Y, and Z.

Referenced by nmg_enlist_vu(), nmg_face_bb(), nmg_face_state_transition(), nmg_isect_vert2p_face2p(), nmg_lu_is_convex(), nmg_make_dualvu(), nmg_rebound(), nmg_shell_a(), and nmg_split_touchingloops().

Here is the call graph for this function:

RT_EXPORT void nmg_face_g struct faceuse fu,
const plane_t  p
 

Referenced by nmg_calc_face_g(), nmg_dup_face(), nmg_dup_shell(), nmg_face_new_g(), nmg_fu_planeeqn(), nmg_move_edge_thru_pt(), and nmg_split_loops_handler().

RT_EXPORT void nmg_face_new_g struct faceuse fu,
const plane_t  pl
 

Referenced by nmg_make_faces_within_tol().

RT_EXPORT void nmg_face_g_snurb struct faceuse fu,
int  u_order,
int  v_order,
int  n_u_knots,
int  n_v_knots,
fastf_t ukv,
fastf_t vkv,
int  n_rows,
int  n_cols,
int  pt_type,
fastf_t mesh
 

N M G _ F A C E _ G _ S N U R B

Create a new NURBS surface to be the geometry for an NMG face.

If either of the knot vector arrays or the ctl_points arrays are given as non-null, then simply swipe the caller's arrays. The caller must have allocated them with bu_malloc() or malloc(). If the pointers are NULL, then the necessary storage is allocated here.

This is the NMG parallel to rt_nurb_new_snurb().

Definition at line 2366 of file nmg_mk.c.

References bu_calloc(), BU_LIST_APPEND, BU_LIST_INIT, bu_log(), face_g_snurb::ctl_points, DEBUG_BASIC, face_g_snurb::f_hd, faceuse::f_p, face::flip, faceuse::fumate_p, face::g, GET_FACE_G_SNURB, knot_vector::k_size, knot_vector::knots, faceuse::l, face::l, face_g_snurb::l, bu_list::magic, knot_vector::magic, NMG_CK_FACE, NMG_CK_FACEUSE, NMG_FACE_G_SNURB_MAGIC, nmg_find_model(), NMG_KNOT_VECTOR_MAGIC, face_g_snurb::order, faceuse::orientation, OT_OPPOSITE, OT_SAME, face_g_snurb::pt_type, rt_bomb(), RT_NURB_EXTRACT_COORDS, face_g_snurb::s_size, face::snurb_p, face_g_snurb::u, and face_g_snurb::v.

Referenced by nmg_dup_face().

Here is the call graph for this function:

RT_EXPORT void nmg_face_bb struct face f,
const struct bn_tol tol
 

N M G _ F A C E _ B B

Build the bounding box for a face

Definition at line 2441 of file nmg_mk.c.

References BN_CK_TOL, BU_LIST_FOR, bu_log(), DEBUG_BASIC, faceuse::f_p, face::fu_p, face::g, loopuse::l_p, loop::lg_p, faceuse::lu_hd, face::magic_p, MAX_FASTF, face::max_pt, loop_g::max_pt, face_g_snurb::max_pt, face::min_pt, loop_g::min_pt, face_g_snurb::min_pt, NMG_CK_FACE, NMG_CK_FACEUSE, NMG_FACE_G_SNURB_MAGIC, nmg_loop_g(), loopuse::orientation, OT_BOOLPLACE, rt_nurb_s_bound(), face::snurb_p, VMAX, VMIN, X, Y, and Z.

Referenced by nmg_make_faces_at_vert(), nmg_rebound(), nmg_shell_a(), and nmg_split_loops_handler().

Here is the call graph for this function:

RT_EXPORT void nmg_shell_a struct shell s,
const struct bn_tol tol
 

N M G _ S H E L L _ A

Build the bounding box for a shell

Definition at line 2494 of file nmg_mk.c.

References BN_CK_TOL, BU_LIST_FOR, BU_LIST_IS_EMPTY, BU_LIST_NEXT, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, bu_log(), vertex_g::coord, DEBUG_BASIC, edgeuse::e_p, shell::eu_hd, faceuse::f_p, shell::fu_hd, GET_SHELL_A, shell::l, faceuse::l, loopuse::l_p, loop::lg_p, shell::lu_hd, bu_list::magic, shell_a::magic, MAX_FASTF, shell_a::max_pt, face::max_pt, loop_g::max_pt, shell_a::min_pt, face::min_pt, loop_g::min_pt, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_FACE, NMG_CK_SHELL, NMG_CK_SHELL_A, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, nmg_face_bb(), nmg_find_model(), nmg_loop_g(), NMG_SHELL_A_MAGIC, rt_bomb(), shell::sa_p, vertexuse::v_p, vertex::vg_p, VMAX, VMIN, VMINMAX, VSETALL, edgeuse::vu_p, and shell::vu_p.

Referenced by nmg_rebound(), nmg_region_a(), and nmg_shell_coplanar_face_merge().

Here is the call graph for this function:

RT_EXPORT void nmg_region_a struct nmgregion r,
const struct bn_tol tol
 

N M G _ R E G I O N _ A

build attributes/extents for all shells in a region

Definition at line 2578 of file nmg_mk.c.

References BN_CK_TOL, BU_LIST_FOR, bu_log(), DEBUG_BASIC, GET_REGION_A, nmgregion::m_p, nmgregion_a::magic, MAX_FASTF, nmgregion_a::max_pt, shell_a::max_pt, nmgregion_a::min_pt, shell_a::min_pt, NMG_CK_REGION, NMG_CK_REGION_A, NMG_CK_SHELL_A, NMG_REGION_A_MAGIC, nmg_shell_a(), nmgregion::ra_p, nmgregion::s_hd, shell::sa_p, VMAX, VMIN, and VSETALL.

Referenced by nmg_extrude_shell(), nmg_hollow_shell(), nmg_rebound(), and rt_tgc_tnurb().

Here is the call graph for this function:

RT_EXPORT int nmg_demote_lu struct loopuse lu1  ) 
 

N M G _ D E M O T E _ L U

Demote a loopuse of edgeuses to a bunch of wire edges in the shell.

Returns - 0 If all is well (edges moved to shell, loopuse deleted). 1 If parent is empty, and is thus "illegal". Still successful.

Definition at line 2632 of file nmg_mk.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_NON_EMPTY, bu_log(), DEBUG_BASIC, DEBUG_CLASSIFY, loopuse::down_hd, edgeuse::e_p, shell::eu_hd, edgeuse::eumate_p, edgeuse::l, loopuse::lumate_p, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_EDGEUSE_MAGIC, nmg_find_s_of_lu(), nmg_klu(), NMG_VERTEXUSE_MAGIC, rt_bomb(), edgeuse::s_p, and edgeuse::up.

Here is the call graph for this function:

RT_EXPORT int nmg_demote_eu struct edgeuse eu  ) 
 

N M G _ D E M O T E _ E U

Demote a wire edge into a pair of self-loop verticies

Returns - 0 If all is well 1 If shell is empty, and is thus "illegal".

Definition at line 2696 of file nmg_mk.c.

References bu_log(), DEBUG_BASIC, edgeuse::eumate_p, shell::l, bu_list::magic, edgeuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_SHELL, nmg_is_vertex_a_selfloop_in_shell(), nmg_keu(), nmg_mlv(), nmg_shell_is_empty(), NMG_SHELL_MAGIC, OT_SAME, rt_bomb(), edgeuse::s_p, edgeuse::up, vertexuse::v_p, void(), and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT void nmg_movevu struct vertexuse vu,
struct vertex v
 

N M G _ M O V E V U

Move a vertexuse from an old vertex to a new vertex. If this was the last use, the old vertex is destroyed.

XXX nmg_jvu() as a better name?

Definition at line 2746 of file nmg_mk.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_IS_EMPTY, bu_log(), DEBUG_BASIC, FREE_VERTEX, FREE_VERTEX_G, vertexuse::l, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, vertexuse::v_p, vertex::vg_p, and vertex::vu_hd.

Referenced by nmg_edge_collapse(), nmg_eusplit(), nmg_mlv(), and nmg_simplify_shell_edges().

Here is the call graph for this function:

RT_EXPORT void nmg_je struct edgeuse eudst,
struct edgeuse eusrc
 

N M G _ J E

Move a pair of edgeuses onto a single edge (glue edgeuse). The edgeuse eusrc and its mate are moved to the edge used by eudst. eusrc is made to be immediately radial to eudst. if eusrc does not share the same vertices as eudst, we bomb.

The edgeuse geometry pointers are not changed by this operation.

This routine was formerly called nmg_moveeu().

Definition at line 2783 of file nmg_mk.c.

References bu_log(), vertex_g::coord, DEBUG_BASIC, edgeuse::e_p, edge::eu_p, edgeuse::eumate_p, FREE_EDGE, NMG_CK_EDGEUSE, edgeuse::radial_p, rt_bomb(), V3ARGS, vertexuse::v_p, vertex::vg_p, and edgeuse::vu_p.

Referenced by nmg_do_radial_join(), nmg_dup_loop(), nmg_esplit(), nmg_join_2loops(), nmg_join_2singvu_loops(), nmg_join_singvu_loop(), nmg_radial_implement_decisions(), nmg_radial_join_eu_NEW(), and rt_tgc_tnurb().

Here is the call graph for this function:

RT_EXPORT void nmg_unglueedge struct edgeuse eu  ) 
 

N M G _ U N G L U E E D G E

If edgeuse is part of a shared edge (more than one pair of edgeuses on the edge), it and its mate are "unglued" from the edge, and associated with a new edge structure.

Primarily a support routine for nmg_eusplit()

If the original edge had edge geometry, that is *not* duplicated here, because it is not easy (or appropriate) for nmg_eusplit() to know whether the new vertex lies on the previous edge geometry or not. Hence having the nmg_ebreak() interface, which preserves the ege geometry across a split, and nmg_esplit() which does not.

Definition at line 2870 of file nmg_mk.c.

References bu_log(), DEBUG_BASIC, edgeuse::e_p, edge::eu_p, edgeuse::eumate_p, GET_EDGE, edgeuse::l, bu_list::magic, edge::magic, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_EDGE_MAGIC, nmg_find_model(), and edgeuse::radial_p.

Referenced by nmg_eusplit().

Here is the call graph for this function:

RT_EXPORT void nmg_jv struct vertex v1,
struct vertex v2
 

Referenced by nmg_break_eg_on_v(), nmg_break_eu_on_v(), nmg_isect_edge2p_edge2p(), nmg_isect_vert2p_face2p(), nmg_make_faces_at_vert(), nmg_ptbl_vfuse(), and nmg_repair_v_near_v().

RT_EXPORT void nmg_jfg struct face f1,
struct face f2
 

N M G _ J F G

Join two faces, so that they share one underlying face geometry. The loops of the two faces remains unchanged.

If one of the faces does not have any geometry, then it is made to share the geometry of the other.

Definition at line 2973 of file nmg_mk.c.

References BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_INSERT, BU_LIST_NON_EMPTY, bu_log(), DEBUG_BASIC, face_g_plane::f_hd, face::flip, FREE_FACE_G_PLANE, face::g, face::l, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, and face::plane_p.

Referenced by nmg_dup_shell(), and nmg_two_face_fuse().

Here is the call graph for this function:

RT_EXPORT void nmg_jeg struct edge_g_lseg dest_eg,
struct edge_g_lseg src_eg
 

N M G _ J E G

Join two edge geometries. For all edges in the model which refer to 'src_eg', change them to refer to 'dest_eg'. The source is destroyed.

It is the responsibility of the caller to make certain that the 'dest_eg' is the best one for these edges. Outrageously wrong requests will cause this routine to abort.

This algorithm does not make sense if dest_eg is an edge_g_cnurb; those only make sense in the parameter space of their associated face.

Definition at line 3052 of file nmg_mk.c.

References bn_radtodeg, BU_LIST_FIRST, BU_LIST_MAIN_PTR, BU_LIST_NON_EMPTY, bu_log(), DEBUG_BASIC, edge_g_lseg::e_dir, edge_g_lseg::eu_hd2, edgeuse::g, edge_g_lseg::l, edgeuse::lseg_p, bu_list::magic, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, NMG_CKMAG, NMG_EDGEUSE2_MAGIC, nmg_use_edge_g(), rt_bomb(), VDOT, VMOVE, VPRINT, and VUNITIZE.

Referenced by nmg_edge_geom_isect_line(), nmg_find_edge_between_2fu(), nmg_find_eg_between_2fg(), nmg_model_edge_g_fuse(), and nmg_radial_join_eu_NEW().

Here is the call graph for this function:

RT_EXPORT void nmg_merge_regions struct nmgregion r1,
struct nmgregion r2,
const struct bn_tol tol
 

N M G _ M E R G E _ R E G I O N S

Definition at line 61 of file nmg_mod.c.

References BN_CK_TOL, BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_NON_EMPTY, shell::l, nmgregion::m_p, NMG_CK_MODEL, NMG_CK_REGION, nmg_kr(), nmg_rebound(), shell::r_p, rt_bomb(), nmgregion::s_hd, and void().

Referenced by rt_nmg_tess().

Here is the call graph for this function:

RT_EXPORT void nmg_shell_coplanar_face_merge struct shell s,
const struct bn_tol tol,
const int  simplify
 

N M G _ S H E L L _ C O P L A N A R _ F A C E _ M E R G E

A geometric routine to find all pairs of faces in a shell that have the same plane equation (to within the given tolerance), and combine them into a single face.

Note that this may result in some of the verticies being very slightly off the plane equation, but the geometry routines need to be prepared for this in any case. If the "simplify" flag is set, pairs of loops in the face that touch will be combined into a single loop where possible.

XXX Perhaps should be recast as "nmg_shell_shared_face_merge()", leaving XXX all the geometric calculations to the code in nmg_fuse.c ?

Definition at line 113 of file nmg_mod.c.

References bcopy, bu_calloc(), bu_free(), BU_LIST_FOR, BU_LIST_IS_HEAD, BU_LIST_NEXT, BU_LIST_NEXT_IS_HEAD, BU_LIST_NOT_HEAD, BU_LIST_PREV, bu_log(), DEBUG_BASIC, bn_tol::dist, faceuse::f_p, face::flip, shell::fu_hd, faceuse::fumate_p, face::g, shell::l, faceuse::l, faceuse::lu_hd, bu_list::magic, model::maxindex, NEAR_ZERO, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, nmg_ck_fu_verts(), NMG_CK_SHELL, nmg_find_model(), NMG_GET_FU_PLANE, NMG_INDEX_SET, NMG_INDEX_TEST, nmg_jf(), nmg_shell_a(), nmg_simplify_loop(), bn_tol::para, face::plane_p, rt_bomb(), and VDOT.

Referenced by nmg_hollow_shell(), and wdb_nmg_simplify_cmd().

Here is the call graph for this function:

RT_EXPORT int nmg_simplify_shell struct shell s  ) 
 

N M G _ S I M P L I F Y _ S H E L L

Simplify all the faces in this shell, where possible. Under some circumstances this may result in an empty shell as a result.

Returns - 0 If all was OK 1 If shell is now empty

Definition at line 241 of file nmg_mod.c.

References BU_LIST_FOR, BU_LIST_PREV, bu_log(), DEBUG_BASIC, shell::fu_hd, faceuse::l, NMG_CK_SHELL, nmg_kfu(), nmg_shell_is_empty(), and nmg_simplify_face().

Referenced by nmg_hollow_shell().

Here is the call graph for this function:

RT_EXPORT void nmg_rm_redundancies struct shell s,
const struct bn_tol tol
 

N M G _ R M _ R E D U N D A N C I E S

Remove all redundant parts between the different "levels" of a shell. Remove wire loops that match face loops. Remove wire edges that match edges in wire loops or face loops. Remove lone vertices (stored as wire loops on a single vertex) that match vertices in a face loop, wire loop, or wire edge.

Definition at line 275 of file nmg_mod.c.

References BN_CK_TOL, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_NEXT, BU_LIST_NON_EMPTY, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, bu_log(), DEBUG_BASIC, loopuse::down_hd, edgeuse::e_p, shell::eu_hd, edgeuse::eumate_p, shell::fu_hd, faceuse::fumate_p, faceuse::l, loopuse::l, loopuse::l_p, shell::lu_hd, faceuse::lu_hd, loopuse::lumate_p, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOP, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_CLASS_AinB, NMG_CLASS_AonBshared, nmg_classify_lu_lu(), NMG_EDGEUSE_MAGIC, nmg_is_edge_in_facelist(), nmg_is_edge_in_looplist(), nmg_is_loop_in_facelist(), nmg_is_vertex_in_edgelist(), nmg_is_vertex_in_facelist(), nmg_is_vertex_in_looplist(), nmg_keu(), nmg_kfu(), nmg_klu(), NMG_VERTEXUSE_MAGIC, NULL, faceuse::orientation, loopuse::orientation, OT_OPPOSITE, OT_SAME, vertexuse::v_p, void(), and shell::vu_p.

Referenced by nmg_evaluate_boolean().

Here is the call graph for this function:

RT_EXPORT void nmg_sanitize_s_lv struct shell s,
int  orient
 

N M G _ S A N I T I Z E _ S _ L V

Remove those pesky little vertex-only loops of orientation "orient". Typically these will be OT_BOOLPLACE markers created in the process of doing intersections for the boolean operations.

Definition at line 627 of file nmg_mod.c.

References BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_IS_EMPTY, BU_LIST_NOT_HEAD, BU_LIST_PLAST, BU_LIST_PNEXT, BU_LIST_PNEXT_PNEXT, bu_log(), vertex_g::coord, DEBUG_BASIC, loopuse::down_hd, shell::fu_hd, faceuse::fumate_p, faceuse::lu_hd, shell::lu_hd, NMG_CK_SHELL, nmg_kfu(), nmg_klu(), NMG_VERTEXUSE_MAGIC, loopuse::orientation, OT_UNSPEC, vertexuse::v_p, vertex::vg_p, and VPRINT.

Referenced by nmg_crackshells().

Here is the call graph for this function:

RT_EXPORT void nmg_s_split_touchingloops struct shell s,
const struct bn_tol tol
 

N M G _ S _ S P L I T _ T O U C H I N G L O O P S

For every loop in a shell, invoke nmg_split_touchingloops() on it.

Needed before starting classification, to separate interior (touching) loop segments into true interior loops, so each can be processed separately.

Definition at line 710 of file nmg_mod.c.

References BN_CK_TOL, BU_LIST_FOR, bu_log(), DEBUG_BASIC, shell::fu_hd, faceuse::lu_hd, shell::lu_hd, NMG_CK_SHELL, nmg_loop_split_at_touching_jaunt(), nmg_lu_reorient(), nmg_split_touchingloops(), loopuse::orientation, OT_UNSPEC, and void().

Referenced by nmg_triangulate_model().

Here is the call graph for this function:

RT_EXPORT void nmg_s_join_touchingloops struct shell s,
const struct bn_tol tol
 

N M G _ S _ J O I N _ T O U C H I N G L O O P S

For every loop in a shell, invoke nmg_join_touchingloops() on it.

Definition at line 753 of file nmg_mod.c.

References BN_CK_TOL, BU_LIST_FOR, bu_log(), DEBUG_BASIC, shell::fu_hd, faceuse::lu_hd, shell::lu_hd, NMG_CK_SHELL, nmg_join_touchingloops(), nmg_lu_reorient(), loopuse::orientation, and OT_UNSPEC.

Here is the call graph for this function:

RT_EXPORT void nmg_js struct shell s1,
struct shell s2,
const struct bn_tol tol
 

Referenced by nmg_evaluate_boolean(), nmg_extrude_cleanup(), nmg_hollow_shell(), and nmg_open_shells_connect().

RT_EXPORT void nmg_invert_shell struct shell s,
const struct bn_tol tol
 

N M G _ I N V E R T _ S H E L L

Reverse the surface normals, and invert the orientation state of all faceuses in a shell.

This turns the shell "inside out", such as might be needed for the right hand side term of a subtraction operation.

While this function is operating, the parity of faceuses radially around edgeuses is disrupted, hence this atomic interface to invert the shell.

The 'tol' argument is used strictly for printing.

Definition at line 965 of file nmg_mod.c.

References BN_CK_TOL, bu_calloc(), bu_free(), BU_LIST_FOR, bu_log(), DEBUG_BASIC, faceuse::f_p, shell::fu_hd, nmgregion::m_p, model::maxindex, NMG_CK_FACEUSE, NMG_CK_MODEL, NMG_CK_SHELL, NMG_INDEX_SET, NMG_INDEX_TEST, nmg_reverse_face(), and shell::r_p.

Referenced by nmg_evaluate_boolean(), and nmg_hollow_shell().

Here is the call graph for this function:

RT_EXPORT struct faceuse* nmg_cmface struct shell s,
struct vertex **  vt[],
int  n
 

Referenced by rt_ebm_tess(), rt_ell_tnurb(), rt_tgc_tnurb(), tesselate_pipe_bend(), and tesselate_pipe_linear().

RT_EXPORT struct faceuse* nmg_cface struct shell s,
struct vertex **  verts,
int  n
 

N M G _ C F A C E

Create a loop within a face, given a list of vertices.

"verts" is an array of "n" pointers to (struct vertex). "s" is the parent shell for the new face. The face will consist of a single loop made from edges between the n vertices.

If verts is a null pointer (no vertex list), all vertices of the face will be new points. Otherwise, verts is a pointer to a list of vertices to use in creating the face/loop. Null entries within the list will cause a new vertex to be created for that point. Such new vertices will be inserted into the list for return to the caller.

The vertices should be listed in "counter-clockwise" (CCW) order if this is an ordinary face (loop), and in "clockwise" (CW) order if this is an interior ("hole" or "subtracted") face (loop). This routine makes only topology, without reference to any geometry.

Note that this routine inserts new vertices (by edge use splitting) at the head of the loop, which reverses the order. Therefore, the caller's vertices are traversed in reverse order to counter this behavior, and to effect the proper vertex order in the final face loop.

Definition at line 1206 of file nmg_mod.c.

References bu_log(), NMG_CK_SHELL, NMG_CK_VERTEX, and rt_bomb().

Referenced by nmg_extrude_face(), rt_vol_tess(), tesselate_pipe_end(), and tesselate_pipe_start().

Here is the call graph for this function:

RT_EXPORT struct faceuse* nmg_add_loop_to_face struct shell s,
struct faceuse fu,
struct vertex **  verts,
int  n,
int  dir
 

N M G _ A D D _ L O O P _ T O _ F A C E

Create a new loop within a face, given a list of vertices. Modified version of nmg_cface().

"verts" is an array of "n" pointers to (struct vertex). "s" is the parent shell for the new face. The face will consist of a single loop made from edges between the n vertices.

If verts is a null pointer (no vertex list), all vertices of the face will be new points. Otherwise, verts is a pointer to a list of vertices to use in creating the face/loop. Null entries within the list will cause a new vertex to be created for that point. Such new vertices will be inserted into the list for return to the caller.

The vertices should be listed in "counter-clockwise" (CCW) order if this is an ordinary face (loop), and in "clockwise" (CW) order if this is an interior ("hole" or "subtracted") face (loop). This routine makes only topology, without reference to any geometry.

Note that this routine inserts new vertices (by edge use splitting) at the head of the loop, which reverses the order. Therefore, the caller's vertices are traversed in reverse order to counter this behavior, and to effect the proper vertex order in the final face loop.

Definition at line 1286 of file nmg_mod.c.

References BU_LIST_FIRST, bu_log(), loopuse::down_hd, shell::l, faceuse::l, bu_list::magic, NMG_CK_SHELL, nmg_eusplit(), nmg_meonvu(), nmg_mf(), nmg_mlv(), rt_bomb(), vertexuse::v_p, and edgeuse::vu_p.

Referenced by rt_ebm_tess(), and tesselate_pipe_end().

Here is the call graph for this function:

RT_EXPORT int nmg_fu_planeeqn struct faceuse fu,
const struct bn_tol tol
 

N M G _ F U _ P L A N E E Q N

Given a convex face that has been constructed with edges listed in counter-clockwise (CCW) order, compute the surface normal and plane equation for this face.

D C *-------------------* | | | .<........... | ^ N | . ^ | ^ | \ | . counter- . | | | \ | . clock . | | |C-B \ | . wise . | |C-B | \ | v . | | | \ | ...........>. | | \| | *-------------------* A B <----- A-B

If the vertices in the loop are given in the order A B C D (e.g., counter-clockwise), then the outward pointing surface normal can be computed as:

N = (C-B) x (A-B)

This is the "right hand rule". For reference, note that a vector which points "into" the loop can be subsequently found by taking the cross product of the surface normal and any edge vector, e.g.:

Left = N x (B-A) or Left = N x (C-B)

This routine will skip on past edges that start and end on the same vertex, in an attempt to avoid trouble. However, the loop *must* be convex for this routine to work. Otherwise, the surface normal may be inadvertently reversed.

Returns - 0 OK -1 failure

Definition at line 1387 of file nmg_mod.c.

References bn_3pts_collinear(), BN_CK_TOL, bn_mk_plane_3pts(), bn_pt3_pt3_equal(), BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_PNEXT_CIRC, bu_log(), vertex_g::coord, DEBUG_BASIC, loopuse::down_hd, faceuse::f_p, HPRINT, faceuse::lu_hd, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, nmg_ck_fu_verts(), NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_face_g(), V3ARGS, vertexuse::v_p, vertex::vg_p, and edgeuse::vu_p.

Referenced by rt_ebm_tess(), and rt_vol_tess().

Here is the call graph for this function:

RT_EXPORT void nmg_gluefaces struct faceuse fulist[],
int  n,
const struct bn_tol tol
 

Referenced by nmg_dup_shell(), and nmg_extrude_face().

RT_EXPORT int nmg_simplify_face struct faceuse fu  ) 
 

N M G _ S I M P L I F Y _ F A C E

combine adjacent loops within a face which serve no apparent purpose by remaining separate and distinct. Kill "wire-snakes" in face.

Returns - 0 If all was OK 1 If faceuse is now empty

Definition at line 1557 of file nmg_mod.c.

References BU_LIST_FOR, BU_LIST_IS_EMPTY, BU_LIST_PREV, bu_log(), DEBUG_BASIC, loopuse::l, faceuse::lu_hd, NMG_CK_FACEUSE, nmg_kill_snakes(), nmg_klu(), and nmg_simplify_loop().

Referenced by nmg_simplify_shell().

Here is the call graph for this function:

RT_EXPORT void nmg_reverse_face struct faceuse fu  ) 
 

Referenced by nmg_extrude_face(), nmg_invert_shell(), nmg_propagate_normals(), and nmg_reverse_face_and_radials().

RT_EXPORT void nmg_mv_fu_between_shells struct shell dest,
struct shell src,
struct faceuse fu
 

Referenced by nmg_isect_shell_self(), and nmg_js().

RT_EXPORT void nmg_jf struct faceuse dest_fu,
struct faceuse src_fu
 

Referenced by nmg_js(), and nmg_shell_coplanar_face_merge().

RT_EXPORT struct faceuse* nmg_dup_face struct faceuse fu,
struct shell s
 

N M G _ D U P _ F A C E

Construct a duplicate of a face into the shell 's'. The vertex geometry is copied from the source face into topologically distinct (new) vertex and vertex_g structs. They will start out being geometricly coincident, but it is anticipated that the caller will modify the geometry, e.g. as in an extrude operation.

It is the caller's responsibility to re-bound the new face after making any modifications.

Definition at line 1959 of file nmg_mod.c.

References bcopy, bu_calloc(), bu_free(), BU_LIST_FOR, bu_log(), face_g_snurb::ctl_points, DEBUG_BASIC, faceuse::f_p, faceuse::fumate_p, face::g, knot_vector::k_size, knot_vector::knots, faceuse::l, loopuse::l, loopuse::lumate_p, bu_list::magic, model::maxindex, NMG_CK_FACE, NMG_CK_FACEUSE, NMG_CK_SHELL, nmg_dup_loop(), nmg_face_g(), NMG_FACE_G_PLANE_MAGIC, nmg_face_g_snurb(), NMG_FACE_G_SNURB_MAGIC, nmg_find_model(), NMG_GET_FU_PLANE, nmg_mf(), nmg_orientation(), NULL, face_g_snurb::order, loopuse::orientation, faceuse::orientation, OT_SAME, face_g_snurb::pt_type, RT_NURB_EXTRACT_COORDS, face_g_snurb::s_size, face::snurb_p, face_g_snurb::u, and face_g_snurb::v.

Referenced by nmg_extrude_face(), nmg_to_poly(), and stash_shell().

Here is the call graph for this function:

RT_EXPORT void nmg_jl struct loopuse lu,
struct edgeuse eu
 

N M G _ J L

Join two loops together which share a common edge, such that both occurances of the common edge are deleted. This routine always leaves "lu" intact, and kills the loop radial to "eu" (after stealing all it's edges).

Either both loops must be of the same orientation, or then first loop must be OT_SAME, and the second loop must be OT_OPPOSITE. Joining OT_SAME & OT_OPPOSITE always gives an OT_SAME result. Above statment is not true!!!! I have added nmg_lu_reorient() -JRA Since "lu" must survive, it must be the OT_SAME one.

Definition at line 2079 of file nmg_mod.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_INSERT, BU_LIST_PNEXT_CIRC, bu_log(), DEBUG_BASIC, edgeuse::eumate_p, loopuse::l, edgeuse::l, edgeuse::lu_p, bu_list::magic, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, nmg_keu(), nmg_klu(), NMG_LOOPUSE_MAGIC, nmg_lu_reorient(), nmg_orientation(), loopuse::orientation, OT_OPPOSITE, OT_SAME, edgeuse::radial_p, rt_bomb(), edgeuse::up, and loopuse::up.

Referenced by nmg_simplify_loop().

Here is the call graph for this function:

RT_EXPORT struct vertexuse* nmg_join_2loops struct vertexuse vu1,
struct vertexuse vu2
 

N M G _ J O I N _ 2 L O O P S

Intended to join an interior and exterior loop together, by building a bridge between the two indicated vertices.

This routine can be used to join two exterior loops which do not overlap, and it can also be used to join an exterior loop with a loop of oposite orientation that lies entirely within it. This restriction is important, but not checked for.

If the two vertexuses reference distinct vertices, then two new edges are built to bridge the loops together. If the two vertexuses share the same vertex, then it is even easier.

Returns the replacement for vu2.

Definition at line 2178 of file nmg_mod.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_INSERT, BU_LIST_NON_EMPTY, BU_LIST_PNEXT_CIRC, BU_LIST_PPREV_CIRC, bu_log(), DEBUG_BASIC, loopuse::down_hd, vertexuse::eu_p, edgeuse::eumate_p, loopuse::fu_p, edgeuse::l, loopuse::l_p, edgeuse::lu_p, loopuse::lumate_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEXUSE, nmg_eins(), nmg_eusplit(), nmg_je(), nmg_klu(), nmg_lu_reorient(), rt_bomb(), vertexuse::up, edgeuse::up, loopuse::up, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_face_state_transition(), and nmg_join_touchingloops().

Here is the call graph for this function:

RT_EXPORT struct vertexuse* nmg_join_singvu_loop struct vertexuse vu1,
struct vertexuse vu2
 

N M G _ J O I N _ S I N G V U _ L O O P

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. Return is the new vu that replaces vu2.

Definition at line 2272 of file nmg_mod.c.

References BU_LIST_PPREV_CIRC, bu_log(), DEBUG_BASIC, vertexuse::eu_p, vertexuse::lu_p, vertexuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_eins(), nmg_eusplit(), nmg_je(), nmg_klu(), NMG_LOOPUSE_MAGIC, rt_bomb(), vertexuse::up, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_face_state_transition().

Here is the call graph for this function:

RT_EXPORT struct vertexuse* nmg_join_2singvu_loops struct vertexuse vu1,
struct vertexuse vu2
 

N M G _ J O I N _ 2 S I N G V U _ L O O P S

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. Returns replacement vu for vu2. Does not change the orientation.

Definition at line 2322 of file nmg_mod.c.

References BU_LIST_PPREV_CIRC, bu_log(), DEBUG_BASIC, vertexuse::eu_p, vertexuse::lu_p, edgeuse::lu_p, vertexuse::magic_p, NMG_CK_LOOPUSE, NMG_CK_VERTEXUSE, nmg_eusplit(), nmg_je(), nmg_klu(), NMG_LOOPUSE_MAGIC, nmg_meonvu(), rt_bomb(), vertexuse::up, edgeuse::up, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_face_state_transition().

Here is the call graph for this function:

RT_EXPORT struct loopuse* nmg_cut_loop struct vertexuse vu1,
struct vertexuse vu2
 

N M G _ C U T _ L O O P

Divide a loop of edges between two vertexuses.

Make a new loop between the two vertexes, and split it and the loop of the vertexuses at the same time.

BEFORE AFTER

Va eu1 vu1 Vb Va eu1 vu1 Vb * <---------* <---------* * <--------* * <--------* | | | | ^ | ^ | ^ | Original | | Original | | New | | Loopuse | | Loopuse | | Loopuse | V | V | V / | | | / | *----------> *--------> * *--------> * *--------> * Vd vu2 eu2 Vc Vd vu2 eu2 Vc

Returns the new loopuse pointer. The new loopuse will contain "vu2" and the edgeuse associated with "vu2" as the FIRST edgeuse on the list of edgeuses. The edgeuse for the new edge (connecting the verticies indicated by vu1 and vu2) will be the LAST edgeuse on the new loopuse's list of edgeuses.

It is the caller's responsibility to re-bound the loops.

Both old and new loopuse will have orientation OT_UNSPEC. It is the callers responsibility to determine what the orientations should be. This can be conveniently done with nmg_lu_reorient().

Here is a simple example of how the new loopuse might have a different orientation than the original one:

F<----------------E | ^ | | | C--------->D | ^ . | | . | | . | B<---------A | ^ v | G---------------->H

When nmg_cut_loop(A,D) is called, the new loop ABCD is clockwise, even though the original loop was counter-clockwise. There is no way to determine this without referring to the face normal and vertex geometry, which being a topology routine this routine shouldn't do.

Returns - NULL Error lu Loopuse of new loop, on success.

Definition at line 2421 of file nmg_mod.c.

References bu_bomb(), bu_calloc(), bu_free(), BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_INSERT, BU_LIST_PNEXT_CIRC, bu_log(), DEBUG_CUTLOOP, DEBUG_PLOTEM, loopuse::down_hd, vertexuse::eu_p, edgeuse::eumate_p, loopuse::fu_p, faceuse::fumate_p, edgeuse::l, edgeuse::lu_p, loopuse::lumate_p, nmgregion::m_p, loopuse::magic_p, model::maxindex, name, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_MODEL, NMG_CK_VERTEXUSE, nmg_kvu(), nmg_mlv(), nmg_pl_fu(), nmg_split_lu_at_vu(), NULL, loopuse::orientation, OT_UNSPEC, perror(), shell::r_p, rt_bomb(), faceuse::s_p, vertexuse::up, edgeuse::up, loopuse::up, vertexuse::v_p, and void().

Referenced by nmg_face_state_transition(), and nmg_make_faces_at_vert().

Here is the call graph for this function:

RT_EXPORT struct loopuse* nmg_split_lu_at_vu struct loopuse lu,
struct vertexuse split_vu
 

N M G _ S P L I T _ L U _ A T _ V U

In a loop which has at least two distinct uses of a vertex, split off the edges from "split_vu" to the second occurance of the vertex into a new loop. It is the caller's responsibility to re-bound the loops.

The old and new loopuses will have orientation OT_UNSPEC. It is the callers responsibility to determine what their orientations should be. This can be conveniently done with nmg_lu_reorient().

Here is an example:

E<__________B <___________A | ^\ ^ | / \ | | / \ | | / v | | D<_______C | v | F________________________>G

When nmg_split_lu_at_vu(lu, B) is called, the old loopuse continues to be counter clockwise and OT_SAME, but the new loopuse BCD is now clockwise. It needs to be marked OT_OPPOSITE. Without referring to the geometry, this can't be determined.

Intended primarily for use by nmg_split_touchingloops().

Returns - NULL Error lu Loopuse of new loop, on success.

Definition at line 2589 of file nmg_mod.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_INSERT, BU_LIST_PNEXT_CIRC, loopuse::down_hd, vertexuse::eu_p, edgeuse::eumate_p, edgeuse::l, edgeuse::lu_p, loopuse::lumate_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, nmg_kvu(), nmg_mlv(), loopuse::orientation, OT_UNSPEC, vertexuse::up, edgeuse::up, loopuse::up, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_cut_loop(), nmg_extrude_cleanup(), nmg_face_state_transition(), nmg_kill_cracks(), and nmg_split_touchingloops().

Here is the call graph for this function:

RT_EXPORT struct vertexuse* nmg_find_repeated_v_in_lu struct vertexuse vu  ) 
 

N M G _ F I N D _ R E P E A T E D _ V _ I N _ L U

Given a vertexuse of an edgeuse in a loopuse, see if the vertex is used by at least one other vertexuse in that same loopuse.

Returns - vu If this vertex appears elsewhere in the loopuse. NULL If this is the only occurance of this vertex in the loopuse. XXX move to nmg_info.c

Definition at line 2665 of file nmg_mod.c.

References BU_LIST_FOR, vertexuse::eu_p, edgeuse::lu_p, vertexuse::magic_p, edgeuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_EDGEUSE_MAGIC, NMG_LOOPUSE_MAGIC, vertexuse::up, edgeuse::up, vertexuse::v_p, and vertex::vu_hd.

Referenced by nmg_get_touching_jaunts(), and nmg_split_touchingloops().

RT_EXPORT void nmg_split_touchingloops struct loopuse lu,
const struct bn_tol tol
 

N M G _ S P L I T _ T O U C H I N G L O O P S

Search through all the vertices in a loop. Whenever there are two distinct uses of one vertex in the loop, split off all the edges between them into a new loop.

Note that the call to nmg_split_lu_at_vu() will cause the split loopuses to be marked OT_UNSPEC.

Definition at line 2719 of file nmg_mod.c.

References BN_CK_TOL, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), DEBUG_BASIC, loopuse::down_hd, vertexuse::eu_p, loopuse::l_p, edgeuse::lu_p, vertexuse::magic_p, edgeuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOP, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_eu_is_part_of_crack(), nmg_find_lu_of_vu(), nmg_find_repeated_v_in_lu(), nmg_loop_g(), NMG_LOOPUSE_MAGIC, nmg_split_lu_at_vu(), nmg_split_touchingloops(), top(), vertexuse::up, edgeuse::up, vertexuse::v_p, and vertex::vu_hd.

Referenced by nmg_s_split_touchingloops(), nmg_split_touchingloops(), and nmg_triangulate_fu().

Here is the call graph for this function:

RT_EXPORT int nmg_join_touchingloops struct loopuse lu  ) 
 

N M G _ J O I N _ T O U C H I N G L O O P S

Search through all the vertices in a loopuse that belongs to a faceuse. Whenever another loopuse in the same faceuse refers to one of this loop's vertices, the two loops touch at (at least) that vertex. Join them together.

Return - count of loops joined (eliminated)

Definition at line 2861 of file nmg_mod.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), DEBUG_BASIC, loopuse::down_hd, vertexuse::eu_p, loopuse::fu_p, edgeuse::lu_p, vertexuse::magic_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, nmg_join_2loops(), NMG_LOOPUSE_MAGIC, top(), loopuse::up, vertexuse::up, edgeuse::up, vertexuse::v_p, vertex::vu_hd, and edgeuse::vu_p.

Referenced by nmg_s_join_touchingloops().

Here is the call graph for this function:

RT_EXPORT int nmg_get_touching_jaunts const struct loopuse lu,
struct bu_ptbl tbl,
int *  need_init
 

N M G _ G E T _ T O U C H I N G _ J A U N T S

Create a table of EU's. Each EU will be the first EU in a touching jaunt (edgeuses from vert A->B->A) where vertex B appears elswhere in the loopuse lu.

returns: count of touching jaunts found

The passed pointer to an bu_ptbl structure may not be initialized. If no touching jaunts are found, it will still not be initialized upon return (to avoid bu_malloc/bu_free pairs for loops with no touching jaunts. The flag (need_init) lets this routine know whether the ptbl structure has been initialized

Definition at line 2959 of file nmg_mod.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_PNEXT_CIRC, bu_ptbl_init(), bu_ptbl_ins(), loopuse::down_hd, edgeuse::l, NMG_CK_LOOPUSE, NMG_EDGEUSE_MAGIC, nmg_find_repeated_v_in_lu(), vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_loop_split_at_touching_jaunt().

Here is the call graph for this function:

RT_EXPORT void nmg_kill_accordions struct loopuse lu  ) 
 

Definition at line 3110 of file nmg_mod.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_PPREV_CIRC, bu_log(), DEBUG_BASIC, DEBUG_CUTLOOP, loopuse::down_hd, edgeuse::eumate_p, NMG_ARE_EUS_ADJACENT, NMG_CK_LOOPUSE, NMG_EDGEUSE_MAGIC, nmg_keu(), top(), vertexuse::v_p, void(), and edgeuse::vu_p.

Referenced by nmg_loop_split_at_touching_jaunt().

Here is the call graph for this function:

RT_EXPORT int nmg_loop_split_at_touching_jaunt struct loopuse lu,
const struct bn_tol tol
 

N M G _ L O O P _ S P L I T _ A T _ T O U C H I N G _ J A U N T

If a loop makes a "jaunt" (edgeuses from verts A->B->A), where the tip of the jaunt touches the same loop at a different vertexuse, cut the loop into two.

This produces a much more reasonable loop split than nmg_split_touchingloops(), which tends to peel off 2-edge "cracks" as it unravels the loop.

Note that any loops so split will be marked OT_UNSPEC.

Definition at line 3191 of file nmg_mod.c.

References BN_CK_TOL, bu_log(), BU_PTBL_END, BU_PTBL_GET, DEBUG_BASIC, DEBUG_CUTLOOP, NMG_CK_LOOPUSE, nmg_get_touching_jaunts(), nmg_kill_accordions(), nmg_pr_lu_briefly(), and top().

Referenced by nmg_s_split_touchingloops(), and nmg_triangulate_fu().

Here is the call graph for this function:

RT_EXPORT void nmg_simplify_loop struct loopuse lu  ) 
 

N M G _ S I M P L I F Y _ L O O P

combine adjacent loops within the same parent that touch along a common edge into a single loop, with the edge eliminated.

Definition at line 3435 of file nmg_mod.c.

References BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_NOT_HEAD, BU_LIST_PLAST, BU_LIST_PNEXT, bu_log(), DEBUG_BASIC, DEBUG_PL_ANIM, DEBUG_PLOTEM, loopuse::down_hd, edgeuse::eumate_p, loopuse::fu_p, faceuse::fumate_p, edgeuse::lu_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, nmg_jl(), NMG_LOOPUSE_MAGIC, nmg_pl_2fu(), loopuse::orientation, OT_OPPOSITE, OT_SAME, edgeuse::radial_p, edgeuse::up, and loopuse::up.

Referenced by nmg_shell_coplanar_face_merge(), and nmg_simplify_face().

Here is the call graph for this function:

RT_EXPORT int nmg_kill_snakes struct loopuse lu  ) 
 

N M G _ K I L L _ S N A K E S

Removes "snake" or "disconnected crack" edges from loopuse.

Returns - 0 If all went well 1 If the loopuse is now empty and needs to be killed.

Definition at line 3516 of file nmg_mod.c.

References BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_IS_EMPTY, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, BU_LIST_PNEXT_CIRC, bu_log(), DEBUG_BASIC, DEBUG_PL_ANIM, DEBUG_PLOTEM, loopuse::down_hd, vertexuse::eu_p, edgeuse::eumate_p, loopuse::fu_p, faceuse::fumate_p, edgeuse::lu_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, nmg_keu(), NMG_LOOPUSE_MAGIC, nmg_pl_2fu(), edgeuse::radial_p, edgeuse::up, vertexuse::up, loopuse::up, vertexuse::v_p, void(), vertex::vu_hd, and edgeuse::vu_p.

Referenced by nmg_simplify_face().

Here is the call graph for this function:

RT_EXPORT void nmg_mv_lu_between_shells struct shell dest,
struct shell src,
struct loopuse lu
 

Referenced by nmg_js().

RT_EXPORT void nmg_moveltof struct faceuse fu,
struct shell s
 

N M G _ M O V E L T O F

move first pair of shell wire loopuses out to become a genuine loop in an existing face. XXX This routine is not used anywhere, and may not work.

Definition at line 3642 of file nmg_mod.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_FIRST, bu_log(), DEBUG_BASIC, faceuse::fumate_p, loopuse::l, shell::lu_hd, faceuse::lu_hd, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, and faceuse::s_p.

Here is the call graph for this function:

RT_EXPORT struct loopuse* nmg_dup_loop struct loopuse lu,
long *  parent,
long **  trans_tbl
 

Referenced by nmg_dup_face(), and nmg_dup_shell().

RT_EXPORT void nmg_set_lu_orientation struct loopuse lu,
int  is_opposite
 

N M G _ S E T _ L U _ O R I E N T A T I O N

Set this loopuse and mate's orientation to be SAME or OPPOSITE from the orientation of the faceuse they each reside in.

Definition at line 3858 of file nmg_mod.c.

References bu_log(), DEBUG_BASIC, loopuse::lumate_p, NMG_CK_LOOPUSE, loopuse::orientation, OT_OPPOSITE, and OT_SAME.

Referenced by nmg_face_state_transition().

Here is the call graph for this function:

RT_EXPORT void nmg_lu_reorient struct loopuse lu  ) 
 

N M G _ L U _ R E O R I E N T

Based upon a geometric calculation, reorient a loop and it's mate, if the stored orientation differs from the geometric one.

Note that the loopuse and it's mate have the same orientation; it's the faceuses that are normalward and anti-normalward. The loopuses either both agree with their faceuse, or both differ.

Definition at line 3888 of file nmg_mod.c.

References BU_LIST_FIRST_MAGIC, bu_log(), DEBUG_BASIC, loopuse::down_hd, loopuse::fu_p, HREVERSE, loopuse::lumate_p, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_GET_FU_PLANE, nmg_loop_plane_newell(), nmg_orientation(), NMG_VERTEXUSE_MAGIC, loopuse::orientation, faceuse::orientation, OT_BOOLPLACE, OT_OPPOSITE, OT_SAME, PLPRINT, rt_bomb(), loopuse::up, and VDOT.

Referenced by nmg_face_state_transition(), nmg_jl(), nmg_join_2loops(), nmg_kill_cracks(), nmg_s_join_touchingloops(), nmg_s_split_touchingloops(), and nmg_triangulate_fu().

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_eusplit struct vertex v,
struct edgeuse oldeu,
int  share_geom
 

N M G _ E U S P L I T

Split an edgeuse by inserting a vertex into middle of the edgeuse.

Make a new edge, and a vertex. If v is non-null it is taken as a pointer to an existing vertex to use as the start of the new edge. If v is null, then a new vertex is created for the begining of the new edge.

In either case, the new edge will exist as the "next" edgeuse after the edgeuse passed as a parameter.

Upon return, the new edgeuses (eu1 and mate) will not refer to any geometry, unless argument "share_geom" was non-zero.

Explicit return - edgeuse of new edge "eu1", starting at V and going to B.

List on entry -

oldeu .-------------> / A =============== B (edge) / <-------------. oldeumate

List on return -

oldeu(cw) eu1 .-------> .-----> / / (edge) A ========= V ~~~~~~~ B (new edge) / / <-------. <-----. mate mate

Definition at line 3993 of file nmg_mod.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_INIT, BU_LIST_PNEXT, bu_log(), DEBUG_BASIC, edgeuse::e_p, edge::eu_p, edgeuse::eumate_p, loopuse::fu_p, edgeuse::g, edgeuse::l, edgeuse::l2, bu_list::magic, edgeuse::magic_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_CK_VERTEX, NMG_EDGEUSE2_MAGIC, NMG_FACEUSE_MAGIC, nmg_keg(), NMG_LOOPUSE_MAGIC, nmg_me(), nmg_movevu(), NMG_SHELL_MAGIC, nmg_unglueedge(), nmg_use_edge_g(), NULL, edgeuse::orientation, edgeuse::radial_p, rt_bomb(), loopuse::s_p, faceuse::s_p, loopuse::up, edgeuse::up, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_add_loop_to_face(), nmg_dup_loop(), nmg_esplit(), nmg_join_2loops(), nmg_join_2singvu_loops(), nmg_join_singvu_loop(), and tesselate_pipe_start().

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_esplit struct vertex v,
struct edgeuse eu,
int  share_geom
 

N M G _ E S P L I T

Split an edge by inserting a vertex into middle of *all* of the uses of this edge, and combine the new edgeuses together onto the new edge. A more powerful version of nmg_eusplit(), which does only one use.

Makes a new edge, and a vertex. If v is non-null it is taken as a pointer to an existing vertex to use as the start of the new edge. If v is null, then a new vertex is created for the begining of the new edge.

In either case, the new edgeuse will exist as the "next" edgeuse after the edgeuse passed as a parameter.

Note that eu->e_p changes value upon return, because the old edge is incrementally replaced by two new ones.

Geometry will be preserved on eu and it's mates (by nmg_eusplit), if any. ret_eu and mates will share that geometry if share_geom is set non-zero, otherwise they will have null geom pointers.

Explicit return - Pointer to the edgeuse which starts at the newly created vertex (V), and runs to B.

Implicit returns - ret_eu->vu_p->v_p gives the new vertex ("v", if non-null), and ret_eu->e_p is the new edge that runs from V to B.

The new vertex created will also be eu->eumate_p->vu_p->v_p.

Edge on entry -

eu .-------------> / A =============== B (edge) / <-------------. eu->eumate_p

Edge on return -

eu ret_eu .-------> .---------> / / (newedge) A ========= V ~~~~~~~~~~~ B (new edge) / / <-------. <---------.

Note: to replicate the behavior of this routine in BRL-CAD Relase 4.0, call with share_geom=0.

Definition at line 4268 of file nmg_mod.c.

References bu_log(), DEBUG_BASIC, edgeuse::e_p, edgeuse::eumate_p, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, nmg_eusplit(), nmg_je(), NMG_TEST_EDGEUSE, edgeuse::radial_p, rt_bomb(), vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_break_crossed_loops(), nmg_break_edge_at_verts(), nmg_ebreak(), nmg_fix_overlapping_loops(), nmg_isect_eu_eu(), nmg_isect_eu_fu(), and nmg_make_dualvu().

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_ebreak struct vertex v,
struct edgeuse eu
 

N M G _ E B R E A K

Like nmg_esplit(), split an edge into two parts. Ensure that both sets of edgeuses share the original edgeuse geometry. If the original edge had no edge geometry, then none is created here.

This is a simple compatability interface to nmg_esplit(). The return is the return of nmg_esplit().

Definition at line 4386 of file nmg_mod.c.

References bu_log(), DEBUG_BASIC, edgeuse::e_p, edgeuse::g, edgeuse::lseg_p, edgeuse::magic_p, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, nmg_esplit(), and rt_bomb().

Referenced by nmg_break_all_es_on_v(), nmg_break_long_edges(), nmg_e2break(), nmg_ebreaker(), and nmg_model_break_e_on_v().

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_ebreaker struct vertex v,
struct edgeuse eu,
const struct bn_tol tol
 

Definition at line 4422 of file nmg_mod.c.

References BN_CK_TOL, bu_log(), DEBUG_BASIC, edgeuse::e_p, edgeuse::eumate_p, NMG_CK_EDGEUSE, nmg_ebreak(), nmg_eu_radial_check(), nmg_find_e(), nmg_find_s_of_eu(), nmg_radial_join_eu(), vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_break_eg_on_v(), nmg_break_eu_on_v(), nmg_face_state_transition(), nmg_insert_vu_if_on_edge(), nmg_intersect_loops_self(), nmg_isect_edge2p_edge2p(), and nmg_isect_line2_edge2p().

Here is the call graph for this function:

RT_EXPORT struct vertex* nmg_e2break struct edgeuse eu1,
struct edgeuse eu2
 

N M G _ E 2 B R E A K

Given two edges that are known to intersect someplace other than at any of their endpoints, break both of them and insert a shared vertex. Return a pointer to the new vertex.

Definition at line 4485 of file nmg_mod.c.

References bu_log(), DEBUG_BASIC, NMG_CK_EDGEUSE, NMG_CK_VERTEX, nmg_ebreak(), NULL, vertexuse::v_p, void(), and edgeuse::vu_p.

Referenced by nmg_isect_edge2p_edge2p().

Here is the call graph for this function:

RT_EXPORT int nmg_unbreak_edge struct edgeuse eu1_first  ) 
 

N M G _ U N B R E A K _ E D G E

Undoes the effect of an unwanted nmg_ebreak().

Eliminate the vertex between this edgeuse and the next edge, on all edgeuses radial to this edgeuse's edge. The edge geometry must be shared, and all uses of the vertex to be disposed of must originate from this edge pair. Also, the "non-B" ends of all edgeuses around e1 and e2 must terminate at either A or B.

XXX for t-NURBS, this should probably be re-stated as saying that all the edgeuses must share the same 2 edges, and that every eu1 needs to share geom with it's corresponding eu2, and similarly for the two mates.

eu1 eu2 *----------->*----------->* A.....e1.....B.....e2.....C *<-----------*<-----------* eu1mate eu2mate

If successful, the vertex B, the edge e2, and all the edgeuses radial to eu2 (including eu2) will have all been killed. The radial ordering around e1 will not change.

eu1 *------------------------>* A.....e1..................C *<------------------------* eu1mate

No new topology structures are created by this operation.

Returns - 0 OK, edge unbroken <0 failure, nothing changed

Definition at line 4544 of file nmg_mod.c.

References BU_LIST_FOR, bu_list_len(), BU_LIST_PNEXT_CIRC, bu_log(), edgeuse::e_p, edge_g_lseg::eu_hd2, vertexuse::eu_p, edgeuse::eumate_p, edgeuse::g, edgeuse::lseg_p, vertexuse::lu_p, edgeuse::magic_p, vertexuse::magic_p, NMG_CK_EDGE, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, NMG_CK_SHELL, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_find_s_of_eu(), loopuse::orientation, OT_BOOLPLACE, rt_bomb(), s1, vertexuse::up, vertexuse::v_p, vertex::vu_hd, and edgeuse::vu_p.

Referenced by nmg_unbreak_handler().

Here is the call graph for this function:

RT_EXPORT int nmg_unbreak_shell_edge_unsafe struct edgeuse eu1_first  ) 
 

N M G _ U N B R E A K _ S H E L L _ E D G E _ U N S A F E

Undoes the effect of an unwanted nmg_ebreak().

NOTE: THIS IS LIKELY TO PRODUCE AN ILLEGAL NMG STRUCTURE!!!! This routine is intended for use only when simplifying an NMG prior to output in another format (such as polygons). It will unbreak edges where nmg_unbreak_edge() will not!!!!!

Eliminate the vertex between this edgeuse and the next edge, on all edgeuses radial to this edgeuse's edge. The edge geometry must be shared, and all uses of the vertex, in the same shell, to be disposed of must originate from this edge pair. Also, the "non-B" ends of all edgeuses around e1 and e2 (in this shell) must terminate at either A or B.

eu1 eu2 *----------->*----------->* A.....e1.....B.....e2.....C *<-----------*<-----------* eu1mate eu2mate

If successful, the vertex B, the edge e2, and all the edgeuses in the same shell radial to eu2 (including eu2) will have all been killed. The radial ordering around e1 will not change.

eu1 *------------------------>* A.....e1..................C *<------------------------* eu1mate

No new topology structures are created by this operation.

Returns - 0 OK, edge unbroken <0 failure, nothing changed

Definition at line 4763 of file nmg_mod.c.

References BU_LIST_FOR, BU_LIST_PNEXT_CIRC, bu_log(), edgeuse::e_p, vertexuse::eu_p, edgeuse::eumate_p, edgeuse::g, edgeuse::lseg_p, vertexuse::lu_p, edgeuse::magic_p, vertexuse::magic_p, NMG_CK_EDGE, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, NMG_CK_SHELL, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_find_s_of_eu(), nmg_find_s_of_vu(), loopuse::orientation, OT_BOOLPLACE, s1, vertexuse::up, vertexuse::v_p, vertex::vu_hd, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_eins struct edgeuse eu  ) 
 

N M G _ E I N S

Insert a new (zero length) edge at the begining of (ie, before) an existing edgeuse Perhaps this is what nmg_esplit and nmg_eusplit should have been like?

Before: .--A--> .--eu--> \ >. / <-A'--. <-eu'-.

After:

eu1 eu .--A--> .---> .--eu--> \ / >.< / \ <-A'--. <---. <-eu'--. eu2 eumate

Definition at line 4963 of file nmg_mod.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_INSERT, bu_log(), edgeuse::eumate_p, loopuse::fu_p, edgeuse::l, edgeuse::lu_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_LOOPUSE_MAGIC, nmg_me(), NMG_SHELL_MAGIC, rt_bomb(), edgeuse::s_p, loopuse::s_p, faceuse::s_p, edgeuse::up, loopuse::up, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_join_2loops(), and nmg_join_singvu_loop().

Here is the call graph for this function:

RT_EXPORT void nmg_mv_eu_between_shells struct shell dest,
struct shell src,
struct edgeuse eu
 

Referenced by nmg_js().

RT_EXPORT void nmg_mv_vu_between_shells struct shell dest,
struct shell src,
struct vertexuse vu
 

Referenced by nmg_js().

RT_EXPORT struct model* nmg_find_model const long *  magic_p  ) 
 

Referenced by nmg_2face_plot(), nmg_check_radial(), nmg_class_ray_vs_shell(), nmg_cut_lu_into_coplanar_and_non(), nmg_dup_face(), nmg_dup_shell(), nmg_e_and_v_tabulate(), nmg_edge_g(), nmg_edge_g_cnurb(), nmg_edge_g_cnurb_plinear(), nmg_edge_g_tabulate(), nmg_edge_tabulate(), nmg_edgeuse_on_line_tabulate(), nmg_edgeuse_tabulate(), nmg_eu_radial_check(), nmg_extrude_cleanup(), nmg_extrude_shell(), nmg_face_g(), nmg_face_g_snurb(), nmg_face_lu_plot(), nmg_face_new_g(), nmg_face_plot(), nmg_face_state_transition(), nmg_face_tabulate(), nmg_find_e_nearest_pt2(), nmg_find_edge_between_2fu(), nmg_find_eg_between_2fg(), nmg_has_dangling_faces(), nmg_hollow_shell(), nmg_isect2d_prep(), nmg_isect_edge2p_edge2p(), nmg_isect_eu_eu(), nmg_isect_eu_fu(), nmg_isect_fu_jra(), nmg_isect_shell_self(), nmg_loop_g(), nmg_me(), nmg_meonvu(), nmg_mf(), nmg_ml(), nmg_mlv(), nmg_move_edge_thru_pt(), nmg_mv_shell_to_region(), nmg_pl_2fu(), nmg_pl_comb_fu(), nmg_pl_lu_around_eu(), nmg_plot_lu_around_eu(), nmg_plot_lu_ray(), nmg_shell_a(), nmg_shell_coplanar_face_merge(), nmg_shell_is_void(), nmg_show_broken_classifier_stuff(), nmg_split_loops_into_faces(), nmg_triangulate_fu(), nmg_unbreak_region_edges(), nmg_unglueedge(), nmg_vertex_gv(), nmg_vertex_tabulate(), nmg_vertexuse_a_cnurb(), nmg_vertexuse_normal_tabulate(), and nmg_vertexuse_nv().

RT_EXPORT void nmg_model_bb point_t  min_pt,
point_t  max_pt,
const struct model m
 

RT_EXPORT int nmg_shell_is_empty const struct shell s  ) 
 

Referenced by nmg_demote_eu(), nmg_do_bool(), nmg_keu(), nmg_kfu(), nmg_klu(), nmg_kvu(), and nmg_simplify_shell().

RT_EXPORT struct shell* nmg_find_s_of_lu const struct loopuse lu  ) 
 

N M G _ F I N D _ S _ O F _ L U

return parent shell for loopuse formerly nmg_lups().

Definition at line 189 of file nmg_info.c.

References loopuse::fu_p, loopuse::magic_p, NMG_FACEUSE_MAGIC, NMG_SHELL_MAGIC, rt_bomb(), loopuse::s_p, faceuse::s_p, and loopuse::up.

Referenced by nmg_demote_lu(), nmg_find_s_of_eu(), nmg_find_s_of_vu(), and nmg_find_v_in_shell().

Here is the call graph for this function:

RT_EXPORT struct shell* nmg_find_s_of_eu const struct edgeuse eu  ) 
 

N M G _ F I N D _ S _ O F _ E U

return parent shell of edgeuse formerly nmg_eups().

Definition at line 204 of file nmg_info.c.

References edgeuse::lu_p, edgeuse::magic_p, nmg_find_s_of_lu(), NMG_LOOPUSE_MAGIC, NMG_SHELL_MAGIC, rt_bomb(), edgeuse::s_p, and edgeuse::up.

Referenced by nmg_assess_vu(), nmg_check_radial(), nmg_decompose_shell(), nmg_ebreaker(), nmg_find_e(), nmg_find_s_of_vu(), nmg_find_top_face_in_dir(), nmg_find_v_in_shell(), nmg_findeu(), nmg_next_radial_eu(), nmg_prev_radial_eu(), nmg_radial_build_list(), nmg_radial_face_count(), nmg_radial_face_edge_in_shell(), nmg_radial_join_eu_NEW(), nmg_unbreak_edge(), and nmg_unbreak_shell_edge_unsafe().

Here is the call graph for this function:

RT_EXPORT struct shell* nmg_find_s_of_vu const struct vertexuse vu  ) 
 

N M G _ F I N D _ S _ O F _ V U

Return parent shell of vertexuse

Definition at line 219 of file nmg_info.c.

References vertexuse::eu_p, vertexuse::lu_p, vertexuse::magic_p, NMG_CK_VERTEXUSE, nmg_find_s_of_eu(), nmg_find_s_of_lu(), NMG_LOOPUSE_MAGIC, and vertexuse::up.

Referenced by nmg_enlist_one_vu(), nmg_enlist_vu(), nmg_follow_free_edges_to_vertex(), nmg_mk_model_from_region(), nmg_simplify_shell_edges(), and nmg_unbreak_shell_edge_unsafe().

Here is the call graph for this function:

RT_EXPORT struct faceuse* nmg_find_fu_of_eu const struct edgeuse eu  ) 
 

N M G _ F I N D _ F U _ O F _ E U

return a pointer to the faceuse that is the super-parent of this edgeuse. If edgeuse has no grandparent faceuse, return NULL.

Definition at line 241 of file nmg_info.c.

References loopuse::fu_p, edgeuse::lu_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_FACEUSE_MAGIC, NMG_LOOPUSE_MAGIC, NULL, edgeuse::up, and loopuse::up.

Referenced by nmg_check_radial(), nmg_check_radial_angles(), nmg_cnurb_to_vlist(), nmg_connect_same_fu_orients(), nmg_decompose_shell(), nmg_edge_collapse(), nmg_edge_g_cnurb(), nmg_edge_g_cnurb_plinear(), nmg_eu_2s_orient_bad(), nmg_eu_radial_check(), nmg_faces_are_radial(), nmg_find_eu_in_face(), nmg_find_ot_same_eu_of_e(), nmg_findeu(), nmg_insure_radial_list_is_increasing(), nmg_isect_eu_fu(), nmg_move_edge_thru_pt(), nmg_next_radial_eu(), nmg_prev_radial_eu(), nmg_propagate_normals(), nmg_radial_build_list(), nmg_radial_exchange_marked(), nmg_radial_face_count(), nmg_radial_implement_decisions(), nmg_radial_join_eu(), nmg_radial_join_eu_NEW(), nmg_to_arb(), and pick_eu().

RT_EXPORT struct faceuse* nmg_find_fu_of_lu const struct loopuse lu  ) 
 

N M G _ F I N D _ F U _ O F _ L U

Definition at line 256 of file nmg_info.c.

References bu_log(), loopuse::fu_p, loopuse::magic_p, NMG_FACEUSE_MAGIC, NMG_SHELL_MAGIC, NULL, rt_bomb(), and loopuse::up.

Referenced by nmg_find_fu_of_vu().

Here is the call graph for this function:

RT_EXPORT struct faceuse* nmg_find_fu_of_vu const struct vertexuse vu  ) 
 

N M G _ F I N D _ F U _ O F _ V U

return a pointer to the parent faceuse of the vertexuse or a null pointer if vu is not a child of a faceuse.

Definition at line 278 of file nmg_info.c.

References bu_log(), DEBUG_BASIC, vertexuse::eu_p, vertexuse::lu_p, edgeuse::lu_p, vertexuse::magic_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_find_fu_of_lu(), NMG_LOOPUSE_MAGIC, NMG_SHELL_MAGIC, NULL, rt_bomb(), vertexuse::up, edgeuse::up, and loopuse::up.

Referenced by nmg_ck_v_in_2fus(), nmg_ck_vert_on_fus(), nmg_ck_vu_ptbl(), nmg_enlist_vu(), nmg_find_isect_faces(), and nmg_kill_cracks_at_vertex().

Here is the call graph for this function:

RT_EXPORT struct faceuse* nmg_find_fu_with_fg_in_s const struct shell s1,
const struct faceuse fu2
 

N M G _ F I N D _ F U _ W I T H _ F G _ I N _ S

Find a faceuse in shell s1 that shares the face_g_plane structure with fu2 and has the same orientation. This may be an OT_OPPOSITE faceuse, depending on orientation. Returns NULL if no such faceuse can be found in s1. fu2 may be in s1, or in some other shell.

Definition at line 321 of file nmg_info.c.

References BU_LIST_FOR, faceuse::f_p, face::flip, faceuse::fumate_p, face::g, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, NMG_CK_SHELL, NULL, faceuse::orientation, OT_SAME, face::plane_p, and s1.

Referenced by nmg_js().

RT_EXPORT double nmg_measure_fu_angle const struct edgeuse eu,
const vect_t  xvec,
const vect_t  yvec,
const vect_t  zvec
 

Referenced by nmg_check_radial_angles(), nmg_pr_one_eu_vecs(), nmg_radial_build_list(), and nmg_radial_join_eu().

RT_EXPORT struct loopuse* nmg_find_lu_of_vu const struct vertexuse vu  ) 
 

N M G _ F I N D _ L U _ O F _ V U

Definition at line 399 of file nmg_info.c.

References vertexuse::eu_p, vertexuse::lu_p, edgeuse::lu_p, vertexuse::magic_p, edgeuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEXUSE, NMG_LOOPUSE_MAGIC, NMG_SHELL_MAGIC, NULL, vertexuse::up, and edgeuse::up.

Referenced by nmg_assess_vu(), nmg_face_coincident_vu_sort(), nmg_face_state_transition(), nmg_fcut_face(), nmg_split_touchingloops(), and nmg_vu_angle_measure().

RT_EXPORT int nmg_loop_is_a_crack const struct loopuse lu  ) 
 

N M G _ L O O P _ I S _ A _ C R A C K

A "crack" is defined as a loop which has no area.

Example of a non-trivial "crack" loop:

<---- eu4 ----- C ############### D | # ^ ---- eu3 ---> | # | eu5 # eu2 | # | <--- eu6 --V # | A ############ B --- eu1 ---->

Returns - 0 Loop is not a "crack" !0 Loop *is* a "crack"

Definition at line 441 of file nmg_info.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), DEBUG_BASIC, loopuse::down_hd, vertexuse::eu_p, edgeuse::eumate_p, loopuse::fu_p, edgeuse::lu_p, loopuse::magic_p, vertexuse::magic_p, edgeuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, NMG_LOOPUSE_MAGIC, loopuse::up, vertexuse::up, edgeuse::up, vertexuse::v_p, vertex::vu_hd, and edgeuse::vu_p.

Referenced by nmg_face_state_transition(), nmg_get_interior_pt(), nmg_is_crack_outie(), nmg_loop_plane_area(), and nmg_loop_plane_newell().

Here is the call graph for this function:

RT_EXPORT int nmg_loop_is_ccw const struct loopuse lu,
const plane_t  norm,
const struct bn_tol tol
 

RT_EXPORT const struct vertexuse* nmg_loop_touches_self const struct loopuse lu  ) 
 

N M G _ L O O P _ T O U C H E S _ S E L F

Search through all the vertices in a loop. If there are two distinct uses of one vertex in the loop, return true. This is useful for detecting "accordian pleats" unexpectedly showing up in a loop. Derrived from nmg_split_touchingloops().

Returns - vu Yes, the loop touches itself at least once, at this vu. 0 No, the loop does not touch itself.

Definition at line 602 of file nmg_info.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, loopuse::down_hd, vertexuse::eu_p, edgeuse::lu_p, vertexuse::magic_p, edgeuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, NMG_LOOPUSE_MAGIC, vertexuse::up, edgeuse::up, vertexuse::v_p, vertex::vu_hd, and edgeuse::vu_p.

Referenced by nmg_extrude_cleanup(), and nmg_fu_touchingloops().

RT_EXPORT int nmg_2lu_identical const struct edgeuse eu1,
const struct edgeuse eu2
 

N M G _ 2 L U _ I D E N T I C A L

Given two edgeuses in different faces that share a common edge, determine if they are from identical loops or not.

Note that two identical loops in an anti-shared pair of faces (faces with opposite orientations) will also have opposite orientations.

Returns - 0 Loops not identical 1 Loops identical, faces are ON-shared 2 Loops identical, faces are ON-anti-shared 3 Loops identical, at least one is a wire loop.

Definition at line 1290 of file nmg_class.c.

References BU_LIST_PNEXT_CIRC, bu_log(), DEBUG_BASIC, edgeuse::e_p, edgeuse::eumate_p, faceuse::f_p, face::flip, loopuse::fu_p, faceuse::fumate_p, face::g, edgeuse::l, edgeuse::lu_p, loopuse::magic_p, face::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_FACEUSE_MAGIC, NMG_GET_FU_NORMAL, nmg_pr_fg(), nmg_pr_fu_briefly(), faceuse::orientation, face::plane_p, rt_bomb(), edgeuse::up, loopuse::up, vertexuse::v_p, VDOT, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT struct edgeuse * nmg_find_matching_eu_in_s const struct edgeuse eu1,
const struct shell s2
 

N M G _ F I N D _ M A T C H I N G _ E U _ I N _ S

If shell s2 has an edge that connects the same vertices as eu1 connects, return the matching edgeuse in s2. This routine works properly regardless of whether eu1 is in s2 or not. A convenient wrapper for nmg_findeu().

Definition at line 668 of file nmg_info.c.

References BU_LIST_PNEXT_CIRC, NMG_CK_EDGEUSE, NMG_CK_SHELL, NMG_CK_VERTEXUSE, nmg_find_v_in_shell(), nmg_findeu(), NULL, s2, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_isect_face3p_shell_int().

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_findeu const struct vertex v1,
const struct vertex v2,
const struct shell s,
const struct edgeuse eup,
int  dangling_only
 

N M G _ F I N D E U

Find an edgeuse in a shell between a given pair of vertex structs.

If a given shell "s" is specified, then only edgeuses in that shell will be considered, otherwise all edgeuses in the model are fair game.

If a particular edgeuse "eup" is specified, then that edgeuse and it's mate will not be returned as a match.

If "dangling_only" is true, then an edgeuse will be matched only if there are no other edgeuses on the edge, i.e. the radial edgeuse is the same as the mate edgeuse.

Returns - edgeuse* Edgeuse which matches the criteria NULL Unable to find matching edgeuse

Definition at line 711 of file nmg_info.c.

References BU_LIST_FOR, bu_log(), DEBUG_BASIC, DEBUG_FINDEU, vertexuse::eu_p, edgeuse::eumate_p, loopuse::fu_p, edgeuse::lu_p, vertexuse::magic_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_SHELL, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, nmg_find_fu_of_eu(), nmg_find_s_of_eu(), NMG_LOOPUSE_MAGIC, NULL, faceuse::orientation, OT_SAME, edgeuse::radial_p, rt_bomb(), edgeuse::s_p, vertexuse::up, edgeuse::up, loopuse::up, vertexuse::v_p, vertex::vu_hd, and edgeuse::vu_p.

Referenced by nmg_face_state_transition(), nmg_find_matching_eu_in_s(), nmg_glue_face_in_shell(), and nmg_repair_v_near_v().

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_find_eu_in_face const struct vertex v1,
const struct vertex v2,
const struct faceuse fu,
const struct edgeuse eup,
int  dangling_only
 

N M G _ F I N D _ E U _ I N _ F A C E

An analog to nmg_findeu(), only restricted to searching a faceuse, rather than to a whole shell.

Definition at line 807 of file nmg_info.c.

References BU_LIST_FOR, bu_log(), DEBUG_BASIC, DEBUG_FINDEU, vertexuse::eu_p, edgeuse::eumate_p, loopuse::fu_p, edgeuse::lu_p, vertexuse::magic_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, nmg_find_fu_of_eu(), NMG_LOOPUSE_MAGIC, NULL, faceuse::orientation, OT_SAME, edgeuse::radial_p, rt_bomb(), vertexuse::up, edgeuse::up, loopuse::up, vertexuse::v_p, vertex::vu_hd, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_find_e const struct vertex v1,
const struct vertex v2,
const struct shell s,
const struct edge ep
 

N M G _ F I N D _ E

Find an edge between a given pair of vertices.

If a given shell "s" is specified, then only edges in that shell will be considered, otherwise all edges in the model are fair game.

If a particular edge "ep" is specified, then that edge will not be returned as a match.

Returns - edgeuse* Edgeuse of an edge which matches the criteria NULL Unable to find matching edge

Definition at line 912 of file nmg_info.c.

References BU_LIST_FOR, bu_log(), DEBUG_BASIC, DEBUG_FINDEU, edgeuse::e_p, vertexuse::eu_p, edgeuse::eumate_p, loopuse::fu_p, edgeuse::lu_p, vertexuse::magic_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_SHELL, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, nmg_find_s_of_eu(), NMG_LOOPUSE_MAGIC, NULL, faceuse::orientation, OT_SAME, rt_bomb(), edgeuse::s_p, vertexuse::up, edgeuse::up, loopuse::up, vertexuse::v_p, vertex::vu_hd, and edgeuse::vu_p.

Referenced by nmg_ebreaker().

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_find_eu_of_vu const struct vertexuse vu  ) 
 

N M G _ F I N D _ E U _ O F _ V U

Return a pointer to the edgeuse which is the parent of this vertexuse.

A simple helper routine, which replaces the amazingly bad sequence of: nmg_find_eu_with_vu_in_lu( nmg_find_lu_of_vu(vu), vu ) that was being used in several places.

Definition at line 987 of file nmg_info.c.

References vertexuse::eu_p, vertexuse::magic_p, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, NULL, and vertexuse::up.

Referenced by nmg_face_state_transition().

RT_EXPORT struct edgeuse* nmg_find_eu_with_vu_in_lu const struct loopuse lu,
const struct vertexuse vu
 

N M G _ F I N D _ E U _ W I T H _ V U _ I N _ L U

Find an edgeuse starting at a given vertexuse within a loopuse.

Definition at line 1001 of file nmg_info.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, loopuse::down_hd, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, NULL, rt_bomb(), and edgeuse::vu_p.

Referenced by nmg_assess_vu(), and nmg_vu_angle_measure().

Here is the call graph for this function:

RT_EXPORT const struct edgeuse* nmg_faceradial const struct edgeuse eu  ) 
 

N M G _ F A C E R A D I A L

Looking radially around an edge, find another edge in the same face as the current edge. (this could be the mate to the current edge)

Definition at line 1024 of file nmg_info.c.

References edgeuse::eumate_p, faceuse::f_p, loopuse::fu_p, edgeuse::lu_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_FACEUSE_MAGIC, NMG_LOOPUSE_MAGIC, edgeuse::radial_p, edgeuse::up, and loopuse::up.

RT_EXPORT const struct edgeuse* nmg_radial_face_edge_in_shell const struct edgeuse eu  ) 
 

N M G _ R A D I A L _ F A C E _ E D G E _ I N _ S H E L L

looking radially around an edge, find another edge which is a part of a face in the same shell

Definition at line 1052 of file nmg_info.c.

References edgeuse::eumate_p, loopuse::fu_p, edgeuse::lu_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_FACEUSE_MAGIC, nmg_find_s_of_eu(), NMG_LOOPUSE_MAGIC, edgeuse::radial_p, faceuse::s_p, edgeuse::up, and loopuse::up.

Referenced by nmg_dangling_face().

Here is the call graph for this function:

RT_EXPORT const struct edgeuse* nmg_find_edge_between_2fu const struct faceuse fu1,
const struct faceuse fu2,
const struct bn_tol tol
 

N M G _ F I N D _ E D G E _ B E T W E E N _ 2 F U

Perform a topology search to determine if two faces (specified by their faceuses) share an edge in common. If so, return an edgeuse in fu1 of that edge.

If there are multiple edgeuses in common, ensure that they all refer to the same edge_g_lseg geometry structure. The intersection of two planes (non-coplanar) must be a single line.

Calling this routine when the two faces share face geometry and have more than one edge in common gives a NULL return, as there is no unique answer.

NULL is also returned if no common edge could be found.

Definition at line 1094 of file nmg_info.c.

References BN_CK_TOL, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), DEBUG_BASIC, loopuse::down_hd, edgeuse::e_p, edgeuse::eumate_p, faceuse::f_p, loopuse::fu_p, edgeuse::g, edgeuse::l, edgeuse::lseg_p, faceuse::lu_hd, edgeuse::lu_p, bu_list::magic, edgeuse::magic_p, loopuse::magic_p, nmg_2edgeuse_g_coincident(), NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_FACEUSE_MAGIC, nmg_find_model(), nmg_jeg(), NMG_LOOPUSE_MAGIC, nmg_model_fuse(), nmg_pr_eg(), nmg_pr_eu_endpoints(), NMG_VERTEXUSE_MAGIC, NULL, edgeuse::radial_p, rt_bomb(), edgeuse::up, and loopuse::up.

Here is the call graph for this function:

RT_EXPORT struct edge* nmg_find_e_nearest_pt2 long *  magic_p,
const point_t  pt2,
const mat_t  mat,
const struct bn_tol tol
 

RT_EXPORT void nmg_eu_2vecs_perp vect_t  xvec,
vect_t  yvec,
vect_t  zvec,
const struct edgeuse eu,
const struct bn_tol tol
 

Referenced by nmg_eu_radial_check(), nmg_pr_fu_around_eu(), nmg_radial_join_eu(), nmg_radial_join_eu_NEW(), nmg_s_radial_harmonize(), and nmg_vlblock_around_eu().

RT_EXPORT int nmg_find_eu_leftvec vect_t  left,
const struct edgeuse eu
 

Referenced by nmg_check_radial_angles(), nmg_class_pt_euvu(), nmg_classify_lu_lu(), nmg_measure_fu_angle(), nmg_vlblock_euleft(), and pick_eu().

RT_EXPORT int nmg_find_eu_left_non_unit vect_t  left,
const struct edgeuse eu
 

RT_EXPORT struct edgeuse* nmg_find_ot_same_eu_of_e const struct edge e  ) 
 

N M G _ F I N D _ O T _ S A M E _ E U _ O F _ E

If there is an edgeuse of an OT_SAME faceuse on this edge, return it. Only return a wire edgeuse if that is all there is. Useful for selecting a "good" edgeuse to pass to nmg_eu_2vecs_perp().

Definition at line 1496 of file nmg_info.c.

References edge::eu_p, edgeuse::eumate_p, NMG_CK_EDGE, nmg_find_fu_of_eu(), faceuse::orientation, OT_SAME, and edgeuse::radial_p.

Referenced by nmg_radial_join_eu_NEW(), nmg_s_radial_check(), and nmg_s_radial_harmonize().

Here is the call graph for this function:

RT_EXPORT struct vertexuse* nmg_find_v_in_face const struct vertex v,
const struct faceuse fu
 

N M G _ F I N D _ V _ I N _ F A C E

Perform a topological search to determine if the given vertex is contained in the given faceuse. If it is, return a pointer to the vertexuse which was found in the faceuse.

Returns NULL if not found.

Definition at line 1532 of file nmg_info.c.

References BU_LIST_FOR, vertexuse::eu_p, loopuse::fu_p, edgeuse::lu_p, vertexuse::lu_p, vertexuse::magic_p, edgeuse::magic_p, loopuse::magic_p, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, NMG_LOOPUSE_MAGIC, NULL, vertexuse::up, edgeuse::up, loopuse::up, and vertex::vu_hd.

Referenced by nmg_is_vertex_on_inter(), nmg_isect_eu_fu(), and nmg_make_dualvu().

RT_EXPORT struct vertexuse* nmg_find_v_in_shell const struct vertex v,
const struct shell s,
int  edges_only
 

N M G _ F I N D _ V _ I N _ S H E L L

Search shell "s" for a vertexuse that refers to vertex "v". For efficiency, the search is done on the uses of "v".

If "edges_only" is set, only a vertexuse from an edgeuse will be returned, otherwise, vu's from self-loops and lone-shell-vu's are also candidates.

Definition at line 1570 of file nmg_info.c.

References BU_LIST_FOR, vertexuse::eu_p, vertexuse::lu_p, vertexuse::magic_p, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_find_s_of_eu(), nmg_find_s_of_lu(), NMG_LOOPUSE_MAGIC, NMG_SHELL_MAGIC, NULL, rt_bomb(), vertexuse::s_p, vertexuse::up, and vertex::vu_hd.

Referenced by nmg_enlist_vu(), nmg_find_matching_eu_in_s(), and nmg_kill_non_common_cracks().

Here is the call graph for this function:

RT_EXPORT struct vertexuse* nmg_find_pt_in_lu const struct loopuse lu,
const point_t  pt,
const struct bn_tol tol
 

Referenced by nmg_find_pt_in_face(), and nmg_find_pt_in_shell().

RT_EXPORT struct vertexuse* nmg_find_pt_in_face const struct faceuse fu,
const point_t  pt,
const struct bn_tol tol
 

Referenced by nmg_find_pt_in_shell().

RT_EXPORT struct vertex* nmg_find_pt_in_shell const struct shell s,
const point_t  pt,
const struct bn_tol tol
 

Referenced by nmg_break_crossed_loops(), nmg_find_pt_in_model(), and rt_pg_tess().

RT_EXPORT struct vertex* nmg_find_pt_in_model const struct model m,
const point_t  pt,
const struct bn_tol tol
 

Referenced by nmg_isect_edge2p_edge2p(), nmg_isect_eu_eu(), nmg_isect_eu_fu(), and nmg_isect_line2_edge2p().

RT_EXPORT int nmg_is_vertex_in_edgelist const struct vertex v,
const struct bu_list hd
 

Referenced by nmg_is_vertex_in_looplist(), and nmg_rm_redundancies().

RT_EXPORT int nmg_is_vertex_in_looplist const struct vertex v,
const struct bu_list hd,
int  singletons
 

Referenced by nmg_is_vertex_in_facelist(), and nmg_rm_redundancies().

RT_EXPORT struct vertexuse* nmg_is_vertex_in_face const struct vertex v,
const struct face f
 

N M G _ I S _ V E R T E X _ I N _ F A C E

Returns - vu One use of vertex 'v' in face 'f'. NULL If there are no uses of 'v' in 'f'.

Definition at line 1858 of file nmg_info.c.

References BU_LIST_FOR, vertexuse::eu_p, faceuse::f_p, loopuse::fu_p, edgeuse::lu_p, vertexuse::magic_p, loopuse::magic_p, NMG_CK_FACE, NMG_CK_VERTEX, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, NMG_LOOPUSE_MAGIC, NULL, vertexuse::up, edgeuse::up, loopuse::up, and vertex::vu_hd.

Referenced by nmg_is_common_bigloop().

RT_EXPORT int nmg_is_vertex_a_selfloop_in_shell const struct vertex v,
const struct shell s
 

N M G _ I S _ V E R T E X _ A _ S E L F L O O P _ I N _ S H E L L

Check to see if a given vertex is used within a shell by a wire loopuse which is a loop of a single vertex. The search could either be by the shell lu_hd, or the vu_hd.

Returns - 0 vertex is not part of that kind of loop in the shell. 1 vertex is part of a selfloop in the given shell.

Definition at line 1893 of file nmg_info.c.

References BU_LIST_FOR, vertexuse::lu_p, vertexuse::magic_p, loopuse::magic_p, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_LOOPUSE_MAGIC, NMG_SHELL_MAGIC, loopuse::s_p, vertexuse::up, loopuse::up, and vertex::vu_hd.

Referenced by nmg_demote_eu().

RT_EXPORT int nmg_is_vertex_in_facelist const struct vertex v,
const struct bu_list hd
 

Referenced by nmg_rm_redundancies().

RT_EXPORT int nmg_is_edge_in_edgelist const struct edge e,
const struct bu_list hd
 

N M G _ I S _ E D G E _ I N _ E D G E L I S T

Returns - 1 If found 0 If not found

Definition at line 1944 of file nmg_info.c.

References BU_LIST_FOR, NMG_CK_EDGE, and NMG_CK_EDGEUSE.

Referenced by nmg_is_edge_in_looplist().

RT_EXPORT int nmg_is_edge_in_looplist const struct edge e,
const struct bu_list hd
 

N M G _ I S _ E D G E _ I N _ L O O P L I S T

Returns - 1 If found 0 If not found

Definition at line 1965 of file nmg_info.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, NMG_CK_EDGE, NMG_CK_LOOPUSE, NMG_EDGEUSE_MAGIC, nmg_is_edge_in_edgelist(), NMG_VERTEXUSE_MAGIC, and rt_bomb().

Referenced by nmg_is_edge_in_facelist(), and nmg_rm_redundancies().

Here is the call graph for this function:

RT_EXPORT int nmg_is_edge_in_facelist const struct edge e,
const struct bu_list hd
 

N M G _ I S _ E D G E _ I N _ F A C E L I S T

Returns - 1 If found 0 If not found

Definition at line 1995 of file nmg_info.c.

References BU_LIST_FOR, NMG_CK_EDGE, NMG_CK_FACEUSE, and nmg_is_edge_in_looplist().

Referenced by nmg_rm_redundancies().

Here is the call graph for this function:

RT_EXPORT int nmg_is_loop_in_facelist const struct loop l,
const struct bu_list fu_hd
 

N M G _ I S _ L O O P _ I N _ F A C E L I S T

Returns - 1 If found 0 If not found

Definition at line 2016 of file nmg_info.c.

References BU_LIST_FOR, loopuse::l, loopuse::l_p, NMG_CK_FACEUSE, NMG_CK_LOOP, and NMG_CK_LOOPUSE.

Referenced by nmg_rm_redundancies().

RT_EXPORT void nmg_vertex_tabulate struct bu_ptbl tab,
const long *  magic_p
 

Referenced by nmg_bot(), nmg_break_edges(), nmg_calc_face_plane(), nmg_classify_s_vs_s(), nmg_extrude_shell(), nmg_faces_can_be_intersected(), nmg_isect_fu_jra(), nmg_isect_two_generic_faces(), nmg_mirror_model(), nmg_mk_model_from_region(), nmg_model_vertex_fuse(), nmg_region_v_unique(), and rt_nmg_tclget().

RT_EXPORT void nmg_vertexuse_normal_tabulate struct bu_ptbl tab,
const long *  magic_p
 

RT_EXPORT void nmg_edgeuse_tabulate struct bu_ptbl tab,
const long *  magic_p
 

Referenced by nmg_break_all_es_on_v(), and nmg_find_zero_length_edges().

RT_EXPORT void nmg_edge_tabulate struct bu_ptbl tab,
const long *  magic_p
 

Referenced by Eplot(), nmg_break_edges(), nmg_check_radial_angles(), nmg_edge_collapse(), nmg_mark_edges_real(), nmg_model_edge_fuse(), nmg_s_radial_check(), and nmg_s_radial_harmonize().

RT_EXPORT void nmg_edge_g_tabulate struct bu_ptbl tab,
const long *  magic_p
 

Referenced by nmg_ck_geometry(), nmg_isect_line2_face2pNEW(), and nmg_model_edge_g_fuse().

RT_EXPORT void nmg_face_tabulate struct bu_ptbl tab,
const long *  magic_p
 

Referenced by nmg_bot(), and nmg_model_face_fuse().

RT_EXPORT void nmg_edgeuse_with_eg_tabulate struct bu_ptbl tab,
const struct edge_g_lseg eg
 

N M G _ E D G E U S E _ W I T H _ E G _ T A B U L A T E

Build an bu_ptbl list which cites every edgeuse pointer that uses edge geometry "eg".

Definition at line 2375 of file nmg_info.c.

References BU_LIST_FOR, BU_LIST_MAIN_PTR, bu_ptbl_init(), bu_ptbl_ins_unique(), edge_g_lseg::eu_hd2, edgeuse::g, edgeuse::l2, edgeuse::lseg_p, NMG_CK_EDGE_G_EITHER, NMG_CK_EDGEUSE, NMG_CKMAG, NMG_EDGEUSE2_MAGIC, rt_bomb(), and void().

Referenced by nmg_break_eg_on_v().

Here is the call graph for this function:

RT_EXPORT void nmg_edgeuse_on_line_tabulate struct bu_ptbl tab,
const long *  magic_p,
const point_t  pt,
const vect_t  dir,
const struct bn_tol tol
 

Referenced by nmg_find_eg_on_line().

RT_EXPORT void nmg_e_and_v_tabulate struct bu_ptbl eutab,
struct bu_ptbl vtab,
const long *  magic_p
 

Referenced by nmg_model_break_e_on_v().

RT_EXPORT int nmg_2edgeuse_g_coincident const struct edgeuse eu1,
const struct edgeuse eu2,
const struct bn_tol tol
 

N M G _ 2 E D G E U S E _ G _ C O I N C I D E N T

Given two edgeuses, determine if they share the same edge geometry, either topologically, or within tolerance.

Returns - 0 two edge geometries are not coincident 1 edges geometries are everywhere coincident. (For linear edge_g_lseg, the 2 are the same line, within tol.)

Definition at line 2589 of file nmg_info.c.

References bn_2line3_colinear(), BN_CK_TOL, bn_distsq_line3_pt3(), bu_log(), vertex_g::coord, bn_tol::dist_sq, edge_g_lseg::e_dir, edge_g_lseg::e_pt, edgeuse::eumate_p, edgeuse::g, edge_g_lseg::l, edgeuse::lseg_p, bu_list::magic, MAGNITUDE, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, nmg_pr_eg(), vertexuse::v_p, VDOT, vertex::vg_p, and edgeuse::vu_p.

Referenced by nmg_find_edge_between_2fu(), nmg_find_eg_between_2fg(), and nmg_model_edge_g_fuse().

Here is the call graph for this function:

RT_EXPORT void nmg_translate_face struct faceuse fu,
const vect_t  Vec,
const struct bn_tol tol
 

Referenced by nmg_extrude_face().

RT_EXPORT int nmg_extrude_face struct faceuse fu,
const vect_t  Vec,
const struct bn_tol tol
 

RT_EXPORT struct vertexuse* nmg_find_vertex_in_lu const struct vertex v,
const struct loopuse lu
 

N M G _ F I N D _ V E R T E X _ I N _ L U

find a use of vertex v in loopuse lu

Definition at line 291 of file nmg_extrude.c.

References BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, loopuse::down_hd, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_VERTEXUSE_MAGIC, NULL, and vertexuse::v_p.

Referenced by nmg_classify_lu_lu(), nmg_fix_overlapping_loops(), and nmg_kill_anti_loops().

RT_EXPORT void nmg_fix_overlapping_loops struct shell s,
const struct bn_tol tol
 

N M G _ F I X _ O V E R L A P P I N G _ L O O P S

Looks at each faceuse in the shell and checks if loopuses in that faceuse overlap each other. This code can only handle faceuses that have at most one OT_SAME loopuse and one OT_OPPOSITE loopuse, so nmg_split_loops_into_faces is called to simplify the faceuses.

Overlapping OT_SAME and OT_OPPOSITE loops are broken into some number of OT_SAME loopuses. An edgeuse (from the OT_SAME loopuse) departing from a point where the loops intersect and outside the OT_OPPOSITE loopuse is found as a starting point. Edgeuses from this loopuse are moved to a new loopuse until another intersect point is encountered. At that point, another loop is started using the next edgeuse and the current loopuse is continued by following the other loopuse. this is continued until the original edgeuse is encountered.

If overlapping loops are found, new loopsuses are created and the original loopuses are killed

Definition at line 452 of file nmg_extrude.c.

References bn_isect_lseg3_lseg3(), bu_free(), BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_INSERT, BU_LIST_IS_HEAD, BU_LIST_PNEXT, bu_log(), BU_PTBL_END, bu_ptbl_free(), BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_reset(), vertex_g::coord, DEBUG_BASIC, loopuse::down_hd, edgeuse::eumate_p, shell::fu_hd, shell::l, loopuse::l, faceuse::l, faceuse::lu_hd, loopuse::lumate_p, bu_list::magic, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_CK_VERTEX, NMG_CLASS_AinB, NMG_CLASS_AoutB, nmg_classify_pt_loop(), NMG_EDGEUSE_MAGIC, nmg_esplit(), nmg_find_vertex_in_lu(), nmg_kvu(), nmg_mlv(), nmg_orientation(), nmg_pr_fu_briefly(), nmg_split_loops_into_faces(), nmg_vertex_gv(), NULL, faceuse::orientation, loopuse::orientation, OT_OPPOSITE, OT_SAME, vertexuse::v_p, VBLEND2, vertex::vg_p, VJOIN1, VSUB2, and edgeuse::vu_p.

Referenced by nmg_extrude_cleanup().

Here is the call graph for this function:

RT_EXPORT void nmg_break_crossed_loops struct shell is,
const struct bn_tol tol
 

N M G _ B R E A K _ C R O S S E D _ L O O P S

Extrusion may create crossed loops within a face. This routine intersects each edge within a loop with every other edge in the loop

Definition at line 753 of file nmg_extrude.c.

References BN_CK_TOL, bn_isect_lseg3_lseg3(), BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, vertex_g::coord, loopuse::down_hd, edgeuse::eumate_p, shell::fu_hd, faceuse::lu_hd, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_EDGEUSE_MAGIC, nmg_esplit(), nmg_find_pt_in_shell(), nmg_vertex_gv(), NULL, faceuse::orientation, OT_SAME, vertexuse::v_p, vertex::vg_p, VJOIN1, VSUB2, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT struct shell* nmg_extrude_cleanup struct shell is,
const int  is_void,
const struct bn_tol tol
 

N M G _ E X T R U D E _ C L E A N U P

Clean up after nmg_extrude_shell. intersects each face with every other face in the shell and makes new face boundaries at the intersections. decomposes the result into seperate shells. where faces have intersected, new shells will be created. These shells are detected and killed

Definition at line 858 of file nmg_extrude.c.

References BN_CK_TOL, BU_LIST_FIRST, BU_LIST_FOR, BU_LIST_LAST, BU_LIST_NON_EMPTY, BU_LIST_NOT_HEAD, BU_LIST_PLAST, BU_LIST_PNEXT, bu_log(), DEBUG_BASIC, shell::fu_hd, shell::l, vertexuse::l, faceuse::lu_hd, loopuse::lumate_p, bu_list::magic, nmg_bad_face_normals(), NMG_CK_SHELL, nmg_decompose_shell(), nmg_find_model(), nmg_fix_overlapping_loops(), nmg_isect_shell_self(), nmg_js(), nmg_kr(), nmg_ks(), nmg_loop_touches_self(), nmg_mrsv(), nmg_mv_shell_to_region(), nmg_rebound(), nmg_shell_is_void(), nmg_split_lu_at_vu(), NULL, faceuse::orientation, loopuse::orientation, OT_SAME, shell::r_p, rt_bomb(), nmgregion::s_hd, and void().

Referenced by nmg_hollow_shell().

Here is the call graph for this function:

RT_EXPORT void nmg_hollow_shell struct shell s,
const fastf_t  thick,
const int  approximate,
const struct bn_tol tol
 

N M G _ H O L L O W _ S H E L L

Hollows out a shell producing a wall thickness of thickness "thick" by creating a new "inner" shell and combining the two shells.

If the original shell is closed, the new shell is simply merged with the original shell. If the original shell is open, then faces are constructed along the free edges of the two shells to make a closed shell.

if approximate is non-zero, new vertex geometry at vertices where more than three faces intersect may be approximated by a point of minimum distance from the intersecting faces.

Definition at line 1046 of file nmg_extrude.c.

References BN_CK_TOL, bu_calloc(), bu_free(), BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins(), DEBUG_BASIC, loopuse::down_hd, faceuse::f_p, flags, face::flip, shell::fu_hd, face::g, faceuse::lu_hd, model::maxindex, face_g_plane::N, nmg_check_closed_shell(), NMG_CK_EDGEUSE, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_REGION, NMG_CK_SHELL, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, nmg_close_shell(), nmg_decompose_shell(), nmg_dup_shell(), nmg_extrude_cleanup(), nmg_find_model(), nmg_in_vert(), NMG_INDEX_GETP, NMG_INDEX_TEST_AND_SET, nmg_invert_shell(), nmg_js(), nmg_ks(), nmg_mrsv(), nmg_mv_shell_to_region(), nmg_open_shells_connect(), nmg_region_a(), nmg_shell_coplanar_face_merge(), nmg_shell_is_void(), nmg_simplify_shell(), NMG_VERTEXUSE_MAGIC, nmg_vmodel(), faceuse::orientation, OT_SAME, face::plane_p, shell::r_p, rt_bomb(), nmgregion::s_hd, vertexuse::v_p, void(), and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT struct shell* nmg_extrude_shell struct shell s,
const fastf_t  dist,
const int  normal_ward,
const int  approximate,
const struct bn_tol tol
 

N M G _ E X T R U D E _ S H E L L

Extrudes a shell (s) by a distance (dist) in the direction of the face normals if normal_ward, or the opposite direction if !normal_ward. The shell (s) is modified by adjusting the plane equations for each face and calculating new vertex geometry. if approximate is non-zero, new vertex geometry, for vertices where more than three faces intersect, will be approximated by a point with minimum distance from the intersecting faces. if approximate is zero, additional faces and/or edges may be added to the shell.

returns: a pointer to the modified shell on success NULL on failure

Definition at line 1265 of file nmg_extrude.c.

References BN_CK_TOL, bu_calloc(), bu_free(), BU_LIST_FIRST, BU_LIST_FOR, bu_log(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins(), bn_tol::dist, faceuse::f_p, flags, face::flip, face::g, shell::l, bu_ptbl::l, bu_list::magic, model::maxindex, face_g_plane::N, NEAR_ZERO, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, NMG_CK_MODEL, NMG_CK_REGION, NMG_CK_SHELL, NMG_CK_VERTEX, nmg_decompose_shell(), nmg_find_model(), nmg_in_vert(), NMG_INDEX_TEST_AND_SET, nmg_ks(), nmg_mrsv(), nmg_mv_shell_to_region(), nmg_region_a(), nmg_shell_is_void(), nmg_vertex_tabulate(), face::plane_p, shell::r_p, s2, nmgregion::s_hd, V3ARGS, and void().

Here is the call graph for this function:

RT_EXPORT char* nmg_orientation int  orientation  ) 
 

N M G _ O R I E N T A T I O N

Convert orientation code to string.

Definition at line 65 of file nmg_pr.c.

References OT_BOOLPLACE, OT_NONE, OT_OPPOSITE, OT_SAME, and OT_UNSPEC.

Referenced by nmg_check_radial(), nmg_ck_lu_orientation(), nmg_class_pt_lu_except(), nmg_dup_face(), nmg_dup_loop(), nmg_edge_collapse(), nmg_face_rs_init(), nmg_face_state_transition(), nmg_faceuse_area(), nmg_fix_overlapping_loops(), nmg_is_crack_outie(), nmg_jl(), nmg_lu_reorient(), nmg_mlv(), nmg_pr_fu_briefly(), nmg_pr_lu_briefly(), nmg_pr_one_eu_vecs(), nmg_pr_radial(), and nmg_split_loops_handler().

RT_EXPORT void nmg_pr_orient int  orientation,
const char *  h
 

N M G _ P R _ O R I E N T

Print the orientation in a nice, english form

Definition at line 88 of file nmg_pr.c.

References bu_log(), OT_BOOLPLACE, OT_NONE, OT_OPPOSITE, OT_SAME, and OT_UNSPEC.

Referenced by nmg_pr_eu(), nmg_pr_fu(), and nmg_pr_lu().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_m const struct model m  ) 
 

N M G _ P R _ M

Definition at line 104 of file nmg_pr.c.

References BU_LIST_FOR, bu_log(), model::magic, model::maxindex, NMG_MODEL_MAGIC, nmg_pr_r(), NULL, and model::r_hd.

Referenced by rt_nmg_print().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_r const struct nmgregion r,
char *  h
 

N M G _ P R _ R

Definition at line 142 of file nmg_pr.c.

References bu_list::back, BU_LIST_FOR, bu_log(), bu_list::forw, nmgregion::l, nmgregion::m_p, bu_list::magic, MKPAD, nmg_pr_s(), NMG_REGION_MAGIC, nmgregion::ra_p, Return, and nmgregion::s_hd.

Referenced by nmg_pr_m().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_sa const struct shell_a sa,
char *  h
 

N M G _ P R _ S A

Definition at line 170 of file nmg_pr.c.

References bu_log(), shell_a::magic, shell_a::max_pt, shell_a::min_pt, MKPAD, NMG_SHELL_A_MAGIC, Return, X, Y, and Z.

Referenced by nmg_pr_s().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_lg const struct loop_g lg,
char *  h
 

N M G _ P R _ L G

Definition at line 192 of file nmg_pr.c.

References bu_log(), loop_g::max_pt, loop_g::min_pt, MKPAD, NMG_CK_LOOP_G, Return, X, Y, and Z.

Referenced by nmg_pr_l().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_fg const long *  magic,
char *  h
 

Referenced by nmg_2lu_identical(), and nmg_pr_f().

RT_EXPORT void nmg_pr_s const struct shell s,
char *  h
 

N M G _ P R _ S

Definition at line 263 of file nmg_pr.c.

References bu_list::back, BU_LIST_FOR, bu_log(), shell::eu_hd, bu_list::forw, shell::fu_hd, shell::l, shell::lu_hd, bu_list::magic, MKPAD, nmg_pr_eu(), nmg_pr_fu(), nmg_pr_lu(), nmg_pr_sa(), nmg_pr_vu(), NMG_SHELL_MAGIC, shell::r_p, Return, shell::sa_p, and shell::vu_p.

Referenced by nmg_ml(), and nmg_pr_r().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_s_briefly const struct shell s,
char *  h
 

N M G _ P R _ S _ B R I E F L Y

Definition at line 305 of file nmg_pr.c.

References BU_LIST_FOR, bu_log(), shell::eu_hd, shell::fu_hd, shell::l, shell::lu_hd, bu_list::magic, MKPAD, nmg_pr_eu_briefly(), nmg_pr_fu_briefly(), nmg_pr_lu_briefly(), nmg_pr_vu_briefly(), NMG_SHELL_MAGIC, Return, and shell::vu_p.

Referenced by nmg_booltree_evaluate().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_f const struct face f,
char *  h
 

N M G _ P R _ F

Definition at line 340 of file nmg_pr.c.

References bu_log(), face::flip, face::fu_p, face::g, face::magic_p, face::max_pt, face::min_pt, MKPAD, NMG_CK_FACE, nmg_pr_fg(), face::plane_p, Return, X, Y, and Z.

Referenced by nmg_pr_fu().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_fu const struct faceuse fu,
char *  h
 

N M G _ P R _ F U

Definition at line 366 of file nmg_pr.c.

References bu_list::back, BU_LIST_FOR, bu_log(), faceuse::f_p, bu_list::forw, faceuse::fumate_p, faceuse::l, faceuse::lu_hd, bu_list::magic, MKPAD, NMG_CK_FACEUSE, NMG_FACEUSE_MAGIC, nmg_pr_f(), nmg_pr_lu(), nmg_pr_orient(), faceuse::orientation, Return, and faceuse::s_p.

Referenced by nmg_face_state_transition(), and nmg_pr_s().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_fu_briefly const struct faceuse fu,
char *  h
 

N M G _ P R _ F U _ B R I E F L Y

Definition at line 400 of file nmg_pr.c.

References BU_LIST_FOR, bu_log(), faceuse::f_p, face::flip, face::g, faceuse::lu_hd, face::magic_p, MKPAD, face_g_plane::N, NMG_CK_FACEUSE, NMG_FACE_G_PLANE_MAGIC, nmg_orientation(), nmg_pr_lu_briefly(), faceuse::orientation, face::plane_p, Return, and V4ARGS.

Referenced by nmg_2lu_identical(), nmg_eu_radial_check(), nmg_fcut_face(), nmg_find_eu_leftvec(), nmg_fix_normals(), nmg_fix_overlapping_loops(), nmg_isect_two_generic_faces(), nmg_make_faces_at_vert(), nmg_model_face_fuse(), nmg_pr_s_briefly(), and nmg_propagate_normals().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_l const struct loop l,
char *  h
 

N M G _ P R _ L

Definition at line 428 of file nmg_pr.c.

References bu_log(), face::l, bu_list::magic, MKPAD, NMG_CK_LOOP, NMG_LOOP_MAGIC, nmg_pr_lg(), and Return.

Referenced by nmg_pr_lu().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_lu const struct loopuse lu,
char *  h
 

N M G _ P R _ L U

Definition at line 450 of file nmg_pr.c.

References bu_list::back, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_PNEXT, bu_log(), loopuse::down_hd, bu_list::forw, loopuse::fu_p, loopuse::l, loopuse::l_p, loopuse::lumate_p, bu_list::magic, loopuse::magic_p, MKPAD, NMG_CK_LOOPUSE, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, nmg_pr_eu(), nmg_pr_l(), nmg_pr_orient(), nmg_pr_vu(), NMG_SHELL_MAGIC, NMG_VERTEXUSE_MAGIC, loopuse::orientation, Return, loopuse::s_p, and loopuse::up.

Referenced by nmg_ck_lueu(), nmg_face_state_transition(), nmg_pr_fu(), and nmg_pr_s().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_lu_briefly const struct loopuse lu,
char *  h
 

N M G _ P R _ L U _ B R I E F L Y

Definition at line 504 of file nmg_pr.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_PNEXT, bu_log(), loopuse::down_hd, loopuse::lumate_p, MKPAD, NMG_CK_LOOPUSE, NMG_EDGEUSE_MAGIC, nmg_orientation(), nmg_pr_eu_briefly(), nmg_pr_vu_briefly(), NMG_VERTEXUSE_MAGIC, loopuse::orientation, and Return.

Referenced by nmg_face_state_transition(), nmg_find_zero_length_edges(), nmg_fu_touchingloops(), nmg_is_crack_outie(), nmg_kill_cracks(), nmg_loop_is_ccw(), nmg_loop_split_at_touching_jaunt(), nmg_pr_fu_briefly(), nmg_pr_s_briefly(), nmg_radial_mark_cracks(), and nmg_veu().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_eg const long *  eg,
char *  h
 

Referenced by nmg_2edgeuse_g_coincident(), nmg_find_edge_between_2fu(), nmg_find_eg_between_2fg(), nmg_pr_eu(), nmg_repair_v_near_v(), and nmg_search_v_eg().

RT_EXPORT void nmg_pr_e const struct edge e,
char *  h
 

N M G _ P R _ E

Definition at line 593 of file nmg_pr.c.

References bu_log(), edge::eu_p, edge::magic, MKPAD, NMG_CK_EDGE, NMG_EDGE_MAGIC, and Return.

Referenced by nmg_pr_eu().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_eu const struct edgeuse eu,
char *  h
 

N M G _ P R _ E U

Definition at line 612 of file nmg_pr.c.

References bu_list::back, bu_log(), edgeuse::e_p, edgeuse::eumate_p, bu_list::forw, edgeuse::g, edgeuse::l, edgeuse::lu_p, edgeuse::magic_p, MKPAD, NMG_CK_EDGEUSE, NMG_LOOPUSE_MAGIC, nmg_pr_e(), nmg_pr_eg(), nmg_pr_orient(), nmg_pr_vu(), NMG_SHELL_MAGIC, edgeuse::orientation, edgeuse::radial_p, Return, edgeuse::s_p, edgeuse::up, and edgeuse::vu_p.

Referenced by nmg_assess_eu(), nmg_ck_face_worthless_edges(), nmg_pr_lu(), nmg_pr_s(), and nmg_search_v_eg().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_eu_briefly const struct edgeuse eu,
char *  h
 

N M G _ P R _ E U _ B R I E F L Y

Definition at line 648 of file nmg_pr.c.

References bu_log(), edgeuse::e_p, edgeuse::g, edgeuse::magic_p, MKPAD, NMG_CK_EDGEUSE, nmg_pr_vu_briefly(), Return, and edgeuse::vu_p.

Referenced by nmg_face_rs_init(), nmg_find_eg_between_2fg(), nmg_k0eu(), nmg_pr_lu_briefly(), and nmg_pr_s_briefly().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_eu_endpoints const struct edgeuse eu,
char *  h
 

N M G _ P R _ E U _ E N D P O I N T S

Definition at line 663 of file nmg_pr.c.

References bu_log(), vertex_g::coord, edgeuse::eumate_p, MKPAD, NMG_CK_EDGEUSE, NMG_CK_VERTEX_G, Return, V3ARGS, vertexuse::v_p, vertex::vg_p, and edgeuse::vu_p.

Referenced by nmg_face_state_transition(), nmg_find_edge_between_2fu(), and nmg_find_eg_between_2fg().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_vg const struct vertex_g vg,
char *  h
 

N M G _ P R _ V G

Definition at line 686 of file nmg_pr.c.

References bu_log(), vertex_g::coord, vertex_g::magic, MKPAD, NMG_CK_VERTEX_G, NMG_VERTEX_G_MAGIC, Return, and V3ARGS.

Referenced by nmg_pr_v().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_v const struct vertex v,
char *  h
 

N M G _ P R _ V

Definition at line 705 of file nmg_pr.c.

References bu_list::back, bu_log(), bu_list::forw, vertex::magic, MKPAD, NMG_CK_VERTEX, nmg_pr_vg(), NMG_VERTEX_MAGIC, Return, vertex::vg_p, and vertex::vu_hd.

Referenced by nmg_pr_vu(), and nmg_region_v_unique().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_vu const struct vertexuse vu,
char *  h
 

N M G _ P R _ V U

Definition at line 732 of file nmg_pr.c.

References vertexuse::a, bu_list::back, bu_log(), vertexuse::cnurb_p, vertexuse::eu_p, bu_list::forw, vertexuse::l, vertexuse::lu_p, bu_list::magic, vertexuse::magic_p, MKPAD, vertexuse_a_plane::N, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, NMG_LOOPUSE_MAGIC, nmg_pr_v(), nmg_pr_vua(), NMG_SHELL_MAGIC, NMG_VERTEXUSE_A_CNURB_MAGIC, NMG_VERTEXUSE_A_PLANE_MAGIC, NMG_VERTEXUSE_MAGIC, vertexuse::plane_p, Return, vertexuse::s_p, vertexuse::up, V3ARGS, and vertexuse::v_p.

Referenced by nmg_face_state_transition(), nmg_pr_eu(), nmg_pr_lu(), and nmg_pr_s().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_vu_briefly const struct vertexuse vu,
char *  h
 

N M G _ P R _ V U _ B R I E F L Y

Definition at line 772 of file nmg_pr.c.

References bu_log(), vertex_g::coord, MKPAD, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, Return, V3ARGS, vertexuse::v_p, and vertex::vg_p.

Referenced by nmg_assess_eu(), nmg_face_cutjoin(), nmg_face_rs_init(), nmg_face_state_transition(), nmg_pr_eu_briefly(), nmg_pr_lu_briefly(), and nmg_pr_s_briefly().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_vua const long *  magic_p,
char *  h
 

Referenced by nmg_pr_vu().

RT_EXPORT void nmg_euprint const char *  str,
const struct edgeuse eu
 

N M G _ E U P R I N T

Definition at line 824 of file nmg_pr.c.

References bu_log(), vertex_g::coord, edgeuse::eumate_p, NMG_CK_EDGEUSE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, vertexuse::v_p, vertex::vg_p, and edgeuse::vu_p.

Referenced by nmg_radial_join_eu(), and nmg_radial_join_eu_NEW().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_ptbl const char *  title,
const struct bu_ptbl tbl,
int  verbose
 

N M G _ P R _ P T B L

Print an bu_ptbl array for inspection.

Definition at line 851 of file nmg_pr.c.

References BU_CK_PTBL, bu_log(), BU_PTBL_BASEADDR, BU_PTBL_LASTADDR, and bu_ptbl::end.

Referenced by nmg_ck_vu_ptbl(), and nmg_radial_join_eu_NEW().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_ptbl_vert_list const char *  str,
const struct bu_ptbl tbl,
const fastf_t mag
 

N M G _ P R _ P T B L _ V E R T _ L I S T

Print a ptbl array as a vertex list.

Definition at line 893 of file nmg_pr.c.

References bu_log(), bu_ptbl::buffer, bu_ptbl::end, vertexuse::l, bu_list::magic, and NMG_VERTEXUSE_MAGIC.

Here is the call graph for this function:

RT_EXPORT void nmg_pr_one_eu_vecs const struct edgeuse eu,
const vect_t  xvec,
const vect_t  yvec,
const vect_t  zvec,
const struct bn_tol tol
 

Referenced by nmg_pr_fu_around_eu_vecs().

RT_EXPORT void nmg_pr_fu_around_eu_vecs const struct edgeuse eu,
const vect_t  xvec,
const vect_t  yvec,
const vect_t  zvec,
const struct bn_tol tol
 

Referenced by nmg_do_radial_join(), nmg_eu_radial_check(), nmg_pr_fu_around_eu(), nmg_radial_implement_decisions(), nmg_radial_join_eu(), nmg_radial_join_eu_NEW(), and nmg_s_radial_harmonize().

RT_EXPORT void nmg_pr_fu_around_eu const struct edgeuse eu,
const struct bn_tol tol
 

N M G _ P R _ F U _ A R O U N D _ E U

A debugging routine to print all the faceuses around a given edge, starting with the given edgeuse. The normal of the first face is considered to be "0 degrees", and the rest are measured from there.

Definition at line 1035 of file nmg_pr.c.

References BN_CK_TOL, bu_log(), edgeuse::eumate_p, edgeuse::g, edgeuse::magic_p, NMG_CK_EDGEUSE, NMG_EDGE_G_CNURB_MAGIC, nmg_eu_2vecs_perp(), nmg_pr_fu_around_eu_vecs(), vertexuse::v_p, VSET, and edgeuse::vu_p.

Referenced by nmg_check_radial(), nmg_dangling_face(), and nmg_find_eg_between_2fg().

Here is the call graph for this function:

RT_EXPORT void nmg_pl_lu_around_eu const struct edgeuse eu  ) 
 

N M G _ P L _ L U _ A R O U N D _ E U

Plot all the loopuses around an edgeuse. Don't bother drawing the loopuse mates.

Definition at line 1065 of file nmg_pr.c.

References bu_calloc(), bu_free(), bu_log(), edgeuse::eumate_p, fp, edgeuse::lu_p, edgeuse::magic_p, NMG_CK_EDGEUSE, nmg_find_model(), NMG_LOOPUSE_MAGIC, nmg_pl_lu(), NULL, num, perror(), edgeuse::radial_p, and edgeuse::up.

Referenced by nmg_find_eg_between_2fg().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_fus_in_fg const long *  fg_magic  ) 
 

Referenced by nmg_find_eg_between_2fg().

RT_EXPORT struct rt_bot_internal* nmg_bot struct shell s,
const struct bn_tol tol
 

N M G _ B O T

Convert an NMG to a BOT solid

Definition at line 11986 of file nmg_misc.c.

References BN_CK_TOL, rt_bot_internal::bot_flags, bu_calloc(), bu_free(), BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), BU_PTBL_GET, BU_PTBL_LEN, loopuse::down_hd, rt_bot_internal::faces, face::fu_p, faceuse::fumate_p, shell::l, faceuse::lu_hd, bu_list::magic, rt_bot_internal::magic, rt_bot_internal::mode, NMG_CK_FACE, NMG_CK_SHELL, NMG_EDGEUSE_MAGIC, nmg_face_tabulate(), nmg_triangulate_shell(), nmg_vertex_tabulate(), NULL, rt_bot_internal::num_faces, rt_bot_internal::num_vertices, rt_bot_internal::orientation, faceuse::orientation, OT_SAME, RT_BOT_CCW, RT_BOT_INTERNAL_MAGIC, RT_BOT_SOLID, rt_bot_internal::vertices, and void().

Referenced by add_solid(), rt_ars_prep(), and wdb_facetize_cmd().

Here is the call graph for this function:

RT_EXPORT int rt_dist_pt3_line3 fastf_t dist,
point_t  pca,
const point_t  a,
const point_t  p,
const vect_t  dir,
const struct bn_tol tol
 

Referenced by nmg_faces_can_be_intersected(), and nmg_simplify_shell_edges().

RT_EXPORT int rt_dist_line3_line3 fastf_t  dist[2],
const point_t  p1,
const point_t  p2,
const vect_t  d1,
const vect_t  d2,
const struct bn_tol tol
 

Referenced by rt_dist_line3_lseg3().

RT_EXPORT int nmg_snurb_calc_lu_uv_orient const struct loopuse lu  ) 
 

N M G _ S N U R B _ C A L C _ L U _ U V _ O R I E N T

Definition at line 68 of file nmg_misc.c.

References vertexuse::a, bu_calloc(), BU_LIST_FIRST_MAGIC, BU_LIST_FOR, edgeuse::cnurb_p, vertexuse::cnurb_p, loopuse::down_hd, faceuse::f_p, loopuse::fu_p, face::g, edgeuse::g, edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, loopuse::magic_p, face::magic_p, edgeuse::magic_p, vertexuse::magic_p, NMG_CK_EDGE_G_CNURB, NMG_CK_EDGEUSE, NMG_CK_FACE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEXUSE, NMG_EDGE_G_CNURB_MAGIC, NMG_EDGEUSE_MAGIC, NMG_FACE_G_SNURB_MAGIC, NMG_FACEUSE_MAGIC, NMG_VERTEXUSE_A_CNURB_MAGIC, edge_g_cnurb::order, vertexuse_a_cnurb::param, edge_g_cnurb::pt_type, rt_bomb(), rt_nurb_c_eval(), RT_NURB_EXTRACT_COORDS, RT_NURB_IS_PT_RATIONAL, loopuse::up, VMOVE, VSCALE, VSETALLN, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT void nmg_snurb_fu_eval const struct faceuse fu,
const fastf_t  u,
const fastf_t  v,
point_t  pt_on_srf
 

Referenced by nmg_snurb_fu_to_vlist().

RT_EXPORT void nmg_snurb_fu_get_norm const struct faceuse fu,
const fastf_t  u,
const fastf_t  v,
vect_t  norm
 

Referenced by nmg_snurb_fu_get_norm_at_vu(), and nmg_snurb_fu_to_vlist().

RT_EXPORT void nmg_snurb_fu_get_norm_at_vu const struct faceuse fu,
const struct vertexuse vu,
vect_t  norm
 

Referenced by nmg_find_top_face_in_dir().

RT_EXPORT void nmg_find_zero_length_edges const struct model m  ) 
 

Definition at line 277 of file nmg_misc.c.

References bu_log(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), edgeuse::eumate_p, edgeuse::lu_p, model::magic, edgeuse::magic_p, NMG_CK_EDGEUSE, nmg_edgeuse_tabulate(), NMG_LOOPUSE_MAGIC, nmg_pr_lu_briefly(), edgeuse::up, vertexuse::v_p, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT struct face* nmg_find_top_face_in_dir const struct shell s,
int  dir,
long *  flags
 

Referenced by nmg_find_top_face().

RT_EXPORT struct face* nmg_find_top_face const struct shell s,
int *  dir,
long *  flags
 

Referenced by nmg_fix_decomposed_shell_normals(), and nmg_shell_is_void().

RT_EXPORT int nmg_find_outer_and_void_shells struct nmgregion r,
struct bu_ptbl ***  shells,
const struct bn_tol tol
 

N M G _ F I N D _ O U T E R _ A N D _ V O I D _ S H E L L S

This routine takes a region and constructs an array of bu_ptbl lists. A list is created for each outer shell, and that shell is the first item on the list. Additional shells on any list are void shells within that lists outer shell. This routine calls "nmg_decompose_shell" for every shell in the region, so the original region topology may be changed to accomplish this. No geometry is altered.

Definition at line 870 of file nmg_misc.c.

References BN_CK_TOL, BU_LIST_FOR, bu_malloc(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins(), NMG_CK_REGION, NMG_CK_SHELL, nmg_decompose_shell(), and nmgregion::s_hd.

Here is the call graph for this function:

RT_EXPORT int nmg_mark_edges_real const long *  magic_p  ) 
 

RT_EXPORT void nmg_tabulate_face_g_verts struct bu_ptbl tab,
const struct face_g_plane fg
 

N M G _ T A B U L A T E _ F A C E _ G _ V E R T S

Tabulates all vertices in faces that use fg

Definition at line 994 of file nmg_misc.c.

References BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_ptbl_init(), bu_ptbl_ins_unique(), loopuse::down_hd, face_g_plane::f_hd, face::fu_p, faceuse::lu_hd, NMG_CK_EDGEUSE, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_VERTEXUSE_MAGIC, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_calc_face_plane().

Here is the call graph for this function:

RT_EXPORT void nmg_isect_shell_self struct shell s,
const struct bn_tol tol
 

N M G _ I S E C T _ S H E L L _ S E L F

Intersects all faces in a shell with all other faces in the same shell Intended for use after extrusion

Definition at line 1064 of file nmg_misc.c.

References BN_CK_TOL, BU_LIST_FOR, bu_log(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins(), DEBUG_BASIC, faceuse::f_p, shell::fu_hd, shell::l, bu_list::magic, face::max_pt, face::min_pt, NMG_CK_FACEUSE, NMG_CK_MODEL, NMG_CK_REGION, NMG_CK_SHELL, nmg_faces_are_radial(), nmg_find_model(), nmg_isect_two_generic_faces(), nmg_msv(), nmg_mv_fu_between_shells(), nmg_vmodel(), faceuse::orientation, OT_SAME, shell::r_p, and V3RPP_OVERLAP.

Referenced by nmg_extrude_cleanup().

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_next_radial_eu const struct edgeuse eu,
const struct shell s,
const int  wires
 

N M G _ N E X T _ R A D I A L _ E D G E U S E

Traverse radial edgeuse around specified edgeuse looking for one that meets optional restrictions. If a shell is specified only edgeuse from that shell will be considered. If wires is non-zero, wire edges will be considered, otherwise, wire edges are ignored.

returns: radial edgeuse

Definition at line 1172 of file nmg_misc.c.

References edgeuse::eumate_p, NMG_CK_EDGEUSE, NMG_CK_SHELL, nmg_find_fu_of_eu(), nmg_find_s_of_eu(), NULL, edgeuse::radial_p, and rt_bomb().

Referenced by nmg_check_closed_shell(), and nmg_decompose_shell().

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_prev_radial_eu const struct edgeuse eu,
const struct shell s,
const int  wires
 

N M G _ P R E V _ R A D I A L _ E D G E U S E

Traverse radial edgeuse around specified edgeuse in opposite direction from nmg_next_radial_eu, looking for one that meets optional restrictions. If a shell is specified only edgeuse from that shell will be considered. If wires is non-zero, wire edges will be considered, otherwise, wire edges are ignored.

returns: radial edgeuse

Definition at line 1212 of file nmg_misc.c.

References edgeuse::eumate_p, NMG_CK_EDGEUSE, NMG_CK_SHELL, nmg_find_fu_of_eu(), nmg_find_s_of_eu(), NULL, edgeuse::radial_p, and rt_bomb().

Here is the call graph for this function:

RT_EXPORT int nmg_radial_face_count const struct edgeuse eu,
const struct shell s
 

N M G _ R A D I A L _ F A C E _ C O U N T

Counts the number of faces (actually, the number of radial edgeuse/mate pairs) around eu. If s is specified, only edgeuses in shell s are counted. Wire edgeuses are not counted.

returns: number of edgeuse/mate pairs radiall around eu that meet restrictions

Definition at line 1244 of file nmg_misc.c.

References edgeuse::eumate_p, NMG_CK_EDGEUSE, NMG_CK_SHELL, nmg_find_fu_of_eu(), nmg_find_s_of_eu(), NULL, and edgeuse::radial_p.

Referenced by nmg_decompose_shell().

Here is the call graph for this function:

RT_EXPORT int nmg_check_closed_shell const struct shell s,
const struct bn_tol tol
 

N M G _ C H E C K _ C L O S E D _ S H E L L

Looks at every eu in OT_SAME fu's. If any eu has no radials, then it must be the edge of a dangling face and therfore the edge of an opening.

returns: 0 - O.K. 1 - found a hole

Definition at line 1278 of file nmg_misc.c.

References BN_CK_TOL, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, loopuse::down_hd, edgeuse::eumate_p, shell::fu_hd, faceuse::lu_hd, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_EDGEUSE_MAGIC, nmg_next_radial_eu(), faceuse::orientation, and OT_SAME.

Referenced by nmg_hollow_shell(), nmg_open_shells_connect(), and nmg_to_poly().

Here is the call graph for this function:

RT_EXPORT int nmg_move_lu_between_fus struct faceuse dest,
struct faceuse src,
struct loopuse lu
 

N M G _ M O V E _ L U _ B E T W E E N _ F U S

Moves lu from src faceuse to dest faceuse

returns: 0 - All is well 1 - src faceuse is now empty

Definition at line 1326 of file nmg_misc.c.

References BU_LIST_DEQUEUE, BU_LIST_INSERT, BU_LIST_IS_EMPTY, bu_log(), DEBUG_BASIC, loopuse::fu_p, faceuse::fumate_p, loopuse::l, faceuse::lu_hd, loopuse::lumate_p, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, rt_bomb(), and loopuse::up.

Referenced by nmg_split_loops_handler().

Here is the call graph for this function:

RT_EXPORT void nmg_loop_plane_newell const struct loopuse lu,
plane_t  pl
 

Referenced by nmg_calc_face_plane(), nmg_ck_lu_orientation(), and nmg_lu_reorient().

RT_EXPORT fastf_t nmg_loop_plane_area const struct loopuse lu,
plane_t  pl
 

Referenced by nmg_bad_face_normals(), nmg_faceuse_area(), and nmg_loop_is_ccw().

RT_EXPORT int nmg_calc_face_plane struct faceuse fu_in,
plane_t  pl
 

Referenced by nmg_calc_face_g(), and nmg_make_faces_within_tol().

RT_EXPORT int nmg_calc_face_g struct faceuse fu  ) 
 

N M G _ C A L C _ F A C E _ G

interface to nmg_calc_face_plane(), calls nmg_face_g with the resulting plane

Definition at line 1819 of file nmg_misc.c.

References nmg_calc_face_plane(), and nmg_face_g().

Referenced by nmg_extrude_face(), nmg_make_faces_at_vert(), tesselate_pipe_end(), and tesselate_pipe_linear().

Here is the call graph for this function:

RT_EXPORT fastf_t nmg_faceuse_area const struct faceuse fu  ) 
 

N M G _ F A C E U S E _ A R E A

The following routines calculate surface area of NMG objects. Note that this includes all surfaces, not just external surfaces, i.e., an NMG object consisting of two adjacent cubes with a coincident face will have a surface area of 12*s*s (s is length of one side)

Definition at line 1843 of file nmg_misc.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), loopuse::down_hd, faceuse::lu_hd, NMG_CK_FACEUSE, NMG_EDGEUSE_MAGIC, nmg_loop_plane_area(), nmg_orientation(), loopuse::orientation, OT_OPPOSITE, and OT_SAME.

Referenced by nmg_shell_area().

Here is the call graph for this function:

RT_EXPORT fastf_t nmg_shell_area const struct shell s  ) 
 

Definition at line 1877 of file nmg_misc.c.

References BU_LIST_FOR, shell::fu_hd, NMG_CK_SHELL, nmg_faceuse_area(), faceuse::orientation, and OT_SAME.

Referenced by nmg_region_area().

Here is the call graph for this function:

RT_EXPORT fastf_t nmg_region_area const struct nmgregion r  ) 
 

Definition at line 1901 of file nmg_misc.c.

References BU_LIST_FOR, NMG_CK_REGION, nmg_shell_area(), and nmgregion::s_hd.

Referenced by nmg_model_area().

Here is the call graph for this function:

RT_EXPORT fastf_t nmg_model_area const struct model m  ) 
 

Definition at line 1915 of file nmg_misc.c.

References BU_LIST_FOR, NMG_CK_MODEL, nmg_region_area(), and model::r_hd.

Here is the call graph for this function:

RT_EXPORT void nmg_purge_unwanted_intersection_points struct bu_ptbl vert_list,
fastf_t mag_list,
const struct faceuse fu,
const struct bn_tol tol
 

N M G _ P U R G E _ U N W A N T E D _ I N T E R S E C T I O N _ P O I N T S

Make sure that the list of intersection points doesn't contain any vertexuses from loops whose bounding boxes don;t overlap the bounding box of a loop in the given faceuse.

This is really a special purpose routine to help the intersection operations of the boolean process. The only reason it's here instead of nmg_inter.c is that it knows too much about the format and contents of an bu_ptbl structure.

Definition at line 2105 of file nmg_misc.c.

References BN_CK_TOL, bu_log(), bu_ptbl::buffer, DEBUG_POLYSECT, bu_ptbl::end, vertexuse::l, bu_list::magic, NMG_CK_FACEUSE, NMG_VERTEXUSE_MAGIC, and NULL.

Here is the call graph for this function:

RT_EXPORT int nmg_in_or_ref struct vertexuse vu,
struct bu_ptbl b
 

N M G _ I N _ O R _ R E F

if the given vertexuse "vu" is in the table given by "b" or if "vu" references a vertex which is refernced by a vertexuse in the table, then we return 1. Otherwise, we return 0.

Definition at line 2249 of file nmg_misc.c.

References bu_ptbl::buffer, bu_ptbl::end, vertexuse::magic_p, NMG_VERTEXUSE_MAGIC, and vertexuse::v_p.

RT_EXPORT void nmg_rebound struct model m,
const struct bn_tol tol
 

N M G _ R E B O U N D

Re-compute all the bounding boxes in the NMG model. Bounding boxes are presently found in these structures: loop_g face_g shell_a nmgregion_a The re-bounding must be performed in a bottom-up manner, computing the loops first, and working up to the nmgregions.

Definition at line 2279 of file nmg_misc.c.

References BN_CK_TOL, bu_calloc(), bu_free(), BU_LIST_FOR, faceuse::f_p, shell::fu_hd, loopuse::l_p, faceuse::lu_hd, shell::lu_hd, model::maxindex, NMG_CK_FACE, NMG_CK_FACEUSE, NMG_CK_LOOP, NMG_CK_LOOPUSE, NMG_CK_MODEL, NMG_CK_REGION, NMG_CK_SHELL, nmg_face_bb(), NMG_INDEX_FIRST_TIME, nmg_loop_g(), nmg_region_a(), nmg_shell_a(), model::r_hd, and nmgregion::s_hd.

Referenced by nmg_extrude_cleanup(), nmg_fix_normals(), nmg_merge_regions(), rt_pipe_tess(), stash_shell(), and wdb_shells_cmd().

Here is the call graph for this function:

RT_EXPORT void nmg_count_shell_kids const struct model m,
unsigned long *  total_wires,
unsigned long *  total_faces,
unsigned long *  total_points
 

RT_EXPORT void nmg_close_shell struct shell s,
const struct bn_tol tol
 

N M G _ C L O S E _ S H E L L

Examines the passed shell and, if there are holes, closes them note that not much care is taken as to how the holes are closed so the results are not entirely predictable. A list of free edges is created (edges bounding only one face). New faces are constructed by taking two consecutive edges and making a face. The newly created edge is added to the list of free edges and the two used ones are removed.

Definition at line 2473 of file nmg_misc.c.

References BN_CK_TOL, bn_mk_plane_3pts(), BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), BU_PTBL_END, bu_ptbl_free(), BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins(), vertex_g::coord, DEBUG_BASIC, edgeuse::eumate_p, shell::fu_hd, faceuse::lu_hd, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_VERTEXUSE_MAGIC, NULL, faceuse::orientation, OT_SAME, edgeuse::radial_p, V3ARGS, vertexuse::v_p, vertex::vg_p, VMOVE, void(), and edgeuse::vu_p.

Referenced by nmg_hollow_shell().

Here is the call graph for this function:

RT_EXPORT struct shell* nmg_dup_shell struct shell s,
long ***  copy_tbl,
const struct bn_tol tol
 

Referenced by nmg_fix_normals(), nmg_hollow_shell(), and wdb_shells_cmd().

RT_EXPORT struct edgeuse* nmg_pop_eu struct bu_ptbl stack  ) 
 

Definition at line 3178 of file nmg_misc.c.

References BU_PTBL_END, BU_PTBL_GET, bu_ptbl_rm(), NULL, and stack.

Referenced by nmg_decompose_shell(), and nmg_propagate_normals().

Here is the call graph for this function:

RT_EXPORT void nmg_reverse_radials struct faceuse fu,
const struct bn_tol tol
 

Definition at line 3196 of file nmg_misc.c.

References BN_CK_TOL, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), DEBUG_BASIC, loopuse::down_hd, edgeuse::eumate_p, faceuse::lu_hd, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_EDGEUSE_MAGIC, and edgeuse::radial_p.

Referenced by nmg_propagate_normals().

Here is the call graph for this function:

RT_EXPORT void nmg_reverse_face_and_radials struct faceuse fu,
const struct bn_tol tol
 

N M G _ R E V E R S E _ F A C E _ A N D _ R A D I A L S

This routine calls "nmg_reverse_face" and also makes the radial pointers connect faces of like orientation (i.e., OT_SAME to OT_SAME and OT_OPPOSITE to OT_OPPOSITE).

Definition at line 3250 of file nmg_misc.c.

References BN_CK_TOL, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), DEBUG_BASIC, loopuse::down_hd, edgeuse::eumate_p, faceuse::lu_hd, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_EDGEUSE_MAGIC, nmg_reverse_face(), and edgeuse::radial_p.

Referenced by nmg_fix_decomposed_shell_normals(), nmg_fix_normals(), and nmg_propagate_normals().

Here is the call graph for this function:

RT_EXPORT int nmg_shell_is_void const struct shell s  ) 
 

N M G _ S H E L L _ I S _ V O I D

determines if the shell is a void shell or an exterior shell by finding the topmost face (in some direction) and looking at the component of the OT_SAME faceuse normal in that direction.

returns: 0 - shell is exterior shell 1 - shell is a void shell -1 - cannot determine

It is expected that this shell is the result of nmg_decompose_shells.

Definition at line 3312 of file nmg_misc.c.

References bu_calloc(), bu_free(), face::fu_p, faceuse::fumate_p, face::g, shell::l, bu_list::magic, model::maxindex, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, NMG_CK_MODEL, NMG_CK_SHELL, nmg_find_model(), nmg_find_top_face(), NMG_GET_FU_NORMAL, NULL, faceuse::orientation, OT_SAME, and face::plane_p.

Referenced by nmg_extrude_cleanup(), nmg_extrude_shell(), and nmg_hollow_shell().

Here is the call graph for this function:

RT_EXPORT void nmg_propagate_normals struct faceuse fu_in,
long *  flags,
const struct bn_tol tol
 

Referenced by nmg_fix_decomposed_shell_normals().

RT_EXPORT void nmg_connect_same_fu_orients struct shell s  ) 
 

N M G _ C O N N E C T _ S A M E _ F U _ O R I E N T S

looks for radially connected faceuses that have disagreeing orientations. if such a condiftion is found, the radial pointers are rearranged to make the radial faces agree in orientation.

Definition at line 3621 of file nmg_misc.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, loopuse::down_hd, edgeuse::eumate_p, shell::fu_hd, faceuse::lu_hd, NMG_EDGEUSE_MAGIC, nmg_find_fu_of_eu(), faceuse::orientation, OT_OPPOSITE, OT_SAME, and edgeuse::radial_p.

Referenced by nmg_fix_normals().

Here is the call graph for this function:

RT_EXPORT void nmg_fix_decomposed_shell_normals struct shell s,
const struct bn_tol tol
 

N M G _ F I X _ D E C O M P O S E D_ S H E L L _ N O R M A L S

Routine to set all OT_SAME faceuse normals to outward direction. Assumes that there are no other shells sharing edges with this one.

Definition at line 3669 of file nmg_misc.c.

References BN_CK_TOL, bu_calloc(), bu_free(), BU_LIST_FOR, bu_log(), DEBUG_BASIC, faceuse::f_p, shell::fu_hd, face::fu_p, faceuse::fumate_p, face::g, nmgregion::m_p, face::magic_p, model::maxindex, NMG_CK_FACE, NMG_CK_FACEUSE, NMG_CK_SHELL, NMG_FACE_G_PLANE_MAGIC, nmg_find_top_face(), NMG_GET_FU_NORMAL, NMG_INDEX_SET, NMG_INDEX_TEST, nmg_propagate_normals(), nmg_reverse_face_and_radials(), NULL, faceuse::orientation, OT_SAME, shell::r_p, rt_bomb(), and V3ARGS.

Referenced by nmg_fix_normals().

Here is the call graph for this function:

RT_EXPORT struct model* nmg_mk_model_from_region struct nmgregion r,
int  reindex
 

N M G _ M K _ M O D E L _ F R O M _ R E G I O N

Creates a new model from an existing nmgregion. Will refuse to create new model if the passed nmgregion has children with uses in another nmgregion.

The reindex flag indicates if the new model should be reindexed. If non-zero, nmg_m_reindex() is called. If zero, the maxindex field of the new model is filled by finding the largest index value in the new model and adding one. This is useful if the indices in the region are being used for table look-up.

Definition at line 3790 of file nmg_misc.c.

References BU_LIST_FOR, bu_log(), BU_PTBL_END, BU_PTBL_GET, vertex_g::coord, nmgregion::l, bu_list::magic, NMG_CK_REGION, NMG_CK_VERTEX, nmg_find_s_of_vu(), nmg_vertex_tabulate(), V3ARGS, vertex::vg_p, and vertex::vu_hd.

Referenced by nmg_fix_normals().

Here is the call graph for this function:

RT_EXPORT void nmg_fix_normals struct shell s_orig,
const struct bn_tol tol
 

N M G _ F I X _ N O R M A L S

Routine to set faceuse normlas to correct direction.

Method: 1. Make a copy of the shell in another model. 2. Decompose the copy into constituent shells. 3. Set all normals of constituent shells outward (no void shells) 4. Use nmg_classify_s_vs_s() for every pair of shells. 5. Mark any shell that is inside an odd number of other shells as a void shell. 6. Compare original faceuses with the results in the copy and adjust normals as needed. 7. Destroy the copy model.

Definition at line 3885 of file nmg_misc.c.

References BN_CK_TOL, bu_free(), BU_LIST_FIRST, BU_LIST_FOR, bu_log(), bu_ptbl_free(), bu_ptbl_init(), bu_ptbl_ins(), bu_ptbl_locate(), DEBUG_BASIC, faceuse::f_p, shell::fu_hd, faceuse::fumate_p, face::g, nmgregion::m_p, face::magic_p, NMG_CK_FACEUSE, NMG_CK_SHELL, NMG_CLASS_AinB, NMG_CLASS_Unknown, nmg_classify_s_vs_s(), nmg_connect_same_fu_orients(), nmg_decompose_shell(), nmg_dup_shell(), NMG_FACE_G_PLANE_MAGIC, nmg_fix_decomposed_shell_normals(), NMG_GET_FU_NORMAL, NMG_INDEX_GETP, nmg_km(), nmg_ks(), nmg_mk_model_from_region(), nmg_mrsv(), nmg_mv_shell_to_region(), nmg_pr_fu_briefly(), nmg_rebound(), nmg_reverse_face_and_radials(), faceuse::orientation, OT_SAME, shell::r_p, s1, s2, nmgregion::s_hd, VDOT, void(), and VREVERSE.

Here is the call graph for this function:

RT_EXPORT int nmg_break_long_edges struct shell s,
const struct bn_tol tol
 

N M G _ B R E A K _ L O N G _ E D G E S

This codes looks for situations as illustrated:

*------->*-------->*--------->* *<----------------------------*

where one long edgeuse (the bottom one above) and two or more shorter edgeusess (the tops ones) are collinear and have the same start and end vertices. The code breaks the longer edgeuse into ones that can be radials of the shorter ones. Returns the number of splits performed.

Definition at line 4074 of file nmg_misc.c.

References bn_3pts_collinear(), BN_CK_TOL, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), vertex_g::coord, DEBUG_BASIC, loopuse::down_hd, vertexuse::eu_p, edgeuse::eumate_p, shell::fu_hd, faceuse::lu_hd, vertexuse::magic_p, MAGSQ, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_CK_VERTEXUSE, nmg_ebreak(), NMG_EDGEUSE_MAGIC, vertexuse::up, V3ARGS, vertexuse::v_p, VDOT, vertex::vg_p, void(), VSUB2, vertex::vu_hd, and edgeuse::vu_p.

Referenced by nmg_assess_vu().

Here is the call graph for this function:

RT_EXPORT struct faceuse* nmg_mk_new_face_from_loop struct loopuse lu  ) 
 

N M G _ M K _ N E W _ F A C E _ F R O M _ L O O P

Remove a loopuse from an existing face and construct a new face from that loop

Returns new faceuse as built by nmg_mf()

Definition at line 4181 of file nmg_misc.c.

References BU_LIST_DEQUEUE, BU_LIST_FOR, BU_LIST_INSERT, bu_log(), DEBUG_BASIC, loopuse::fu_p, loopuse::l, faceuse::lu_hd, shell::lu_hd, loopuse::lumate_p, loopuse::magic_p, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_FACEUSE_MAGIC, nmg_mf(), NULL, loopuse::orientation, OT_SAME, faceuse::s_p, loopuse::s_p, and loopuse::up.

Referenced by nmg_make_faces_at_vert(), and nmg_split_loops_handler().

Here is the call graph for this function:

RT_EXPORT int nmg_split_loops_into_faces long *  magic_p,
const struct bn_tol tol
 

Referenced by nmg_decompose_shell(), nmg_edge_collapse(), nmg_fix_overlapping_loops(), and nmg_make_faces_within_tol().

RT_EXPORT int nmg_decompose_shell struct shell s,
const struct bn_tol tol
 

N M G _ D E C O M P O S E _ S H E L L

Accepts one shell and breaks it to the minimum number of disjoint shells.

explicit returns: # of resulting shells ( 1 indicates that nothing was done )

implicit returns: additional shells in the passed in shell's region.

Definition at line 4492 of file nmg_misc.c.

References BN_CK_TOL, bu_calloc(), bu_free(), BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), BU_PTBL_END, bu_ptbl_free(), BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins_unique(), bu_ptbl_reset(), DEBUG_BASIC, loopuse::down_hd, edgeuse::eumate_p, shell::fu_hd, faceuse::fumate_p, shell::l, faceuse::lu_hd, nmgregion::m_p, bu_list::magic, model::maxindex, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_MODEL, NMG_CK_REGION, NMG_CK_SHELL, NMG_EDGEUSE_MAGIC, nmg_find_fu_of_eu(), nmg_find_s_of_eu(), NMG_INDEX_ASSIGN, NMG_INDEX_GET, NMG_INDEX_TEST, nmg_next_radial_eu(), nmg_pop_eu(), nmg_radial_face_count(), nmg_split_loops_into_faces(), NULL, faceuse::orientation, OT_SAME, shell::r_p, edgeuse::radial_p, rt_bomb(), stack, and void().

Referenced by nmg_extrude_cleanup(), nmg_extrude_shell(), nmg_find_outer_and_void_shells(), nmg_fix_normals(), and nmg_hollow_shell().

Here is the call graph for this function:

RT_EXPORT void nmg_stash_model_to_file const char *  filename,
const struct model m,
const char *  title
 

N M G _ S T A S H _ M O D E L _ T O _ F I L E

Store an NMG model as a separate .g file, for later examination. Don't free the model, as the caller may still have uses for it.

NON-PARALLEL because of rt_uniresource.

Definition at line 4954 of file nmg_misc.c.

References BU_CK_EXTERNAL, bu_free_external(), BU_INIT_EXTERNAL, bu_log(), DB5_MAJORTYPE_BRLCAD, db_flags_internal(), db_wrap_v4_external(), fp, ID_NMG, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, name, NMG_CK_MODEL, nmg_vmodel(), NULL, perror(), rt_db_cvt_to_external5(), RT_INIT_DB_INTERNAL, rt_uniresource, wdb_close(), wdb_export_external(), and wdb_fopen().

Referenced by nmg_check_radial(), nmg_eu_radial_check(), nmg_face_state_transition(), nmg_triangulate_fu(), and stash_shell().

Here is the call graph for this function:

RT_EXPORT int nmg_unbreak_region_edges long *  magic_p  ) 
 

Referenced by nmg_crackshells(), nmg_triangulate_model(), and wdb_nmg_simplify_cmd().

RT_EXPORT int nmg_mv_shell_to_region struct shell s,
struct nmgregion r
 

N M G _ M V _ S H E L L _ T O _ R E G I O N

Move a shell from one nmgregion to another. Will bomb if shell and region aren't in the same model.

returns: 0 - all is well 1 - nmgregion that gave up the shell is now empty!!!!

Definition at line 5224 of file nmg_misc.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_IS_EMPTY, bu_log(), DEBUG_BASIC, shell::l, nmgregion::l, bu_list::magic, NMG_CK_REGION, NMG_CK_SHELL, nmg_find_model(), shell::r_p, rt_bomb(), and nmgregion::s_hd.

Referenced by nmg_extrude_cleanup(), nmg_extrude_shell(), nmg_fix_normals(), and nmg_hollow_shell().

Here is the call graph for this function:

RT_EXPORT int nmg_find_isect_faces const struct vertex new_v,
struct bu_ptbl faces,
int *  free_edges,
const struct bn_tol tol
 

N M G _ F I N D _ I S E C T _ F A C E S

Find all faces that contain vertex "new_v" Put them in a bu_ptbl "faces"

returns: the number of faces that contain the vertex

and fills in the table with the faces. Counts edges at this vertex where radial is mate (free_edges)

Definition at line 5268 of file nmg_misc.c.

References BN_CK_TOL, bn_coplanar(), BU_CK_PTBL, BU_LIST_FOR, BU_LIST_PPREV_CIRC, bu_log(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_ins(), DEBUG_BASIC, vertexuse::eu_p, edgeuse::eumate_p, faceuse::f_p, fp, face::g, vertexuse::magic_p, face_g_plane::N, NMG_CK_FACEUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_find_fu_of_vu(), faceuse::orientation, OT_SAME, face::plane_p, edgeuse::radial_p, vertexuse::up, and vertex::vu_hd.

Referenced by nmg_in_vert(), and nmg_move_edge_thru_pt().

Here is the call graph for this function:

RT_EXPORT int nmg_simple_vertex_solve struct vertex new_v,
const struct bu_ptbl faces,
const struct bn_tol tol
 

N M G _ S I M P L E _ V E R T E X _ S O L V E

given a vertex and a list of faces (not more than three) that should intersect at the vertex, calculate a new location for the vertex.

returns: 0 - if everything is OK 1 - failure

and modifies the geometry of the vertex to the new location

Definition at line 5346 of file nmg_misc.c.

References bu_log(), BU_PTBL_END, BU_PTBL_GET, DEBUG_BASIC, face::fu_p, faceuse::fumate_p, NMG_GET_FU_PLANE, faceuse::orientation, OT_SAME, and V4ARGS.

Referenced by nmg_in_vert(), and nmg_move_edge_thru_pt().

Here is the call graph for this function:

RT_EXPORT int nmg_ck_vert_on_fus const struct vertex v,
const struct bn_tol tol
 

N M G _ C K _ V E R T _ O N _ F U S

Check all uses of a vertex to see if it lies within tolerance of all faces where it is used

returns: 0 - All is well 1 - vertex is off face plane by at least tol->dist for at least one face

Definition at line 5475 of file nmg_misc.c.

References BN_CK_TOL, BU_LIST_FOR, bu_log(), vertex_g::coord, bn_tol::dist, DIST_PT_PLANE, faceuse::f_p, face::g, face_g_plane::N, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, nmg_find_fu_of_vu(), face::plane_p, V3ARGS, vertex::vg_p, and vertex::vu_hd.

Here is the call graph for this function:

RT_EXPORT void nmg_make_faces_at_vert struct vertex new_v,
struct bu_ptbl int_faces,
const struct bn_tol tol
 

N M G _ M A K E _ F A C E S _ A T _ V E R T

Make new faces around vertex new_v using info in the table of intersect_fu structures. Each structure contains a vertex on an edge departing new_v. Vertices from two consecutive edges are combined with new_v to form triangular faces around new_v

Definition at line 6542 of file nmg_misc.c.

References bn_3pts_collinear(), BN_CK_TOL, BU_CK_PTBL, BU_LIST_FOR, bu_log(), BU_PTBL_END, BU_PTBL_GET, vertex_g::coord, loopuse::down_hd, intersect_fus::eu, vertexuse::eu_p, faceuse::f_p, intersect_fus::free_edge, intersect_fus::fu, loopuse::fu_p, edgeuse::lu_p, loopuse::lumate_p, nmg_calc_face_g(), NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_VERTEX, nmg_cut_loop(), nmg_face_bb(), nmg_jv(), nmg_mk_new_face_from_loop(), nmg_pr_fu_briefly(), NULL, loopuse::orientation, OT_SAME, rt_bomb(), edgeuse::up, vertexuse::up, loopuse::up, V3ARGS, vertexuse::v_p, VCOMB2, vertex::vg_p, VMOVE, and intersect_fus::vp.

Here is the call graph for this function:

RT_EXPORT void nmg_kill_cracks_at_vertex const struct vertex vp  ) 
 

N M G _ K I L L _ C R A C K S _ A T _ V E R T E X

Look at all faces around vertex new_v and kill any two consecutive eu's that go from a vertex to a second then back to the original vertex

Definition at line 6777 of file nmg_misc.c.

References BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_NEXT, BU_LIST_NOT_HEAD, BU_LIST_PPREV_CIRC, bu_log(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins_unique(), loopuse::down_hd, EDGESADJ, loopuse::l, edgeuse::l, faceuse::lu_hd, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_find_fu_of_vu(), nmg_keu(), nmg_kfu(), nmg_klu(), and vertex::vu_hd.

Here is the call graph for this function:

RT_EXPORT int nmg_complex_vertex_solve struct vertex new_v,
const struct bu_ptbl faces,
const int  free_edges,
const int  approximate,
const struct bn_tol tol
 

N M G _ C O M P L E X _ V E R T E X _ S O L V E

This is intended to handle the cases the "nmg_simple_vertex_solve" can't do (more than three faces intersecting at a vertex)

This routine may create new edges and/or faces and Modifies the location of "new_v"

if approximate is non-zero, the new geomatry is approximated by calculating the point with minimum distance to all the intersecting faces

returns: 0 - if everything is OK 1 - failure

Definition at line 7388 of file nmg_misc.c.

References BN_CK_TOL, bu_calloc(), BU_CK_PTBL, bu_log(), BU_PTBL_END, BU_PTBL_GET, vertex_g::coord, face::fu_p, NMG_CK_VERTEX, NMG_GET_FU_PLANE, V4ARGS, VDOT, and vertex::vg_p.

Referenced by nmg_in_vert().

Here is the call graph for this function:

RT_EXPORT int nmg_bad_face_normals const struct shell s,
const struct bn_tol tol
 

N M G _ B A D _ F A C E _ N O R M A L S

Look for faceuses in the shell with normals that do not agree with the geometry (i.e., in the wrong direction)

return: 1 - at least one faceuse with a bad normal was found 0 - no faceuses with bad normals were found

Definition at line 7577 of file nmg_misc.c.

References BN_CK_TOL, BU_LIST_FOR, shell::fu_hd, faceuse::lu_hd, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_GET_FU_NORMAL, nmg_loop_plane_area(), faceuse::orientation, loopuse::orientation, OT_OPPOSITE, OT_SAME, VDOT, and VREVERSE.

Referenced by nmg_extrude_cleanup().

Here is the call graph for this function:

RT_EXPORT int nmg_faces_are_radial const struct faceuse fu1,
const struct faceuse fu2
 

N M G _ F A C E S _ A R E _ R A D I A L

checks if two faceuses are radial to each other

returns 1 - the two faceuses are radial to each other 0 - otherwise

Definition at line 7635 of file nmg_misc.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, loopuse::down_hd, edgeuse::eumate_p, faceuse::fumate_p, faceuse::lu_hd, NMG_CK_FACEUSE, NMG_EDGEUSE_MAGIC, nmg_find_fu_of_eu(), and edgeuse::radial_p.

Referenced by nmg_isect_shell_self(), and nmg_to_arb().

Here is the call graph for this function:

RT_EXPORT int nmg_move_edge_thru_pt struct edgeuse mv_eu,
const point_t  pt,
const struct bn_tol tol
 

RT_EXPORT void nmg_vlist_to_wire_edges struct shell s,
const struct bu_list vhead
 

N M G _ V L I S T _ T O _ W I R E _ E D G E S

Convert a vlist to NMG wire edges

Definition at line 8046 of file nmg_misc.c.

References BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, BN_VLIST_POLY_DRAW, BN_VLIST_POLY_END, BN_VLIST_POLY_MOVE, BN_VLIST_POLY_START, BU_LIST_FIRST, BU_LIST_FOR, bn_vlist::cmd, edgeuse::eumate_p, NMG_CK_LIST, NMG_CK_SHELL, nmg_edge_g(), nmg_me(), nmg_vertex_gv(), NULL, bn_vlist::nused, bn_vlist::pt, SMALL_FASTF, vertexuse::v_p, vertex::vg_p, VMOVE, VNEAR_ZERO, VSUB2, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT void nmg_follow_free_edges_to_vertex const struct vertex vpa,
const struct vertex vpb,
struct bu_ptbl bad_verts,
const struct shell s,
const struct edgeuse eu,
struct bu_ptbl verts,
int *  found
 

Definition at line 8105 of file nmg_misc.c.

References BU_CK_PTBL, BU_LIST_FOR, bu_log(), bu_ptbl_ins(), bu_ptbl_locate(), bu_ptbl_rm(), vertex_g::coord, vertexuse::eu_p, edgeuse::eumate_p, vertexuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_SHELL, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_find_s_of_vu(), nmg_follow_free_edges_to_vertex(), edgeuse::radial_p, vertexuse::up, V3ARGS, vertexuse::v_p, vertex::vg_p, vertex::vu_hd, and edgeuse::vu_p.

Referenced by nmg_follow_free_edges_to_vertex().

Here is the call graph for this function:

RT_EXPORT void nmg_glue_face_in_shell const struct faceuse fu,
struct shell s,
const struct bn_tol tol
 

Definition at line 8310 of file nmg_misc.c.

References BN_CK_TOL, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, loopuse::down_hd, edgeuse::eumate_p, faceuse::lu_hd, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_EDGEUSE_MAGIC, nmg_findeu(), nmg_radial_join_eu(), vertexuse::v_p, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT int nmg_open_shells_connect struct shell dst,
struct shell src,
const long **  copy_tbl,
const struct bn_tol tol
 

Referenced by nmg_hollow_shell().

RT_EXPORT int nmg_in_vert struct vertex new_v,
const int  approximate,
const struct bn_tol tol
 

N M G _ I N _ V E R T

Move vertex so it is at the intersection of the newly created faces

This routine is used by "nmg_extrude_shell" to move vertices. Each plane has already been moved a distance inward and the surface normals have been reversed.

if approximate is non-zero, then the coordinates of the new vertex may be calculated as the point with minimum distance to all the faces that intersect at the vertex for vertices where more than three faces intersect.

Definition at line 9068 of file nmg_misc.c.

References BN_CK_TOL, bu_log(), bu_ptbl_free(), bu_ptbl_init(), vertex_g::coord, NMG_CK_VERTEX, nmg_complex_vertex_solve(), nmg_find_isect_faces(), nmg_simple_vertex_solve(), V3ARGS, and vertex::vg_p.

Referenced by nmg_extrude_shell(), and nmg_hollow_shell().

Here is the call graph for this function:

RT_EXPORT void nmg_mirror_model struct model m  ) 
 

N M G _ M I R R O R _ M O D E L

mirror model across the y-axis this does not copy the model, it changes the model passed to it

Definition at line 9121 of file nmg_misc.c.

References BU_PTBL_END, BU_PTBL_GET, vertex_g::coord, model::magic, NMG_CK_MODEL, NMG_CK_VERTEX, nmg_vertex_tabulate(), vertex::vg_p, and Y.

Here is the call graph for this function:

RT_EXPORT int nmg_kill_cracks struct shell s  ) 
 

Definition at line 9180 of file nmg_misc.c.

References BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, BU_LIST_PNEXT_CIRC, BU_LIST_PPREV_CIRC, bu_log(), loopuse::down_hd, edgeuse::e_p, edgeuse::eumate_p, shell::fu_hd, faceuse::fumate_p, edgeuse::l, faceuse::l, loopuse::l, faceuse::lu_hd, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_EDGEUSE_MAGIC, nmg_keu(), nmg_kfu(), nmg_klu(), nmg_lu_reorient(), nmg_pr_lu_briefly(), nmg_split_lu_at_vu(), faceuse::orientation, OT_SAME, rt_bomb(), vertexuse::v_p, and edgeuse::vu_p.

Referenced by wdb_nmg_simplify_cmd().

Here is the call graph for this function:

RT_EXPORT int nmg_kill_zero_length_edgeuses struct model m  ) 
 

Definition at line 9359 of file nmg_misc.c.

References BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, BU_LIST_PNEXT_CIRC, bu_log(), loopuse::down_hd, shell::fu_hd, faceuse::fumate_p, nmgregion::l, shell::l, faceuse::l, loopuse::l, edgeuse::l, faceuse::lu_hd, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_MODEL, NMG_CK_REGION, NMG_CK_SHELL, NMG_EDGEUSE_MAGIC, nmg_keu(), nmg_kfu(), nmg_klu(), nmg_kr(), nmg_ks(), model::r_hd, nmgregion::s_hd, vertexuse::v_p, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT void nmg_make_faces_within_tol struct shell s,
const struct bn_tol tol
 

N M G _ M A K E _ F A C E S _ W I T H I N _ T O L

Check all vertices on faces of specified shell. Any face containing vertices more than tol->dist off the plane of the face will be triangulated and broken into seperate faces

Definition at line 9482 of file nmg_misc.c.

References BN_CK_TOL, BU_LIST_FOR, bu_log(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins(), faceuse::f_p, shell::fu_hd, faceuse::l, bu_list::magic, nmg_calc_face_plane(), NMG_CK_FACEUSE, nmg_ck_fu_verts(), NMG_CK_SHELL, nmg_face_new_g(), nmg_split_loops_into_faces(), nmg_triangulate_fu(), faceuse::orientation, OT_SAME, rt_bomb(), and void().

Referenced by nmg_model_fuse().

Here is the call graph for this function:

RT_EXPORT void nmg_intersect_loops_self struct shell s,
const struct bn_tol tol
 

Definition at line 9550 of file nmg_misc.c.

References BN_CK_TOL, bn_isect_lseg3_lseg3(), BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins(), bu_ptbl_reset(), vertex_g::coord, loopuse::down_hd, edgeuse::eumate_p, shell::fu_hd, faceuse::lu_hd, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, nmg_ebreaker(), NMG_EDGEUSE_MAGIC, nmg_vertex_gv(), NULL, faceuse::orientation, OT_SAME, top(), vertexuse::v_p, vertex::vg_p, VJOIN1, VSUB2, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT struct edge_g_cnurb* rt_join_cnurbs struct bu_list crv_head  ) 
 

R T _ J O I N _ C N U R B S

Join a list of cnurb structs into a single cnurb. The curves must have matching endpoints, otherwise nothing is done and (struct cnurb *)NULL is returned.

Returns: A single cnurb structure that joins all the cnurbs on the list.

Definition at line 9669 of file nmg_misc.c.

References BU_CK_LIST_HEAD, BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_FOR, BU_LIST_NEXT, BU_LIST_NOT_HEAD, bu_log(), edge_g_cnurb::c_size, edge_g_cnurb::ctl_points, edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, edge_g_cnurb::l, NULL, edge_g_cnurb::order, edge_g_cnurb::pt_type, rt_bomb(), rt_nurb_c_print(), and RT_NURB_EXTRACT_COORDS.

Here is the call graph for this function:

RT_EXPORT struct edge_g_cnurb* rt_arc2d_to_cnurb point_t  i_center,
point_t  i_start,
point_t  i_end,
int  point_type,
const struct bn_tol tol
 

Referenced by rt_arc2d_to_cnurb().

RT_EXPORT int nmg_break_edge_at_verts struct edge e,
struct bu_ptbl verts,
const struct bn_tol tol
 

Definition at line 10049 of file nmg_misc.c.

References BN_CK_TOL, bn_dist_pt3_lseg3(), BU_CK_PTBL, BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins(), bu_ptbl_rm(), vertex_g::coord, edgeuse::e_p, edge::eu_p, edgeuse::eumate_p, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_VERTEX, nmg_esplit(), vertexuse::v_p, vertex::vg_p, and edgeuse::vu_p.

Referenced by nmg_break_edges().

Here is the call graph for this function:

RT_EXPORT int nmg_break_edges long *  magic_p,
const struct bn_tol tol
 

RT_EXPORT int nmg_lu_is_convex struct loopuse lu,
const struct bn_tol tol
 

N M G _ L U _ I S _ C O N V E X

Checks if lu is convex

Returns: 1 - is loop is convex, or lu is a loop of a single vertex 0 - otherwise

Definition at line 10841 of file nmg_misc.c.

References BN_CK_TOL, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_PNEXT_CIRC, vertex_g::coord, loopuse::down_hd, edgeuse::eumate_p, edgeuse::l, loopuse::l_p, loop::lg_p, NMG_CK_LOOPUSE, NMG_CK_VERTEX_G, NMG_CLASS_AinB, NMG_CLASS_AoutB, nmg_class_pt_lu_except(), NMG_EDGEUSE_MAGIC, nmg_loop_g(), OT_OPPOSITE, OT_SAME, vertexuse::v_p, VBLEND2, vertex::vg_p, and edgeuse::vu_p.

Referenced by nmg_to_poly().

Here is the call graph for this function:

RT_EXPORT int nmg_simplify_shell_edges struct shell s,
const struct bn_tol tol
 

Definition at line 11070 of file nmg_misc.c.

References BN_CK_TOL, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_IS_EMPTY, BU_LIST_NEXT, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, BU_LIST_PNEXT_CIRC, vertex_g::coord, loopuse::down_hd, edgeuse::e_p, vertexuse::eu_p, edgeuse::eumate_p, shell::fu_hd, faceuse::fumate_p, faceuse::l, loopuse::l, edgeuse::l, vertexuse::l, faceuse::lu_hd, vertexuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_find_s_of_vu(), nmg_keu(), nmg_kfu(), nmg_klu(), nmg_movevu(), faceuse::orientation, OT_SAME, edgeuse::radial_p, rt_dist_pt3_line3(), vertexuse::up, vertexuse::v_p, vertex::vg_p, void(), VSUB2, vertex::vu_hd, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT int nmg_edge_collapse struct model m,
const struct bn_tol tol,
const fastf_t  tol_coll,
const fastf_t  min_angle
 

N M G _ E D G E _ C O L L A P S E

Routine to decimate an NMG model through edge collapse to obtain a model with less faces at a greater tolerance

tol_coll is the tolerance distance to be used for choosing edges to collapse

Model must already be triangulated (this is not checked for)

returns number of edges collapsed

Definition at line 11313 of file nmg_misc.c.

References BN_CK_TOL, bn_pi, BU_LIST_FIRST, BU_LIST_FOR, BU_LIST_LAST, BU_LIST_NEXT, BU_LIST_NOT_HEAD, BU_LIST_PNEXT_CIRC, bu_log(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_zero(), vertex_g::coord, DIST_PT_PLANE, edge_g_lseg::e_dir, edgeuse::e_p, edge_g_lseg::e_pt, edge::eu_p, vertexuse::eu_p, edgeuse::eumate_p, faceuse::fumate_p, edgeuse::g, edge::is_real, edgeuse::l, vertexuse::l, edgeuse::lseg_p, model::magic, edge::magic, vertexuse::magic_p, edgeuse::magic_p, loopuse::magic_p, MAX_FASTF, NMG_ARE_EUS_ADJACENT, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_MODEL, NMG_CK_VERTEX, nmg_edge_g(), NMG_EDGE_G_LSEG_MAGIC, NMG_EDGE_MAGIC, nmg_edge_tabulate(), NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, nmg_find_fu_of_eu(), nmg_keu(), nmg_kfu(), nmg_klu(), NMG_LOOPUSE_MAGIC, nmg_movevu(), nmg_orientation(), nmg_radial_join_eu_NEW(), nmg_select_collapse(), nmg_split_loops_into_faces(), faceuse::orientation, OT_SAME, edgeuse::radial_p, vertexuse::up, edgeuse::up, loopuse::up, V3ARGS, vertexuse::v_p, VCROSS, VDOT, vertex::vg_p, VMOVE, void(), VSUB2, vertex::vu_hd, edgeuse::vu_p, and VUNITIZE.

Referenced by wdb_nmg_collapse_cmd().

Here is the call graph for this function:

RT_EXPORT int rt_bot_edge_in_list const int  v1,
const int  v2,
const int  edge_list[],
const int  edge_count0
 

Definition at line 1322 of file g_bot.c.

Referenced by rt_bot_find_e_nearest_pt2().

RT_EXPORT int rt_bot_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ B O T _ P L O T

Definition at line 464 of file g_bot.c.

References BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, rt_bot_internal::faces, rt_db_internal::idb_ptr, LOCAL, rt_bot_internal::num_faces, RT_ADD_VLIST, RT_BOT_CK_MAGIC, RT_CK_DB_INTERNAL, and rt_bot_internal::vertices.

RT_EXPORT int rt_bot_plot_poly struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ B O T _ P L O T _ P O L Y

Definition at line 488 of file g_bot.c.

References BN_VLIST_POLY_DRAW, BN_VLIST_POLY_END, BN_VLIST_POLY_MOVE, BN_VLIST_POLY_START, BN_VLIST_POLY_VERTNORM, rt_bot_internal::bot_flags, rt_bot_internal::face_normals, rt_bot_internal::faces, rt_db_internal::idb_ptr, LOCAL, rt_bot_internal::normals, rt_bot_internal::num_faces, RT_ADD_VLIST, RT_BOT_CK_MAGIC, RT_BOT_HAS_SURFACE_NORMALS, RT_BOT_USE_NORMALS, RT_CK_DB_INTERNAL, VCROSS, rt_bot_internal::vertices, VMOVE, VSUB2, and VUNITIZE.

RT_EXPORT int rt_bot_same_orientation const int *  a,
const int *  b
 

Definition at line 2517 of file g_bot.c.

RT_EXPORT void nmg_triangulate_shell struct shell s,
const struct bn_tol tol
 

Definition at line 2682 of file nmg_tri.c.

References BN_CK_TOL, BU_LIST_FOR, shell::fu_hd, NMG_CK_FACEUSE, NMG_CK_SHELL, nmg_triangulate_fu(), faceuse::orientation, and OT_SAME.

Referenced by nmg_bot().

Here is the call graph for this function:

RT_EXPORT void nmg_triangulate_model struct model m,
const struct bn_tol tol
 

Definition at line 2697 of file nmg_tri.c.

References BN_CK_TOL, BU_LIST_FOR, bu_log(), shell::fu_hd, model::magic, NMG_CK_FACEUSE, NMG_CK_MODEL, NMG_CK_REGION, NMG_CK_SHELL, nmg_model_edge_g_fuse(), nmg_s_split_touchingloops(), nmg_triangulate_fu(), nmg_unbreak_region_edges(), nmg_vmodel(), faceuse::orientation, OT_SAME, model::r_hd, nmgregion::s_hd, and void().

Referenced by wdb_facetize_cmd(), and wdb_nmg_collapse_cmd().

Here is the call graph for this function:

RT_EXPORT void nmg_triangulate_fu struct faceuse fu,
const struct bn_tol tol
 

Definition at line 2491 of file nmg_tri.c.

References BN_CK_TOL, bu_free(), BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_INIT, BU_LIST_PNEXT, BU_LIST_WHILE, bu_log(), vertex_g::coord, pt2d::coord, loopuse::down_hd, HOLE_START, pt2d::l, shell::l, trap::l, faceuse::lu_hd, bu_list::magic, NMG_CK_FACEUSE, NMG_EDGEUSE_MAGIC, nmg_find_model(), nmg_flatten_face(), NMG_GET_FU_NORMAL, nmg_loop_split_at_touching_jaunt(), nmg_lu_reorient(), nmg_split_touchingloops(), nmg_stash_model_to_file(), NMG_VERTEXUSE_MAGIC, loopuse::orientation, OT_SAME, rt_bomb(), faceuse::s_p, V3ARGS, vertexuse::v_p, vertex::vg_p, void(), VPRINT, edgeuse::vu_p, and pt2d::vu_p.

Referenced by nmg_make_faces_within_tol(), nmg_to_poly(), nmg_triangulate_model(), and nmg_triangulate_shell().

Here is the call graph for this function:

RT_EXPORT int nmg_dangling_face const struct faceuse fu,
const char *  manifolds
 

Referenced by nmg_check_radial(), and nmg_shell_manifolds().

RT_EXPORT char* nmg_shell_manifolds struct shell sp,
char *  tbl
 

Definition at line 279 of file nmg_manif.c.

References bu_calloc(), bu_free(), BU_LIST_FOR, BU_LIST_IS_EMPTY, BU_LIST_LINK_CHECK, BU_LIST_NON_EMPTY, bu_log(), DEBUG_MANIF, shell::eu_hd, shell::fu_hd, faceuse::fumate_p, faceuse::index, vertexuse::l, edgeuse::l, loopuse::l, faceuse::l, shell::lu_hd, nmgregion::m_p, model::maxindex, NMG_0MANIFOLD, NMG_1MANIFOLD, NMG_2MANIFOLD, NMG_3MANIFOLD, NMG_CK_FACEUSE, NMG_CK_SHELL, NMG_CK_VERTEXUSE, NMG_CP_MANIFOLD, nmg_dangling_face(), NMG_INDEX_VALUE, NMG_MANIFOLDS, NMG_SET_MANIFOLD, NULL, faceuse::orientation, OT_SAME, PAINT_EXTERIOR, PAINT_INTERIOR, shell::r_p, vertexuse::v_p, and shell::vu_p.

Referenced by nmg_manifolds().

Here is the call graph for this function:

RT_EXPORT char* nmg_manifolds struct model m  ) 
 

Definition at line 428 of file nmg_manif.c.

References bu_calloc(), BU_LIST_FOR, BU_LIST_LINK_CHECK, bu_log(), DEBUG_MANIF, nmgregion::l, shell::l, model::maxindex, NMG_CK_MODEL, NMG_CK_REGION, NMG_CK_SHELL, NMG_CP_MANIFOLD, nmg_shell_manifolds(), model::r_hd, and nmgregion::s_hd.

Referenced by nmg_class_ray_vs_shell(), and rt_nmg_prep().

Here is the call graph for this function:

RT_EXPORT int nmg_ray_segs struct ray_data rd  ) 
 

N M G _ R A Y _ S E G S

Obtain the list of ray segments which intersect with the nmg. This routine does all of the "work" for rt_nmg_shot()

Return: # of segments added to list.

Definition at line 1271 of file nmg_rt_segs.c.

References ray_data::ap, BU_LIST_FOR, BU_LIST_IS_EMPTY, bu_log(), DEBUG_RT_SEGS, NMG_CK_HITMISS_LISTS, NMG_FREE_HITLIST, nmg_rt_print_hitmiss(), ray_data::rd_hit, ray_data::rd_miss, ray_data::seghead, and ray_data::stp.

Referenced by rt_nmg_shot().

Here is the call graph for this function:

RT_EXPORT int rt_num_circular_segments double  maxerr,
double  radius
 

R T _ N U M _ C I R C U L A R _ S E G M E N T S

Given a circle with a specified radius, determine the minimum number of straight line segments that the circle can be approximated with, while still meeting the given maximum permissible error distance. Form a chord (straight line) by connecting the start and end points found when sweeping a 'radius' arc through angle 'theta'.

The error distance is the distance between where a radius line at angle theta/2 hits the chord, and where it hits the circle (at 'radius' distance).

error_distance = radius * ( 1 - cos( theta/2 ) )

or

theta = 2 * acos( 1 - error_distance / radius )

Returns - number of segments. Always at least 6.

Definition at line 982 of file g_torus.c.

References bn_pi, and SMALL.

Referenced by rt_eto_plot(), rt_eto_tess(), rt_tor_plot(), and rt_tor_tess().

RT_EXPORT int rt_tcl_parse_ray Tcl_Interp interp,
struct xray rp,
const char *const *  argv
 

Definition at line 100 of file tcl.c.

References bn_decode_vect(), interp, NULL, xray::r_dir, xray::r_pt, TCL_ERROR, TCL_OK, VSUB2, and VUNITIZE.

Referenced by rt_tcl_cutter(), and rt_tcl_rt_shootray().

Here is the call graph for this function:

RT_EXPORT void rt_tcl_pr_cutter Tcl_Interp interp,
const union cutter cutp
 

Definition at line 143 of file tcl.c.

References cutter::bn, cutter::boxnode::bn_len, cutter::boxnode::bn_list, cutter::boxnode::bn_max, cutter::boxnode::bn_min, cutter::boxnode::bn_piecelen, cutter::boxnode::bn_piecelist, bu_vls_init(), bu_vls_printf(), bu_vls_putc(), bu_vls_strcat(), cutter::cn, cutter::cutnode::cn_axis, cutter::cutnode::cn_point, CUT_BOXNODE, CUT_CUTNODE, cutter::cut_type, RT_CK_PIECELIST, and V3ARGS.

Referenced by rt_tcl_cutter().

Here is the call graph for this function:

RT_EXPORT int rt_tcl_cutter ClientData  clientData,
Tcl_Interp interp,
int  argc,
const char *const *  argv
 

Definition at line 216 of file tcl.c.

References application::a_ray, application::a_rt_i, CUTTER_NULL, interp, NULL, rt_cell_n_on_ray(), RT_CK_AP_TCL, RT_CK_RTI_TCL, rt_tcl_parse_ray(), rt_tcl_pr_cutter(), TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

RT_EXPORT void rt_tcl_pr_hit Tcl_Interp interp,
struct hit hitp,
const struct seg segp,
const struct xray rayp,
int  flipflag
 

Definition at line 261 of file tcl.c.

References bn_encode_vect(), bu_free(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bu_vls_strcat(), curvature::crv_c1, curvature::crv_c2, curvature::crv_pdir, directory::d_namep, DB_FULL_PATH_MAGIC, db_path_to_string(), hit::hit_dist, hit::hit_point, hit::hit_surfno, interp, db_full_path::magic, NULL, RT_CK_DIR, RT_CK_SEG, RT_CK_SOLTAB, RT_CURVATURE, RT_HIT_NORMAL, seg::seg_stp, soltab::st_dp, and soltab::st_path.

Referenced by rt_tcl_a_hit().

Here is the call graph for this function:

RT_EXPORT void rt_tcl_setup Tcl_Interp interp  ) 
 

Definition at line 1511 of file tcl.c.

References Dgo_Init(), interp, rt_bot_minpieces, rt_bot_tri_per_piece, rt_version, TCL_GLOBAL_ONLY, TCL_LINK_INT, Vo_Init(), and Wdb_Init().

Referenced by Rt_Init().

Here is the call graph for this function:

RT_EXPORT int Sysv_Init Tcl_Interp interp  ) 
 

RT_EXPORT int Rt_Init Tcl_Interp interp  ) 
 

Definition at line 1545 of file tcl.c.

References bu_avail_cpus(), BU_LIST_INIT, BU_LIST_UNINITIALIZED, bu_semaphore_init(), interp, NULL, rt_init_resource(), RT_SEM_LAST, rt_tcl_setup(), rt_uniresource, and TCL_OK.

Here is the call graph for this function:

RT_EXPORT void db_full_path_appendresult Tcl_Interp interp,
const struct db_full_path pp
 

Definition at line 1584 of file tcl.c.

References directory::d_namep, db_full_path::fp_len, db_full_path::fp_names, interp, NULL, and RT_CK_FULL_PATH.

RT_EXPORT int tcl_obj_to_int_array Tcl_Interp interp,
Tcl_Obj list,
int **  array,
int *  array_len
 

Definition at line 1605 of file tcl.c.

References bu_calloc(), interp, NULL, Tcl_DecrRefCount, and TCL_OK.

Referenced by rt_nurb_tcladjust(), and tcl_list_to_int_array().

Here is the call graph for this function:

RT_EXPORT int tcl_obj_to_fastf_array Tcl_Interp interp,
Tcl_Obj list,
fastf_t **  array,
int *  array_len
 

Definition at line 1662 of file tcl.c.

References atof(), bu_calloc(), interp, NULL, Tcl_DecrRefCount, and TCL_OK.

Referenced by rt_nurb_tcladjust(), and tcl_list_to_fastf_array().

Here is the call graph for this function:

RT_EXPORT int tcl_list_to_int_array Tcl_Interp interp,
char *  char_list,
int **  array,
int *  array_len
 

Definition at line 1639 of file tcl.c.

References interp, and tcl_obj_to_int_array().

Here is the call graph for this function:

RT_EXPORT int tcl_list_to_fastf_array Tcl_Interp interp,
char *  char_list,
fastf_t **  array,
int *  array_len
 

Definition at line 1697 of file tcl.c.

References interp, and tcl_obj_to_fastf_array().

Referenced by rt_arbn_tcladjust(), rt_cline_tcladjust(), rt_ebm_tcladjust(), rt_extrude_tcladjust(), and rt_sketch_tcladjust().

Here is the call graph for this function:

RT_EXPORT int rt_mk_hyperbola struct rt_pt_node pts,
fastf_t  r,
fastf_t  b,
fastf_t  c,
fastf_t  dtol,
fastf_t  ntol
 

R T _ M K _ H Y P E R B O L A

Definition at line 839 of file g_rhc.c.

References A, NEAR_ZERO, rt_pt_node::next, rt_pt_node::p, RHC_TOL, rt_mk_hyperbola(), rt_ptalloc(), VDOT, VMOVE, VSET, VUNITIZE, X, Y, and Z.

Referenced by rt_ehy_plot(), rt_ehy_tess(), rt_mk_hyperbola(), rt_rhc_plot(), and rt_rhc_tess().

Here is the call graph for this function:

RT_EXPORT int nmg_classify_pt_loop const point_t  pt,
const struct loopuse lu,
const struct bn_tol tol
 

N M G _ C L A S S I F Y _ P T _ L O O P

A generally available interface to nmg_class_pt_l

returns the classification from nmg_class_pt_l or a (-1) on error

Called by - nmg_extrude.c / nmg_fix_overlapping_loops()

XXX DANGER: Calls nmg_class_pt_l(), which does not work well.

Definition at line 2232 of file nmg_class.c.

References BN_CK_TOL, bu_log(), neighbor::class, bn_tol::dist, neighbor::dist, DIST_PT_PLANE, neighbor::eu, loopuse::fu_p, loopuse::magic_p, MAX_FASTF, NMG_CK_LOOPUSE, NMG_FACEUSE_MAGIC, NMG_GET_FU_PLANE, NULL, neighbor::p, loopuse::up, and V3ARGS.

Referenced by nmg_fix_overlapping_loops().

Here is the call graph for this function:

RT_EXPORT int nmg_classify_s_vs_s struct shell s2,
struct shell s,
const struct bn_tol tol
 

N M G _ C L A S S I F Y _ S _ V S _S

Classify one shell (s2) with respect to another (s).

returns: NMG_CLASS_AinB if s2 is inside s NMG_CLASS_AoutB is s2 is outside s NMG_CLASS_Unknown if we can't tell

Assumes (but does not verify) that these two shells do not overlap, but are either entirely separate or entirely within one or the other.

Definition at line 2731 of file nmg_class.c.

References BU_LIST_FIRST, BU_LIST_NON_EMPTY, BU_PTBL_END, bu_ptbl_free(), BU_PTBL_GET, vertex_g::coord, loopuse::down_hd, edgeuse::eumate_p, faceuse::lu_hd, shell_a::max_pt, shell_a::min_pt, nmg_class_pt_s(), nmg_vertex_tabulate(), s2, shell::sa_p, V3RPP1_IN_RPP2, vertexuse::v_p, vertex::vg_p, VMOVE, and edgeuse::vu_p.

Referenced by nmg_fix_normals().

Here is the call graph for this function:

RT_EXPORT int nmg_classify_lu_lu const struct loopuse lu1,
const struct loopuse lu2,
const struct bn_tol tol
 

N M G _ C L A S S I F Y _ L U _ L U

Generally available classifier for determining if one loop is within another

returns classification based on nmg_class_pt_l results

Called by - nmg_misc.c / nmg_split_loops_handler()

Definition at line 2394 of file nmg_class.c.

References BN_CK_TOL, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, BU_LIST_PNEXT_CIRC, BU_LIST_PPREV_CIRC, bu_log(), vertex_g::coord, loopuse::down_hd, edgeuse::e_p, edgeuse::eumate_p, faceuse::f_p, loopuse::fu_p, edgeuse::l, loopuse::lumate_p, loopuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, nmg_class_name(), nmg_class_pt_lu_except(), NMG_CLASS_Unknown, NMG_EDGEUSE_MAGIC, NMG_FACEUSE_MAGIC, nmg_find_eu_leftvec(), nmg_find_vertex_in_lu(), NMG_VERTEXUSE_MAGIC, NULL, loopuse::orientation, OT_OPPOSITE, OT_SAME, rt_bomb(), loopuse::up, vertexuse::v_p, VADD2, VDOT, vertex::vg_p, VREVERSE, VSCALE, and edgeuse::vu_p.

Referenced by nmg_rm_redundancies(), and nmg_split_loops_handler().

Here is the call graph for this function:

RT_EXPORT int nmg_class_pt_f const point_t  pt,
const struct faceuse fu,
const struct bn_tol tol
 

RT_EXPORT int nmg_class_pt_s const point_t  pt,
const struct shell s,
const int  in_or_out_only,
const struct bn_tol tol
 

Referenced by nmg_classify_s_vs_s().

RT_EXPORT int nmg_eu_is_part_of_crack const struct edgeuse eu  ) 
 

Definition at line 338 of file nmg_pt_fu.c.

References BU_LIST_FOR, loopuse::down_hd, edgeuse::eumate_p, edgeuse::lu_p, edgeuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, NMG_LOOPUSE_MAGIC, edgeuse::up, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_class_pt_euvu(), and nmg_split_touchingloops().

RT_EXPORT int nmg_class_pt_lu_except point_t  pt,
const struct loopuse lu,
const struct edge e_p,
const struct bn_tol tol
 

Referenced by nmg_classify_lu_lu(), nmg_get_interior_pt(), nmg_is_crack_outie(), and nmg_lu_is_convex().

RT_EXPORT int nmg_class_pt_fu_except const point_t  pt,
const struct faceuse fu,
const struct loopuse ignore_lu,
void(*)()  eu_func,
void(*)()  vu_func,
const char *  priv,
const int  call_on_hits,
const int  in_or_out_only,
const struct bn_tol tol
 

Referenced by isect_ray_planar_face(), nmg_class_lu_fu(), nmg_class_pt_s(), nmg_is_vertex_on_inter(), and nmg_isect_eu_fu().

RT_EXPORT void nmg_pl_shell FILE *  fp,
const struct shell s,
int  fancy
 

Definition at line 839 of file nmg_plot.c.

References nmg_vlblock_s(), rt_plot_vlblock(), rt_vlblock_free(), and rt_vlblock_init().

Here is the call graph for this function:

RT_EXPORT void nmg_vu_to_vlist struct bu_list vhead,
const struct vertexuse vu
 

N M G _ V U _ T O _ V L I S T

Plot a single vertexuse

Definition at line 92 of file nmg_plot.c.

References BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, RT_ADD_VLIST, vertexuse::v_p, and vertex::vg_p.

Referenced by nmg_lu_to_vlist(), and nmg_s_to_vlist().

RT_EXPORT void nmg_eu_to_vlist struct bu_list vhead,
const struct bu_list eu_hd
 

N M G _ E U _ T O _ V L I S T

Plot a list of edgeuses. The last edge is joined back to the first.

Definition at line 115 of file nmg_plot.c.

References BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, BU_LIST_FOR, bu_log(), vertex_g::coord, edgeuse::eumate_p, NMG_CK_EDGEUSE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, RT_ADD_VLIST, vertexuse::v_p, vertex::vg_p, and edgeuse::vu_p.

Referenced by nmg_s_to_vlist().

Here is the call graph for this function:

RT_EXPORT void nmg_lu_to_vlist struct bu_list vhead,
const struct loopuse lu,
int  poly_markers,
const vectp_t  normal
 

N M G _ L U _ T O _ V L I S T

Plot a single loopuse into a bn_vlist chain headed by vhead.

Needs to be able to handle both linear edges and cnurb edges.

Definition at line 160 of file nmg_plot.c.

References vertexuse::a, BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, BN_VLIST_POLY_DRAW, BN_VLIST_POLY_END, BN_VLIST_POLY_MOVE, BN_VLIST_POLY_START, BN_VLIST_POLY_VERTNORM, BU_CK_LIST_HEAD, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, vertex_g::coord, loopuse::down_hd, faceuse::f_p, fp, loopuse::fu_p, edgeuse::g, vertexuse::magic_p, edgeuse::magic_p, loopuse::magic_p, MAGNITUDE, vertexuse_a_plane::N, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CK_VERTEXUSE, nmg_cnurb_to_vlist(), NMG_EDGE_G_CNURB_MAGIC, NMG_FACE_G_SNURB_MAGIC, NMG_FACEUSE_MAGIC, NMG_VERTEXUSE_A_PLANE_MAGIC, NMG_VERTEXUSE_MAGIC, NMG_VLIST_STYLE_POLYGON, NMG_VLIST_STYLE_USE_VU_NORMALS, NMG_VLIST_STYLE_VISUALIZE_NORMALS, nmg_vu_to_vlist(), NULL, vertexuse::plane_p, RT_ADD_VLIST, loopuse::up, vertexuse::v_p, VADD2, vertex::vg_p, VJOIN1, VSCALE, VSETALL, VSUB2, and edgeuse::vu_p.

Referenced by nmg_s_to_vlist().

Here is the call graph for this function:

RT_EXPORT void nmg_snurb_fu_to_vlist struct bu_list vhead,
const struct faceuse fu,
int  poly_markers
 

N M G _ S N U R B _ F U _ T O _ V L I S T

Definition at line 320 of file nmg_plot.c.

References BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, BU_CK_LIST_HEAD, faceuse::f_p, face::g, knot_vector::k_size, knot_vector::knots, MAGNITUDE, NMG_CK_FACE, NMG_CK_FACE_G_SNURB, NMG_CK_FACEUSE, nmg_snurb_fu_eval(), nmg_snurb_fu_get_norm(), nmg_snurb_to_vlist(), NMG_VLIST_STYLE_VISUALIZE_NORMALS, RT_ADD_VLIST, face::snurb_p, face_g_snurb::u, face_g_snurb::v, VJOIN1, and VSUB2.

Referenced by nmg_s_to_vlist().

Here is the call graph for this function:

RT_EXPORT void nmg_s_to_vlist struct bu_list vhead,
const struct shell s,
int  poly_markers
 

N M G _ S _ T O _ V L I S T

Plot the entire contents of a shell.

poly_markers = 0 for vectors 1 for polygons 2 for polygons and surface normals drawn with vectors

Definition at line 372 of file nmg_plot.c.

References BU_LIST_FOR, shell::eu_hd, faceuse::f_p, shell::fu_hd, face::g, faceuse::lu_hd, shell::lu_hd, face::magic_p, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, NMG_CK_SHELL, nmg_eu_to_vlist(), NMG_FACE_G_SNURB_MAGIC, NMG_GET_FU_NORMAL, nmg_lu_to_vlist(), nmg_snurb_fu_to_vlist(), NMG_VLIST_STYLE_NO_SURFACES, nmg_vu_to_vlist(), faceuse::orientation, OT_SAME, face::plane_p, VSET, VSETALL, and shell::vu_p.

Referenced by nmg_r_to_vlist().

Here is the call graph for this function:

RT_EXPORT void nmg_r_to_vlist struct bu_list vhead,
const struct nmgregion r,
int  poly_markers
 

N M G _ R _ T O _ V L I S T

Definition at line 430 of file nmg_plot.c.

References BU_LIST_FOR, NMG_CK_REGION, nmg_s_to_vlist(), and nmgregion::s_hd.

Referenced by nmg_m_to_vlist().

Here is the call graph for this function:

RT_EXPORT void nmg_m_to_vlist struct bu_list vhead,
struct model m,
int  poly_markers
 

N M G _ M _ T O _ V L I S T

Definition at line 445 of file nmg_plot.c.

References BU_LIST_FOR, NMG_CK_MODEL, NMG_CK_REGION, nmg_r_to_vlist(), and model::r_hd.

Referenced by rt_nmg_plot().

Here is the call graph for this function:

RT_EXPORT void nmg_offset_eu_vert point_t  base,
const struct edgeuse eu,
const vect_t  face_normal,
int  tip
 

RT_EXPORT void nmg_pl_v FILE *  fp,
const struct vertex v,
long *  b
 

Referenced by nmg_pl_e().

RT_EXPORT void nmg_pl_e FILE *  fp,
const struct edge e,
long *  b,
int  red,
int  green,
int  blue
 

Referenced by nmg_pl_eu().

RT_EXPORT void nmg_pl_eu FILE *  fp,
const struct edgeuse eu,
long *  b,
int  red,
int  green,
int  blue
 

RT_EXPORT void nmg_pl_lu FILE *  fp,
const struct loopuse fu,
long *  b,
int  red,
int  green,
int  blue
 

Referenced by nmg_face_lu_plot(), nmg_pl_lu_around_eu(), and nmg_plot_lu_ray().

RT_EXPORT void nmg_pl_fu FILE *  fp,
const struct faceuse fu,
long *  b,
int  red,
int  green,
int  blue
 

Referenced by nmg_cut_loop(), and nmg_plot_ray_face().

RT_EXPORT void nmg_pl_s FILE *  fp,
const struct shell s
 

N M G _ P L _ S

Note that "b" should probably be defined a level higher, to reduce malloc/free calls when plotting multiple shells.

Definition at line 828 of file nmg_plot.c.

References nmg_vlblock_s(), rt_plot_vlblock(), rt_vlblock_free(), and rt_vlblock_init().

Referenced by nmg_evaluate_boolean().

Here is the call graph for this function:

RT_EXPORT void nmg_pl_r FILE *  fp,
const struct nmgregion r
 

N M G _ P L _ R

Definition at line 853 of file nmg_plot.c.

References nmg_vlblock_r(), rt_plot_vlblock(), rt_vlblock_free(), and rt_vlblock_init().

Here is the call graph for this function:

RT_EXPORT void nmg_pl_m FILE *  fp,
const struct model m
 

N M G _ P L _ M

Definition at line 867 of file nmg_plot.c.

References nmg_vlblock_m(), rt_plot_vlblock(), rt_vlblock_free(), and rt_vlblock_init().

Referenced by nmg_face_state_transition().

Here is the call graph for this function:

RT_EXPORT void nmg_vlblock_v struct bn_vlblock vbp,
const struct vertex v,
long *  tab
 

Referenced by nmg_vlblock_e(), nmg_vlblock_lu(), and nmg_vlblock_s().

RT_EXPORT void nmg_vlblock_e struct bn_vlblock vbp,
const struct edge e,
long *  tab,
int  red,
int  green,
int  blue,
int  fancy
 

Referenced by nmg_vlblock_eu().

RT_EXPORT void nmg_vlblock_eu struct bn_vlblock vbp,
const struct edgeuse eu,
long *  tab,
int  red,
int  green,
int  blue,
int  fancy,
int  loopnum
 

Referenced by nmg_vlblock_around_eu(), nmg_vlblock_lu(), and nmg_vlblock_s().

RT_EXPORT void nmg_vlblock_euleft struct bu_list vh,
const struct edgeuse eu,
const point_t  center,
const mat_t  mat,
const vect_t  xvec,
const vect_t  yvec,
double  len,
const struct bn_tol tol
 

Referenced by nmg_vlblock_around_eu().

RT_EXPORT void nmg_vlblock_around_eu struct bn_vlblock vbp,
const struct edgeuse arg_eu,
long *  tab,
int  fancy,
const struct bn_tol tol
 

Referenced by nmg_pl_edges_in_2_shells(), and nmg_plot_lu_around_eu().

RT_EXPORT void nmg_vlblock_lu struct bn_vlblock vbp,
const struct loopuse lu,
long *  tab,
int  red,
int  green,
int  blue,
int  fancy,
int  loopnum
 

Referenced by nmg_pl_fu(), nmg_pl_lu(), nmg_plot_lu_around_eu(), nmg_vlblock_fu(), and nmg_vlblock_s().

RT_EXPORT void nmg_vlblock_fu struct bn_vlblock vbp,
const struct faceuse fu,
long *  tab,
int  fancy
 

Referenced by nmg_2face_plot(), nmg_face_plot(), nmg_pl_2fu(), nmg_pl_comb_fu(), and nmg_vlblock_s().

RT_EXPORT void nmg_vlblock_s struct bn_vlblock vbp,
const struct shell s,
int  fancy
 

N M G _ V L B L O C K _ S

Definition at line 1242 of file nmg_plot.c.

References BN_CK_VLBLOCK, bu_calloc(), bu_free(), BU_LIST_FOR, edgeuse::e_p, shell::eu_hd, shell::fu_hd, shell::lu_hd, nmgregion::m_p, model::maxindex, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_MODEL, NMG_CK_REGION, NMG_CK_SHELL, nmg_vlblock_eu(), nmg_vlblock_fu(), nmg_vlblock_lu(), nmg_vlblock_v(), shell::r_p, vertexuse::v_p, and shell::vu_p.

Referenced by nmg_pl_s(), nmg_pl_shell(), and nmg_vlblock_r().

Here is the call graph for this function:

RT_EXPORT void nmg_vlblock_r struct bn_vlblock vbp,
const struct nmgregion r,
int  fancy
 

N M G _ V L B L O C K _ R

Definition at line 1297 of file nmg_plot.c.

References BN_CK_VLBLOCK, BU_LIST_FOR, NMG_CK_REGION, nmg_vlblock_s(), and nmgregion::s_hd.

Referenced by nmg_pl_r(), and nmg_vlblock_m().

Here is the call graph for this function:

RT_EXPORT void nmg_vlblock_m struct bn_vlblock vbp,
const struct model m,
int  fancy
 

N M G _ V L B L O C K _ M

Definition at line 1313 of file nmg_plot.c.

References BN_CK_VLBLOCK, BU_LIST_FOR, NMG_CK_MODEL, nmg_vlblock_r(), and model::r_hd.

Referenced by nmg_pl_m().

Here is the call graph for this function:

RT_EXPORT void nmg_pl_edges_in_2_shells struct bn_vlblock vbp,
long *  b,
const struct edgeuse eu,
int  fancy,
const struct bn_tol tol
 

Referenced by nmg_pl_isect().

RT_EXPORT void nmg_pl_isect const char *  filename,
const struct shell s,
const struct bn_tol tol
 

N M G _ P L _ I S E C T

Called by nmg_bool.c

Definition at line 1369 of file nmg_plot.c.

References BN_CK_TOL, bu_bomb(), bu_calloc(), bu_free(), BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), loopuse::down_hd, fp, shell::fu_hd, faceuse::lu_hd, nmgregion::m_p, shell_a::max_pt, model::maxindex, shell_a::min_pt, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_CK_SHELL_A, NMG_EDGEUSE_MAGIC, nmg_pl_edges_in_2_shells(), NMG_VERTEXUSE_MAGIC, NULL, pdv_3space(), perror(), shell::r_p, rt_bomb(), rt_plot_vlblock(), rt_vlblock_free(), rt_vlblock_init(), shell::sa_p, and void().

Here is the call graph for this function:

RT_EXPORT void nmg_pl_comb_fu int  num1,
int  num2,
const struct faceuse fu1
 

N M G _ P L _ C O M B _ F U

Called from nmg_bool.c/nmg_face_combine()

Definition at line 1432 of file nmg_plot.c.

References bu_calloc(), bu_free(), bu_log(), DEBUG_FCUT, DEBUG_PL_ANIM, DEBUG_PL_SLOW, DEBUG_PLOTEM, fp, faceuse::l, bu_list::magic, model::maxindex, name, NMG_CK_MODEL, nmg_find_model(), nmg_vlblock_anim_upcall, nmg_vlblock_fu(), NULL, perror(), rt_plot_vlblock(), rt_vlblock_free(), rt_vlblock_init(), US_DELAY, and void().

Referenced by nmg_face_state_transition().

Here is the call graph for this function:

RT_EXPORT void nmg_pl_2fu const char *  str,
int  unused,
const struct faceuse fu1,
const struct faceuse fu2,
int  show_mates
 

N M G _ P L _ 2 F U

Note that 'str' is expected to contain a d to place the frame number.

Called from nmg_isect_2faces and other places.

Definition at line 1492 of file nmg_plot.c.

References bu_calloc(), bu_free(), bu_log(), DEBUG_PL_ANIM, DEBUG_PL_SLOW, DEBUG_PLOTEM, fp, faceuse::fumate_p, faceuse::l, bu_list::magic, model::maxindex, name, NMG_CK_MODEL, nmg_find_model(), nmg_vlblock_anim_upcall, nmg_vlblock_fu(), NULL, num, perror(), rt_plot_vlblock(), rt_vlblock_free(), rt_vlblock_init(), US_DELAY, and void().

Referenced by nmg_kill_snakes(), nmg_mesh_faces(), and nmg_simplify_loop().

Here is the call graph for this function:

RT_EXPORT void nmg_show_broken_classifier_stuff long *  p,
long *  classlist[4],
int  all_new,
int  fancy,
const char *  a_string
 

Referenced by nmg_show_broken_classifier_stuff(), and nmg_show_each_loop().

RT_EXPORT void nmg_face_plot const struct faceuse fu  ) 
 

N M G _ F A C E _ P L O T

Definition at line 1983 of file nmg_plot.c.

References bu_calloc(), bu_free(), bu_log(), DEBUG_PL_ANIM, DEBUG_PL_SLOW, DEBUG_PLOTEM, model::maxindex, name, NMG_CK_FACEUSE, NMG_CK_MODEL, nmg_find_model(), nmg_vlblock_anim_upcall, nmg_vlblock_fu(), NULL, perror(), rt_plot_vlblock(), rt_vlblock_free(), rt_vlblock_init(), and void().

Referenced by nmg_face_combineX(), nmg_face_next_vu_interval(), and nmg_fcut_face().

Here is the call graph for this function:

RT_EXPORT void nmg_2face_plot const struct faceuse fu1,
const struct faceuse fu2
 

N M G _ 2 F A C E _ P L O T

Just like nmg_face_plot, except it draws two faces each iteration.

Definition at line 2043 of file nmg_plot.c.

References bu_calloc(), bu_free(), bu_log(), DEBUG_PL_ANIM, DEBUG_PL_SLOW, model::maxindex, NMG_CK_FACEUSE, NMG_CK_MODEL, nmg_find_model(), nmg_vlblock_anim_upcall, nmg_vlblock_fu(), rt_vlblock_free(), rt_vlblock_init(), and void().

Referenced by nmg_face_combineX(), nmg_face_next_vu_interval(), and nmg_fcut_face().

Here is the call graph for this function:

RT_EXPORT void nmg_face_lu_plot const struct loopuse lu,
const struct vertexuse vu1,
const struct vertexuse vu2
 

N M G _ F A C E _ L U _ P L O T

Plot the loop, and a ray from vu1 to vu2.

Definition at line 2089 of file nmg_plot.c.

References bu_calloc(), bu_free(), bu_log(), vertex_g::coord, DEBUG_PLOTEM, model::maxindex, NMG_CK_LOOPUSE, NMG_CK_VERTEXUSE, nmg_find_model(), nmg_pl_lu(), NULL, pdv_3line(), perror(), pl_color(), vertexuse::v_p, vertex::vg_p, VJOIN1, and VSUB2.

Referenced by nmg_check_radial().

Here is the call graph for this function:

RT_EXPORT void nmg_plot_lu_ray const struct loopuse lu,
const struct vertexuse vu1,
const struct vertexuse vu2,
const vect_t  left
 

Referenced by nmg_face_state_transition().

RT_EXPORT void nmg_plot_ray_face const char *  fname,
point_t  pt,
const vect_t  dir,
const struct faceuse fu
 

RT_EXPORT void nmg_plot_lu_around_eu const char *  prefix,
const struct edgeuse eu,
const struct bn_tol tol
 

N M G _ P L O T _ L U _ A R O U N D _ E U

Draw and label all the loopuses gathered around this edgeuse.

Called by nmg_radial_join_eu().

Definition at line 2230 of file nmg_plot.c.

References BN_CK_TOL, bu_calloc(), bu_free(), bu_log(), edgeuse::eumate_p, edgeuse::lu_p, edgeuse::magic_p, model::maxindex, NMG_CK_EDGEUSE, NMG_CK_MODEL, nmg_find_model(), NMG_LOOPUSE_MAGIC, nmg_vlblock_around_eu(), nmg_vlblock_lu(), NULL, edgeuse::radial_p, rt_plot_vlblock(), rt_vlblock_free(), rt_vlblock_init(), edgeuse::up, and void().

Here is the call graph for this function:

RT_EXPORT int nmg_snurb_to_vlist struct bu_list vhead,
const struct face_g_snurb fg,
int  n_interior
 

N M G _ S N U R B _ T O _ V L I S T

A routine to draw the entire surface of a face_g_snurb. No handling of trimming curves is done.

nmg_hack_snurb( &n, fg ); / XXX

Definition at line 2283 of file nmg_plot.c.

References BU_CK_LIST_HEAD, face_g_snurb::ctl_points, FAST, knot_vector::k_size, knot_vector::knots, NMG_CK_FACE_G_SNURB, NMG_CK_SNURB, NULL, face_g_snurb::pt_type, RT_NURB_EXTRACT_COORDS, RT_NURB_IS_PT_RATIONAL, rt_nurb_kvgen(), rt_nurb_kvmerge(), rt_nurb_s_refine(), RT_NURB_SPLIT_COL, RT_NURB_SPLIT_ROW, face_g_snurb::s_size, face_g_snurb::u, and face_g_snurb::v.

Referenced by nmg_snurb_fu_to_vlist().

Here is the call graph for this function:

RT_EXPORT void nmg_cnurb_to_vlist struct bu_list vhead,
const struct edgeuse eu,
int  n_interior,
int  cmd
 

N M G _ C N U R B _ T O _ V L I S T

Draw interior points on a cnurb curve. The endpoints are not drawn, as those points are (should) match the vertices at the end of the edgeuse, and are handled by the caller.

Special processing is performed for the order <= 0 (linear) cnurbs.

If the curve is on a snurb face, it is in parameter space. If the curve is on a planar face, it is in XYZ space.

Definition at line 2387 of file nmg_plot.c.

References vertexuse::a, BU_CK_LIST_HEAD, bu_log(), bu_malloc(), edge_g_cnurb::c_size, edgeuse::cnurb_p, vertexuse::cnurb_p, edge_g_cnurb::ctl_points, DEBUG_BASIC, edgeuse::eumate_p, faceuse::f_p, edgeuse::g, face::g, edge_g_cnurb::k, edge_g_cnurb::l, bu_list::magic, face::magic_p, NMG_CK_CNURB, NMG_CK_EDGE_G_CNURB, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_VERTEXUSE_A_CNURB, NMG_FACE_G_PLANE_MAGIC, nmg_find_fu_of_eu(), NULL, edge_g_cnurb::order, vertexuse_a_cnurb::param, edge_g_cnurb::pt_type, RT_ADD_VLIST, RT_CNURB_MAGIC, RT_NURB_EXTRACT_COORDS, rt_nurb_gen_knot_vector(), RT_NURB_MAKE_PT_TYPE, RT_NURB_PT_NONRAT, RT_NURB_PT_UV, and edgeuse::vu_p.

Referenced by nmg_lu_to_vlist().

Here is the call graph for this function:

RT_EXPORT void rt_nurb_clean_cnurb struct edge_g_cnurb crv  ) 
 

Definition at line 158 of file nurb_util.c.

References bu_free(), edge_g_cnurb::c_size, edge_g_cnurb::ctl_points, edge_g_cnurb::k, knot_vector::knots, edge_g_cnurb::l, bu_list::magic, NMG_CK_CNURB, NULL, and edge_g_cnurb::order.

Here is the call graph for this function:

RT_EXPORT int rt_nurb_knot_index const struct knot_vector kv,
fastf_t  k_value,
int  order
 

Definition at line 262 of file nurb_knot.c.

References knot_vector::k_size, and knot_vector::knots.

Referenced by rt_nurb_c_eval(), and rt_nurb_s_eval().

RT_EXPORT int nmg_uv_in_lu const fastf_t  u,
const fastf_t  v,
const struct loopuse lu
 

Definition at line 522 of file nurb_trim.c.

References vertexuse::a, bu_bomb(), BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), edgeuse::cnurb_p, vertexuse::cnurb_p, loopuse::down_hd, edgeuse::eumate_p, edgeuse::g, edgeuse::magic_p, vertexuse::magic_p, NMG_CK_LOOPUSE, NMG_EDGE_G_CNURB_MAGIC, NMG_EDGEUSE_MAGIC, NMG_VERTEXUSE_A_CNURB_MAGIC, edge_g_cnurb::order, vertexuse_a_cnurb::param, edge_g_cnurb::pt_type, RT_NURB_IS_PT_RATIONAL, rt_uv_in_trim(), slope(), VMOVE, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT int nmg_mesh_two_faces struct faceuse fu1,
struct faceuse fu2,
const struct bn_tol tol
 

Referenced by nmg_mesh_face_shell(), nmg_mesh_faces(), and nmg_mesh_shell_shell().

RT_EXPORT void nmg_radial_join_eu struct edgeuse eu1,
struct edgeuse eu2,
const struct bn_tol tol
 

N M G _ R A D I A L _ J O I N _ E U

Make all the edgeuses around eu2's edge to refer to eu1's edge, taking care to organize them into the proper angular orientation, so that the attached faces are correctly arranged radially around the edge.

This depends on both edges being part of face loops, with vertex and face geometry already associated.

The two edgeuses being joined might well be from separate shells, so the issue of preserving (simple) faceuse orientation parity (SAME, OPPOSITE, OPPOSITE, SAME, ...) can't be used here -- that only applies to faceuses from the same shell.

Some of the edgeuses around both edges may be wires.

Call to nmg_check_radial at end has been deleted. Note that after two radial EU's have been joined a third cannot be joined to them without creating unclosed space that nmg_check_radial will find.

Definition at line 215 of file nmg_mesh.c.

References BN_CK_TOL, bn_pt3_pt3_equal(), bn_radtodeg, bn_twopi, bu_log(), vertex_g::coord, debug, DEBUG_MESH, DEBUG_MESH_EU, edgeuse::e_p, edgeuse::eumate_p, NEAR_ZERO, NMG_ARE_EUS_ADJACENT, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, nmg_eu_2vecs_perp(), nmg_euprint(), NMG_FACE_G_SNURB_MAGIC, nmg_find_fu_of_eu(), nmg_is_angle_in_wedge(), nmg_measure_fu_angle(), nmg_pick_best_edge_g(), nmg_pr_fu_around_eu_vecs(), nmg_radial_join_eu_NEW(), nmg_two_face_fuse(), NULL, PLPRINT, edgeuse::radial_p, rt_bomb(), V3ARGS, vertexuse::v_p, vertex::vg_p, and edgeuse::vu_p.

Referenced by nmg_ebreaker(), nmg_face_state_transition(), nmg_find_eg_between_2fg(), nmg_glue_face_in_shell(), nmg_isect_edge2p_edge2p(), nmg_mesh_two_faces(), and nmg_model_edge_fuse().

Here is the call graph for this function:

RT_EXPORT void nmg_mesh_faces struct faceuse fu1,
struct faceuse fu2,
const struct bn_tol tol
 

N M G _ M E S H _ F A C E S

Scan through all the edges of fu1 and fu2, ensuring that all edges involving the same vertex pair are indeed shared. This means worrying about merging ("meshing") all the faces in the proper radial orientation around the edge. XXX probably should return(count);

Definition at line 587 of file nmg_mesh.c.

References BN_CK_TOL, bu_log(), DEBUG_PLOTEM, NMG_CK_FACEUSE, nmg_mesh_two_faces(), and nmg_pl_2fu().

Here is the call graph for this function:

RT_EXPORT int nmg_mesh_face_shell struct faceuse fu1,
struct shell s,
const struct bn_tol tol
 

N M G _ M E S H _ F A C E _ S H E L L

The return is the number of edges meshed.

Definition at line 624 of file nmg_mesh.c.

References BN_CK_TOL, BU_LIST_FOR, shell::fu_hd, NMG_CK_FACEUSE, NMG_CK_SHELL, and nmg_mesh_two_faces().

Here is the call graph for this function:

RT_EXPORT int nmg_mesh_shell_shell struct shell s1,
struct shell s2,
const struct bn_tol tol
 

N M G _ M E S H _ S H E L L _ S H E L L

Mesh every edge in shell 1 with every edge in shell 2. The return is the number of edges meshed.

Does not use nmg_mesh_face_shell() to keep face/self meshing to the absolute minimum necessary.

Definition at line 653 of file nmg_mesh.c.

References BN_CK_TOL, BU_LIST_FOR, NMG_CK_FACEUSE, NMG_CK_SHELL, nmg_mesh_two_faces(), nmg_region_v_unique(), s1, and s2.

Here is the call graph for this function:

RT_EXPORT struct nmgregion* nmg_do_bool struct nmgregion s1,
struct nmgregion s2,
const int  oper,
const struct bn_tol tol
 

Definition at line 1090 of file nmg_bool.c.

References BU_LIST_FIRST, BU_LIST_NON_EMPTY, NMG_CK_REGION, NMG_CK_SHELL, nmg_kr(), nmg_ks(), nmg_region_v_unique(), nmg_shell_is_empty(), shell::r_p, rt_bomb(), and nmgregion::s_hd.

Referenced by nmg_booltree_evaluate().

Here is the call graph for this function:

RT_EXPORT int nmg_two_region_vertex_fuse struct nmgregion r1,
struct nmgregion r2,
const struct bn_tol tol
 

RT_EXPORT union tree* nmg_booltree_leaf_tess struct db_tree_state tsp,
struct db_full_path pathp,
struct rt_db_internal ip,
genptr_t  client_data
 

N M G _ B O O L T R E E _ L E A F _ T E S S

Called from db_walk_tree() each time a tree leaf is encountered. The primitive solid, in external format, is provided in 'ep', and the type of that solid (e.g. ID_ELL) is in 'id'. The full tree state including the accumulated transformation matrix and the current tolerancing is in 'tsp', and the full path from root to leaf is in 'pathp'.

Import the solid, tessellate it into an NMG, stash a pointer to the tessellation in a new tree structure (union), and return a pointer to that.

Usually given as an argument to, and called from db_walk_tree().

This routine must be prepared to run in parallel.

Definition at line 1151 of file nmg_bool.c.

References BN_CK_TOL, bu_log(), directory::d_namep, DB_FULL_PATH_CUR_DIR, rt_db_internal::idb_meth, NMG_CK_MODEL, nmg_mm(), RT_CK_DB_INTERNAL, RT_CK_DIR, RT_CK_FULL_PATH, RT_CK_RESOURCE, RT_CK_TESS_TOL, TREE_NULL, db_tree_state::ts_m, db_tree_state::ts_resp, db_tree_state::ts_tol, and db_tree_state::ts_ttol.

Referenced by wdb_facetize_cmd().

Here is the call graph for this function:

RT_EXPORT union tree* nmg_booltree_leaf_tnurb struct db_tree_state tsp,
struct db_full_path pathp,
struct rt_db_internal ip,
genptr_t  client_data
 

N M G _ B O O L T R E E _ L E A F _ T N U R B

Called from db_walk_tree() each time a tree leaf is encountered. The primitive solid, in external format, is provided in 'ep', and the type of that solid (e.g. ID_ELL) is in 'id'. The full tree state including the accumulated transformation matrix and the current tolerancing is in 'tsp', and the full path from root to leaf is in 'pathp'.

Import the solid, convert it into an NMG using t-NURBS, stash a pointer in a new tree structure (union), and return a pointer to that.

Usually given as an argument to, and called from db_walk_tree().

This routine must be prepared to run in parallel.

Definition at line 1212 of file nmg_bool.c.

References BN_CK_TOL, bu_log(), directory::d_namep, DB_FULL_PATH_CUR_DIR, rt_db_internal::idb_meth, NMG_CK_MODEL, RT_CK_DB_INTERNAL, RT_CK_DIR, RT_CK_FULL_PATH, RT_CK_RESOURCE, RT_CK_TESS_TOL, TREE_NULL, db_tree_state::ts_m, db_tree_state::ts_resp, db_tree_state::ts_tol, and db_tree_state::ts_ttol.

Referenced by wdb_facetize_cmd().

Here is the call graph for this function:

RT_EXPORT union tree* nmg_booltree_evaluate union tree tp,
const struct bn_tol tol,
struct resource resp
 

Referenced by nmg_boolean(), and nmg_booltree_evaluate().

RT_EXPORT int nmg_boolean union tree tp,
struct model m,
const struct bn_tol tol,
struct resource resp
 

N M G _ B O O L E A N

This is the main application interface to the NMG Boolean Evaluator.

This routine has the opportunity to do "once only" operations before and after the boolean tree is walked.

Returns - 0 Boolean went OK. Result region is in tp->tr_d.td_r !0 Boolean produced null result.

The caller is responsible for freeing 'tp' in either case, typically with db_free_tree(tp);

Definition at line 1417 of file nmg_bool.c.

References BN_CK_TOL, bu_log(), DEBUG_BASIC, DEBUG_BOOL, nmgregion::m_p, nmg_booltree_evaluate(), NMG_CK_MODEL, nmg_merge_models(), nmg_model_fuse(), OP_NMG_TESS, result, rt_bomb(), RT_CK_RESOURCE, RT_CK_TREE, rt_pr_tree(), tree::tree_nmgregion::td_r, tree::tr_d, and void().

Referenced by wdb_facetize_cmd().

Here is the call graph for this function:

RT_EXPORT void nmg_class_shells struct shell sA,
struct shell sB,
long *  classlist[4],
const struct bn_tol tol
 

RT_EXPORT int nmg_ck_vu_ptbl struct bu_ptbl p,
struct faceuse fu
 

N M G _ C K _ V U _ P T B L

As an automatic check for the intersector failing to find all intersections, check all the vertices on the intersection line. For each one, find all the other uses in this faceuse, and if they are not also listed on the line, they were overlooked.

This does not catch _all_ possible mistakes, but does catch some.

Definition at line 338 of file nmg_fcut.c.

References BU_CK_PTBL, bu_identify_magic(), BU_LIST_FOR, bu_log(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_ins(), bu_ptbl_locate(), vertexuse::l, bu_list::magic, vertexuse::magic_p, NMG_CK_FACEUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, nmg_find_fu_of_vu(), nmg_pr_ptbl(), NULL, rt_bomb(), top(), vertexuse::up, vertexuse::v_p, void(), and vertex::vu_hd.

Here is the call graph for this function:

RT_EXPORT double nmg_vu_angle_measure struct vertexuse vu,
vect_t  x_dir,
vect_t  y_dir,
int  assessment,
int  in
 

Referenced by nmg_face_coincident_vu_sort().

RT_EXPORT int nmg_wedge_class int  ass,
double  a,
double  b
 

N M G _ W E D G E _ C L A S S

0 degrees is to the rear (ON_REV), 90 degrees is to the RIGHT, 180 is ON_FORW, 270 is to the LEFT. Determine if the given wedge is entirely to the left or right of the ray, or if it crosses.

"halfway X" (ha, hb) have these properties: < 0 ( ==> X < 180 ) RIGHT > 0 ( ==> X > 180 ) LEFT ==0 ( ==> X == 180 ) ON_FORW

Returns - WEDGE_LEFT WEDGE_CROSSING WEDGE_RIGHT WEDGE_ON

Definition at line 869 of file nmg_fcut.c.

References bu_log(), DEBUG_VU_SORT, NEAR_ZERO, NMG_E_ASSESSMENT_ON_FORW, NMG_E_ASSESSMENT_ON_REV, NMG_V_COMB, WEDGE_CROSS, WEDGE_LEFT, WEDGE_ON, WEDGE_RIGHT, and WEDGECLASS2STR.

Referenced by nmg_face_coincident_vu_sort().

Here is the call graph for this function:

RT_EXPORT void nmg_sanitize_fu struct faceuse fu  ) 
 

N M G _ S A N I T I Z E _ F U

Eliminate any OT_BOOLPLACE self-loops that remain behind in this face.

Definition at line 1924 of file nmg_fcut.c.

References BU_LIST_FIRST, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, faceuse::lu_hd, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, nmg_klu(), loopuse::orientation, OT_BOOLPLACE, and rt_bomb().

Here is the call graph for this function:

RT_EXPORT void nmg_unlist_v struct bu_ptbl b,
fastf_t mag,
struct vertex v
 

N M G _ U N L I S T _ V

Definition at line 3334 of file nmg_fcut.c.

References BU_CK_PTBL, BU_PTBL_END, BU_PTBL_GET, MAX_FASTF, NMG_CK_VERTEX, and vertexuse::v_p.

Referenced by nmg_onon_fix().

RT_EXPORT 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,
const struct bn_tol tol
 

RT_EXPORT void nmg_fcut_face_2d struct bu_ptbl vu_list,
fastf_t mag,
struct faceuse fu1,
struct faceuse fu2,
struct bn_tol tol
 

Definition at line 3705 of file nmg_fcut.c.

References BN_CK_TOL, BU_CK_PTBL, NMG_CK_FACEUSE, nmg_face_rs_init(), nmg_fcut_face(), VSET, and VSETALL.

Here is the call graph for this function:

RT_EXPORT int nmg_insert_vu_if_on_edge struct vertexuse vu1,
struct vertexuse vu2,
struct edgeuse new_eu,
struct bn_tol tol
 

N M G _ I N S E R T _ V U _ I F _ O N _ E D G E

This code checks if the vertex from a loop of a single vertex lies on an edge containing vu2. If so, the edge is split, vu1 is inserted, the loop containing vu1 is killed, and the newly created edgeuse is returned in "new_eu".

returns: 0 - did nothing 1 - inserted vu1 and created a new edge

Definition at line 3870 of file nmg_fcut.c.

References bn_3pts_collinear(), BN_CK_TOL, BU_LIST_PNEXT_CIRC, BU_LIST_PPREV_CIRC, bu_log(), vertex_g::coord, bn_tol::dist_sq, vertexuse::eu_p, vertexuse::lu_p, vertexuse::magic_p, MAGSQ, NMG_CK_VERTEXUSE, nmg_ebreaker(), NMG_EDGEUSE_MAGIC, nmg_klu(), NMG_LOOPUSE_MAGIC, rt_bomb(), vertexuse::up, V3ARGS, vertexuse::v_p, VDOT, vertex::vg_p, void(), VSUB2, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT void nmg_ck_lu_orientation struct loopuse lu,
const struct bn_tol tolp
 

N M G _ C K _ L U _ O R I E N T A T I O N

Make sure that the lu and fu orientation flags are consistent with the geometric arrangement of the vertices and the faceuse normal.

Definition at line 103 of file nmg_eval.c.

References bu_log(), loopuse::fu_p, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_GET_FU_PLANE, nmg_loop_plane_newell(), nmg_orientation(), faceuse::orientation, loopuse::orientation, rt_bomb(), loopuse::up, and VDOT.

Here is the call graph for this function:

RT_EXPORT const char* nmg_class_name int  class  ) 
 

N M G _ C L A S S _ N A M E

Convert an NMG_CLASS_xxx token into a string name.

Definition at line 141 of file nmg_eval.c.

References NMG_CLASS_BAD, and NMG_CLASS_Unknown.

Referenced by make_near_list(), nmg_class_lu_fu(), nmg_class_pt_euvu(), nmg_class_pt_s(), nmg_class_ray_vs_shell(), nmg_classify_lu_lu(), nmg_eval_action(), nmg_is_crack_outie(), and nmg_reclassify_lu_eu().

RT_EXPORT void nmg_evaluate_boolean struct shell sA,
struct shell sB,
int  op,
long *  classlist[8],
const struct bn_tol tol
 

RT_EXPORT void nmg_rt_print_hitlist struct hitmiss hl  ) 
 

Definition at line 249 of file nmg_rt_isect.c.

References BU_LIST_FOR, bu_log(), hitmiss::l, and nmg_rt_print_hitmiss().

Referenced by nmg_class_ray_vs_shell(), and nmg_isect_ray_model().

Here is the call graph for this function:

RT_EXPORT void nmg_rt_print_hitmiss struct hitmiss a_hit  ) 
 

Definition at line 227 of file nmg_rt_isect.c.

References bu_identify_magic(), bu_log(), hitmiss::hit, hit::hit_dist, hit::hit_point, hit::hit_private, hitmiss::in_out, hitmiss::inbound_norm, NMG_CK_HITMISS, NMG_HITMISS_SEG_IN, NMG_HITMISS_SEG_OUT, nmg_rt_inout_str(), hitmiss::outbound_norm, hitmiss::start_stop, and VPRINT.

Referenced by nmg_class_ray_vs_shell(), nmg_ray_segs(), and nmg_rt_print_hitlist().

Here is the call graph for this function:

RT_EXPORT int nmg_class_ray_vs_shell struct xray rp,
const struct shell s,
const int  in_or_out_only,
const struct bn_tol tol
 

N M G _ R A Y _ I S E C T _ S H E L L

Intended as a support routine for nmg_class_pt_s() in nmg_class.c

Intersect a ray with a shell, and return whether the ray start point is inside or outside or ON the shell. Count the number of crossings (hit points) along the ray, both in the negative and positive directions. If an even number, point is outside, if an odd number point is inside. If the negative-going and positive-going assessments don't agree, this is a problem.

If "in_or_out_only" is non-zero, then we will not look for a classification of "ON" the shell.

The caller must be prepared for a return of NMG_CLASS_Unknown, in which case it should pick a less difficult ray direction to fire and try again.

Returns - NMG_CLASS_Unknown Can't tell NMG_CLASS_xxx Classification of the pt w.r.t. the shell.

Definition at line 2818 of file nmg_rt_isect.c.

References application::a_resource, ray_data::ap, BN_CK_TOL, bu_calloc(), bu_free(), BU_LIST_DEQUEUE, BU_LIST_FOR, BU_LIST_INIT, BU_LIST_UNINITIALIZED, BU_LIST_WHILE, bu_log(), ray_data::classifying_ray, DEBUG_CLASSIFY, DEBUG_PLOTEM, shell::fu_hd, hitmiss::hit, hit::hit_dist, ray_data::hitmiss, INFINITY, shell::l, hitmiss::l, bu_list::magic, ray_data::magic, ray_data::manifolds, model::maxindex, NEAR_ZERO, NMG_CK_HITMISS, NMG_CK_SHELL, nmg_class_name(), NMG_CLASS_Unknown, nmg_find_model(), NMG_FREE_HITLIST, nmg_manifolds(), NMG_MANIFOLDS, nmg_pl_hitmiss_list(), NMG_RAY_DATA_MAGIC, nmg_rt_print_hitlist(), nmg_rt_print_hitmiss(), NULL, num, faceuse::orientation, OT_SAME, xray::r_dir, xray::r_pt, ray_data::rd_hit, ray_data::rd_invdir, ray_data::rd_m, ray_data::rd_miss, resource::re_magic, resource::re_nmgfree, RESOURCE_MAGIC, ray_data::rp, RT_APPLICATION_INIT, rt_bomb(), rt_uniresource, ray_data::seghead, SQRT_SMALL_FASTF, ray_data::stp, ray_data::tol, V3ARGS, VUNITIZE, X, Y, and Z.

Referenced by nmg_class_pt_s().

Here is the call graph for this function:

RT_EXPORT void nmg_isect_ray_model struct ray_data rd  ) 
 

N M G _ I S E C T _ R A Y _ M O D E L

Definition at line 2507 of file nmg_rt_isect.c.

References BU_LIST_FOR, BU_LIST_IS_EMPTY, bu_log(), nmgregion_a::max_pt, nmgregion_a::min_pt, NMG_CK_HITMISS_LISTS, NMG_CK_MODEL, NMG_CK_REGION, NMG_CK_REGION_A, nmg_rt_print_hitlist(), xray::r_dir, model::r_hd, shell::r_p, xray::r_pt, nmgregion::ra_p, ray_data::rd_hit, ray_data::rd_invdir, ray_data::rd_m, ray_data::rp, rt_in_rpp(), and nmgregion::s_hd.

Referenced by rt_nmg_shot().

Here is the call graph for this function:

RT_EXPORT void nmg_vvg const struct vertex_g vg  ) 
 

N M G _ V V G

Verify vertex geometry

Definition at line 70 of file nmg_ck.c.

References NMG_CK_VERTEX_G.

Referenced by nmg_vvertex().

RT_EXPORT void nmg_vvertex const struct vertex v,
const struct vertexuse vup
 

N M G _ V V E R T E X

Verify a vertex

Definition at line 81 of file nmg_ck.c.

References BU_LIST_FOR, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, nmg_vvg(), rt_bomb(), vertexuse::v_p, vertex::vg_p, and vertex::vu_hd.

Referenced by nmg_vvu().

Here is the call graph for this function:

RT_EXPORT void nmg_vvua const long *  vua  ) 
 

Referenced by nmg_vvu().

RT_EXPORT void nmg_vvu const struct vertexuse vu,
const long *  up_magic_p
 

Referenced by nmg_veu(), and nmg_vlu().

RT_EXPORT void nmg_veg const long *  eg  ) 
 

Referenced by nmg_veu().

RT_EXPORT void nmg_vedge const struct edge e,
const struct edgeuse eup
 

N M G _ V E D G E

Verify edge

Definition at line 182 of file nmg_ck.c.

References bu_log(), edge::eu_p, edgeuse::eumate_p, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, edgeuse::radial_p, rt_bomb(), vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_veu().

Here is the call graph for this function:

RT_EXPORT void nmg_veu const struct bu_list hp,
const long *  up_magic_p
 

Referenced by nmg_vlu(), and nmg_vshell().

RT_EXPORT void nmg_vlg const struct loop_g lg  ) 
 

N M G _ V L G

Verify loop geometry

Definition at line 381 of file nmg_ck.c.

References ELEMENTS_PER_PT, loop_g::max_pt, loop_g::min_pt, NMG_CK_LOOP_G, and rt_bomb().

Referenced by nmg_vloop().

Here is the call graph for this function:

RT_EXPORT void nmg_vloop const struct loop l,
const struct loopuse lup
 

N M G _ V L O O P

Verify loop

Definition at line 398 of file nmg_ck.c.

References edgeuse::l, loopuse::l, loopuse::lumate_p, NMG_CK_LOOP, NMG_CK_LOOPUSE, nmg_vlg(), and rt_bomb().

Referenced by nmg_vlu().

Here is the call graph for this function:

RT_EXPORT void nmg_vlu const struct bu_list hp,
const long *  up
 

Referenced by nmg_vfu(), and nmg_vshell().

RT_EXPORT void nmg_vfg const struct face_g_plane fg  ) 
 

N M G _ V F G

Verify face geometry

Definition at line 487 of file nmg_ck.c.

References bu_log(), H, face_g_plane::magic, face_g_plane::N, NMG_CK_FACE_G_EITHER, NMG_FACE_G_PLANE_MAGIC, NMG_FACE_G_SNURB_MAGIC, rt_bomb(), X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT void nmg_vface const struct face f,
const struct faceuse fup
 

N M G _ V F A C E

Verify face

Definition at line 512 of file nmg_ck.c.

References bu_log(), ELEMENTS_PER_PT, face::fu_p, face::max_pt, face::min_pt, NMG_CK_FACE, NMG_CK_FACEUSE, rt_bomb(), and V3ARGS.

Referenced by nmg_vfu().

Here is the call graph for this function:

RT_EXPORT void nmg_vfu const struct bu_list hp,
const struct shell s
 

N M G _ V F U

Validate a list of faceuses

Definition at line 545 of file nmg_ck.c.

References BU_LIST_FOR, bu_log(), bu_list::magic, NMG_CK_FACE, NMG_CK_FACEUSE, NMG_CK_SHELL, NMG_FACEUSE_MAGIC, nmg_vface(), nmg_vlu(), OT_NONE, OT_OPPOSITE, OT_SAME, OT_UNSPEC, and rt_bomb().

Referenced by nmg_face_state_transition(), and nmg_vshell().

Here is the call graph for this function:

RT_EXPORT void nmg_vshell const struct bu_list hp,
const struct nmgregion r
 

N M G _ V S H E L L

validate a list of shells and all elements under them

Definition at line 600 of file nmg_ck.c.

References bu_list::back, BU_LIST_FOR, BU_LIST_NON_EMPTY, bu_log(), bu_list::forw, bu_list::magic, NMG_CK_REGION, NMG_CK_SHELL, NMG_CK_SHELL_A, nmg_veu(), nmg_vfu(), nmg_vlu(), and rt_bomb().

Referenced by nmg_booltree_evaluate(), nmg_crackshells(), nmg_js(), and nmg_vregion().

Here is the call graph for this function:

RT_EXPORT void nmg_vregion const struct bu_list hp,
const struct model m
 

N M G _ V R E G I O N

validate a list of nmgregions and all elements under them

Definition at line 667 of file nmg_ck.c.

References BU_LIST_FOR, BU_LIST_PNEXT_PLAST, bu_log(), NMG_CK_REGION, NMG_CK_REGION_A, nmg_vshell(), and rt_bomb().

Referenced by nmg_vmodel().

Here is the call graph for this function:

RT_EXPORT void nmg_vmodel const struct model m  ) 
 

N M G _ V M O D E L

validate an NMG model and all elements in it.

Definition at line 696 of file nmg_ck.c.

References NMG_CK_MODEL, nmg_vregion(), and model::r_hd.

Referenced by nmg_hollow_shell(), nmg_isect_shell_self(), nmg_stash_model_to_file(), nmg_triangulate_model(), rt_nmg_export(), and rt_nmg_import().

Here is the call graph for this function:

RT_EXPORT void nmg_ck_e const struct edgeuse eu,
const struct edge e,
const char *  str
 

N M G _ C K _ E

Definition at line 713 of file nmg_ck.c.

References bu_calloc(), bu_free(), edgeuse::eumate_p, NMG_CK_EDGE, NMG_CK_EDGEUSE, edgeuse::radial_p, rt_bomb(), and void().

Referenced by nmg_ck_eu().

Here is the call graph for this function:

RT_EXPORT void nmg_ck_vu const long *  parent,
const struct vertexuse vu,
const char *  str
 

Referenced by nmg_ck_eu(), and nmg_ck_lu().

RT_EXPORT void nmg_ck_eu const long *  parent,
const struct edgeuse eu,
const char *  str
 

Referenced by nmg_ck_lu().

RT_EXPORT void nmg_ck_lg const struct loop l,
const struct loop_g lg,
const char *  str
 

N M G _ C K _ L G

Definition at line 825 of file nmg_ck.c.

References bu_calloc(), bu_free(), edgeuse::l, NMG_CK_LOOP, NMG_CK_LOOP_G, and void().

Referenced by nmg_ck_l().

Here is the call graph for this function:

RT_EXPORT void nmg_ck_l const struct loopuse lu,
const struct loop l,
const char *  str
 

N M G _ C K _ L

Definition at line 841 of file nmg_ck.c.

References bu_calloc(), bu_free(), edgeuse::l, loopuse::lumate_p, nmg_ck_lg(), NMG_CK_LOOP, NMG_CK_LOOPUSE, rt_bomb(), and void().

Referenced by nmg_ck_lu().

Here is the call graph for this function:

RT_EXPORT void nmg_ck_lu const long *  parent,
const struct loopuse lu,
const char *  str
 

Referenced by nmg_ck_fu().

RT_EXPORT void nmg_ck_fg const struct face f,
const struct face_g_plane fg,
const char *  str
 

N M G _ C K _ F G

Definition at line 921 of file nmg_ck.c.

References bu_calloc(), bu_free(), H, face_g_plane::N, NMG_CK_FACE_G_PLANE, rt_bomb(), void(), X, Y, and Z.

Referenced by nmg_ck_f().

Here is the call graph for this function:

RT_EXPORT void nmg_ck_f const struct faceuse fu,
const struct face f,
const char *  str
 

N M G _ C K _ F

Definition at line 942 of file nmg_ck.c.

References bu_calloc(), bu_free(), faceuse::fumate_p, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, nmg_ck_fg(), rt_bomb(), and void().

Referenced by nmg_ck_fu().

Here is the call graph for this function:

RT_EXPORT void nmg_ck_fu const struct shell s,
const struct faceuse fu,
const char *  str
 

N M G _ C K _ F U

Definition at line 963 of file nmg_ck.c.

References bu_calloc(), bu_free(), BU_LIST_FOR, BU_LIST_PLAST_PNEXT, BU_LIST_PNEXT_PLAST, vertexuse::l, nmg_ck_f(), NMG_CK_FACEUSE, NMG_CK_LOOPUSE, nmg_ck_lu(), NMG_CK_SHELL, rt_bomb(), and void().

Here is the call graph for this function:

RT_EXPORT int nmg_ck_eg_verts const struct edge_g_lseg eg,
const struct bn_tol tol
 

N M G _ C K _ E G _ V E R T S

Check if vertices from edgeuses using this edge geometry actually lie on the edge geomatry.

"eg" must be LSEG returns number of vertices not on edge line

Definition at line 1014 of file nmg_ck.c.

References BN_CK_TOL, BU_LIST_FOR, BU_LIST_MAIN_PTR, bu_log(), vertex_g::coord, bn_tol::dist_sq, edge_g_lseg::e_dir, edge_g_lseg::e_pt, edge_g_lseg::eu_hd2, edgeuse::eumate_p, MAGSQ, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, V3ARGS, vertexuse::v_p, VDOT, vertex::vg_p, VJOIN1, VMOVE, VSUB2, edgeuse::vu_p, and VUNITIZE.

Referenced by nmg_ck_geometry().

Here is the call graph for this function:

RT_EXPORT int nmg_ck_geometry const struct model m,
const struct bn_tol tol
 

N M G _ C K _ G E O M E T R Y

Check that vertices actually lie on geometry for faces and edges

returns number of vertices that do not lie on geometry

Definition at line 1071 of file nmg_ck.c.

References BN_CK_TOL, BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), model::magic, NMG_CK_EDGE_G_LSEG, nmg_ck_eg_verts(), NMG_CK_MODEL, NMG_EDGE_G_CNURB_MAGIC, NMG_EDGE_G_LSEG_MAGIC, and nmg_edge_g_tabulate().

Here is the call graph for this function:

RT_EXPORT int nmg_ck_face_worthless_edges const struct faceuse fu  ) 
 

N M G _ C K _ F A C E _ W O R T H L E S S _ E D G E S

Search for null ("worthless") edges in a face. Such edges are legitimate to have, but can be troublesome for the boolean routines.

Often used to see if breaking an edge at a given vertex results in a null edge being created.

Definition at line 1133 of file nmg_ck.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, BU_LIST_PNEXT_CIRC, bu_log(), loopuse::down_hd, edgeuse::eumate_p, faceuse::lu_hd, NMG_CK_LOOPUSE, nmg_pr_eu(), NMG_VERTEXUSE_MAGIC, NULL, rt_bomb(), vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_isect_line2_edge2p().

Here is the call graph for this function:

RT_EXPORT void nmg_ck_lueu const struct loopuse cklu,
const char *  s
 

N M G _ C K _ L U E U

check all the edgeuses of a loopuse to make sure these children know who thier parent really is.

Definition at line 1174 of file nmg_ck.c.

References bu_list::back, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), loopuse::down_hd, bu_list::forw, edgeuse::l, edgeuse::lu_p, loopuse::lumate_p, NMG_CK_EDGEUSE, nmg_pr_lu(), NMG_VERTEXUSE_MAGIC, NULL, rt_bomb(), and edgeuse::up.

Here is the call graph for this function:

RT_EXPORT int nmg_check_radial const struct edgeuse eu,
const struct bn_tol tol
 

N M G _ C H E C K _ R A D I A L

check to see if all radial uses of an edge (within a shell) are properly oriented with respect to each other. NOTE that ONLY edgeuses belonging to the shell of eu are checked.

Can't check faceuse orientation parity for things from more than one shell; parity is conserved only within faces from a single shell.

XXX Added code to skip dangling faces (needs to be checked a little more) - JRA

XXX I think that if dangling faces are to be processed correctly, XXX the caller should pass in a table of dangling faces. -Mike XXX I've # if'ed that check out, for now.

Return 0 OK 1 bad edgeuse mate 2 unclosed space

Definition at line 1249 of file nmg_ck.c.

References BN_CK_TOL, bu_log(), DEBUG_BASIC, DEBUG_PLOTEM, edgeuse::eumate_p, loopuse::fu_p, edgeuse::lu_p, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, nmg_dangling_face(), nmg_eu_radial_check(), nmg_face_lu_plot(), nmg_find_fu_of_eu(), nmg_find_model(), nmg_find_s_of_eu(), nmg_orientation(), nmg_pr_fu_around_eu(), nmg_stash_model_to_file(), NULL, num, edgeuse::orientation, edgeuse::radial_p, rt_bomb(), edgeuse::up, loopuse::up, and edgeuse::vu_p.

Referenced by nmg_ck_closed_surf().

Here is the call graph for this function:

RT_EXPORT int nmg_eu_2s_orient_bad const struct edgeuse eu,
const struct shell s1,
const struct shell s2,
const struct bn_tol tol
 

N M G _ E U _ 2 S _ O R I E N T _ B A D

Given an edgeuse, check that the proper orientation "parity" of same/opposite/opposite/same is preserved, for all non-wire edgeuses within shell s1. If s2 is non-null, then ensure that the parity of all edgeuses in BOTH s1 and s2 are correct, and mutually compatible.

This routine does not care if a face is "dangling" or not.

If the edgeuse specified is a wire edgeuse, skip forward to a non-wire.

Returns - 0 OK !0 Bad orientation parity.

Definition at line 1377 of file nmg_ck.c.

References BN_CK_TOL, edgeuse::eumate_p, NMG_CK_EDGEUSE, NMG_CK_SHELL, nmg_find_fu_of_eu(), edgeuse::radial_p, s1, s2, and faceuse::s_p.

Here is the call graph for this function:

RT_EXPORT int nmg_ck_closed_surf const struct shell s,
const struct bn_tol tol
 

N M G _ C K _ C L O S E D _ S U R F

Verify that shell is closed. Do this by verifying that it is not possible to get from outside to inside the solid by crossing any face edge.

Returns - 0 OK !0 Problem.

Definition at line 1490 of file nmg_ck.c.

References BN_CK_TOL, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), loopuse::down_hd, shell::fu_hd, faceuse::lu_hd, nmg_check_radial(), NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, NMG_VERTEXUSE_MAGIC, status, and vertexuse::v_p.

Referenced by nmg_ck_closed_region().

Here is the call graph for this function:

RT_EXPORT int nmg_ck_closed_region const struct nmgregion r,
const struct bn_tol tol
 

N M G _ C K _ C L O S E D _ R E G I O N

Check all the shells in a region for being closed.

Returns - 0 OK !0 status code from nmg_check_radial()

Definition at line 1536 of file nmg_ck.c.

References BN_CK_TOL, BU_LIST_FOR, nmg_ck_closed_surf(), NMG_CK_REGION, and nmgregion::s_hd.

Referenced by nmg_booltree_evaluate().

Here is the call graph for this function:

RT_EXPORT void nmg_ck_v_in_2fus const struct vertex vp,
const struct faceuse fu1,
const struct faceuse fu2,
const struct bn_tol tol
 

N M G _ C K _ V _ I N _ 2 F U S

accepts a vertex pointer, two faceuses, and a tolerance. Checks if the vertex is in both faceuses (topologically and geometrically within tolerance of plane).

Calls rt_bomb if vertex is not in the faceuses topology or out of tolerance of either face.

Definition at line 1562 of file nmg_ck.c.

References BN_CK_TOL, BU_LIST_FOR, bu_vls_addr(), bu_vls_init(), bu_vls_printf(), vertex_g::coord, bn_tol::dist, DIST_PT_PLANE, NEAR_ZERO, NMG_CK_FACEUSE, NMG_CK_VERTEX, nmg_find_fu_of_vu(), NMG_GET_FU_PLANE, rt_bomb(), V3ARGS, vertex::vg_p, and vertex::vu_hd.

Referenced by nmg_enlist_one_vu(), and nmg_enlist_vu().

Here is the call graph for this function:

RT_EXPORT void nmg_ck_vs_in_region const struct nmgregion r,
const struct bn_tol tol
 

Definition at line 1676 of file nmg_ck.c.

References BN_CK_TOL, bu_calloc(), bu_free(), bu_ptbl_free(), bu_ptbl_init(), nmgregion::l, nmgregion::m_p, bu_list::magic, model::maxindex, NMG_CK_MODEL, NMG_CK_REGION, nmg_visit(), NULL, v_ck_state::tabl, v_ck_state::tol, v_ck_state::visited, and void().

Referenced by nmg_crackshells(), and rt_nmg_prep().

Here is the call graph for this function:

RT_EXPORT struct vertexuse* nmg_make_dualvu struct vertex v,
struct faceuse fu,
const struct bn_tol tol
 

Definition at line 105 of file nmg_inter.c.

References BN_CK_TOL, bn_dist_pt3_lseg3(), BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), vertex_g::coord, DEBUG_POLYSECT, loopuse::down_hd, edgeuse::eumate_p, faceuse::l, loopuse::l_p, faceuse::lu_hd, bu_list::magic, NMG_CK_FACEUSE, NMG_CK_VERTEX, NMG_EDGEUSE_MAGIC, nmg_esplit(), nmg_find_v_in_face(), nmg_loop_g(), nmg_mlv(), NULL, OT_BOOLPLACE, V3ARGS, vertexuse::v_p, vertex::vg_p, and edgeuse::vu_p.

Referenced by nmg_enlist_vu(), and nmg_isect_eu_fu().

Here is the call graph for this function:

RT_EXPORT struct vertexuse* nmg_enlist_vu struct nmg_inter_struct is,
const struct vertexuse vu,
struct vertexuse dualvu,
fastf_t  dist
 

N M G _ E N L I S T _ V U

Given a vu which represents a point of intersection between shells s1 and s2, insert it and it's dual into lists l1 and l2. First, determine whether the vu came from s1 or s2, and insert in the corresponding list.

Second, try and find a dual of that vertex in the other shell's faceuse (fu1 or fu2) (if the entity in the other shell is not a wire), and enlist the dual. If there is no dual, make a self-loop over there, and enlist that.

If 'dualvu' is provided, don't search, just use that.

While it is true that in most cases the calling routine will know which shell the vu came from, it's cheap to re-determine it here. This "all in one" packaging, which handles both lists automaticly is *vastly* superior to the previous version, which pushed 10-20 lines of bookkeeping up into *every* place an intersection vu was created.

Returns a pointer to vu's dual.

"Join the Army, young vertexuse".

Definition at line 210 of file nmg_inter.c.

References bn_distsq_line3_pt3(), bu_calloc(), BU_LIST_FIRST, bu_log(), BU_PTBL_END, bu_ptbl_ins_unique(), bu_ptbl_locate(), vertex_g::coord, DEBUG_POLYSECT, DEBUG_VERIFY, nmg_inter_struct::dir, bn_tol::dist_sq, loopuse::down_hd, nmg_inter_struct::fu1, nmg_inter_struct::fu2, vertexuse::l, shell::l, nmg_inter_struct::l1, nmg_inter_struct::l2, loopuse::l_p, nmg_inter_struct::mag1, nmg_inter_struct::mag2, nmg_inter_struct::mag_len, bu_list::magic, MAX_FASTF, NMG_CK_FACEUSE, NMG_CK_INTER_STRUCT, nmg_ck_v_in_2fus(), NMG_CK_VERTEXUSE, nmg_find_fu_of_vu(), nmg_find_s_of_vu(), nmg_find_v_in_shell(), nmg_loop_g(), nmg_make_dualvu(), nmg_mlv(), NULL, OT_BOOLPLACE, nmg_inter_struct::pt, rt_bomb(), rt_realloc, nmg_inter_struct::s1, nmg_inter_struct::s2, faceuse::s_p, nmg_inter_struct::tol, vertexuse::v_p, and vertex::vg_p.

Referenced by nmg_isect_2colinear_edge2p(), nmg_isect_edge2p_edge2p(), nmg_isect_line2_edge2p(), nmg_isect_line2_face2pNEW(), nmg_isect_line2_vertex2(), and nmg_isect_vert2p_face2p().

Here is the call graph for this function:

RT_EXPORT void nmg_isect2d_prep struct nmg_inter_struct is,
const long *  assoc_use
 

Referenced by nmg_isect_line2_face2pNEW(), and nmg_isect_vert2p_face2p().

RT_EXPORT void nmg_isect2d_cleanup struct nmg_inter_struct is  ) 
 

N M G _ I S E C T 2 D _ C L E A N U P.

Common routine to zap 2d vertex cache, and release dynamic storage.

Definition at line 665 of file nmg_inter.c.

References bu_free(), NMG_CK_INTER_STRUCT, NULL, nmg_inter_struct::twod, and nmg_inter_struct::vert2d.

Referenced by nmg_crackshells(), nmg_isect2d_final_cleanup(), and nmg_isect2d_prep().

Here is the call graph for this function:

RT_EXPORT void nmg_isect2d_final_cleanup void   ) 
 

N M G _ I S E C T 2 D _ F I N A L _ C L E A N U P

XXX Hack routine used for storage reclamation by G-JACK for XXX calculation of the reportcard without gobbling lots of memory XXX on rt_bomb() longjmp()s. Can be called by the longjmp handler with impunity. If a pointer to busy dynamic memory is still handy, it will be freed. If not, no harm done.

Definition at line 688 of file nmg_inter.c.

References nmg_inter_struct::magic, NMG_INTER_STRUCT_MAGIC, and nmg_isect2d_cleanup().

Here is the call graph for this function:

RT_EXPORT void nmg_isect_vert2p_face2p struct nmg_inter_struct is,
struct vertexuse vu1,
struct faceuse fu2
 

N M G _ I S E C T _ V E R T 2 P _ F A C E 2 P

Handle the complete intersection of a vertex which lies on the plane of a face. *every* intersection is performed.

If already part of the topology of the face, do nothing more. If it intersects one of the edges of the face, break the edge there. Otherwise, add a self-loop into the face as a marker.

All vertexuse pairs are enlisted on the intersection line. Assuming that there is one (is->l1 non null).

Called by - nmg_isect_3vertex_3face() nmg_isect_two_face2p()

Definition at line 712 of file nmg_inter.c.

References bn_pt3_pt3_equal(), BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), vertex_g::coord, DEBUG_POLYSECT, loopuse::down_hd, faceuse::l, nmg_inter_struct::l1, loopuse::l_p, faceuse::lu_hd, bu_list::magic, MAX_FASTF, nmg_break_eu_on_v(), NMG_CK_FACEUSE, NMG_CK_INTER_STRUCT, NMG_CK_LOOPUSE, NMG_CK_VERTEXUSE, nmg_enlist_vu(), nmg_isect2d_prep(), nmg_jv(), nmg_loop_g(), nmg_mlv(), NMG_VERTEXUSE_MAGIC, OT_BOOLPLACE, nmg_inter_struct::tol, vertexuse::v_p, vertex::vg_p, VPRINT, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_break_eu_on_v struct edgeuse eu1,
struct vertex v2,
struct faceuse fu,
struct nmg_inter_struct is
 

N M G _ B R E A K _ E U _ O N _ V

The vertex 'v2' is known to lie in the plane of eu1's face. If v2 lies between the two endpoints of eu1, break eu1 and return the new edgeuse pointer.

If an edgeuse vertex is joined with v2, v2 remains as the survivor, as the caller is working on it explicitly, and the edgeuse vertices are dealt with implicitly (by dereferencing the eu pointers). Otherwise, we will invalidate our caller's v2 pointer.

Note that no "intersection line" stuff is done, the goal here is just to get the edge appropriately broken.

Either faceuse can be passed in, but it needs to be consistent with the faceuse used to establish the 2d vertex cache.

Returns - new_eu if edge is broken 0 otherwise

Definition at line 1055 of file nmg_inter.c.

References bn_isect_pt2_lseg2(), BU_LIST_PNEXT_CIRC, bu_log(), vertex_g::coord, INFINITY, faceuse::l, bu_list::magic, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_INTER_STRUCT, NMG_CK_VERTEX, nmg_ebreaker(), nmg_jv(), rt_bomb(), nmg_inter_struct::tol, V2PRINT, vertexuse::v_p, vertex::vg_p, VPRINT, and edgeuse::vu_p.

Referenced by nmg_isect_2colinear_edge2p(), and nmg_isect_vert2p_face2p().

Here is the call graph for this function:

RT_EXPORT void nmg_break_eg_on_v const struct edge_g_lseg eg,
struct vertex v,
const struct bn_tol tol
 

N M G _ B R E A K _ E G _ O N _ V

Given a vertex 'v' which is already known to have geometry that lies on the line defined by 'eg', break all the edgeuses along 'eg' which cross 'v'.

Calculation is done in 1 dimension: parametric distance along 'eg'. Edge direction vector needs to be made unit length so that tol->dist makes sense.

Definition at line 1143 of file nmg_inter.c.

References bn_between(), BN_CK_TOL, bn_dist_pt3_along_line3(), bn_pt3_pt3_equal(), bu_log(), BU_PTBL_BASEADDR, BU_PTBL_LASTADDR, vertex_g::coord, bn_tol::dist, edge_g_lseg::e_dir, edge_g_lseg::e_pt, NEAR_ZERO, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, NMG_CK_VERTEX, nmg_ebreaker(), nmg_edgeuse_with_eg_tabulate(), nmg_jv(), rt_bomb(), vertex::vg_p, VMOVE, and VUNITIZE.

Here is the call graph for this function:

RT_EXPORT int nmg_isect_2colinear_edge2p struct edgeuse eu1,
struct edgeuse eu2,
struct faceuse fu,
struct nmg_inter_struct is,
struct bu_ptbl l1,
struct bu_ptbl l2
 

N M G _ I S E C T _ 2 C O L I N E A R _ E D G E 2 P

Perform edge mutual breaking only on two colinear edgeuses. This can result in 2 new edgeuses showing up in either loop (case A & D). The vertexuse lists are updated to have all participating vu's and their duals.

Two colinear line segments (eu1 and eu2, or just "1" and "2" in the diagram) can overlap each other in one of 9 configurations, labeled A through I:

A B C D E F G H I

vu1b,vu2b * * * * * * * * *=* 1 1 2 2 1 2 1 2 1 2 1=* 1 2 *=2 1=* *=2 * * 1 2 1 2 *=* *=* 1 2 1 2 1 2 1 2 1 2 2 1 1 2 1 2 1 2 * * 1 2 1=* 2 1 *=2 *=2 1=* 2 1 1 2 1 * * 2 2 1 * * 1 2 * * * * *=* vu1a,vu2a

To ensure nothing is missed, break every edgeuse on all 4 vertices. If a new edgeuse is created, add it to the list of edgeuses still to be broken. Brute force, but *certain* not to miss anything.

There is nothing to prevent eu1 and eu2 from being edgeuses in the same loop. This creates interesting patterns if one is NEXT of the other, such as vu[1] == vu[2]. Just handle it gracefully.

Returns the number of edgeuses that resulted, which is always at least the original 2.

Definition at line 1240 of file nmg_inter.c.

References BU_CK_PTBL, BU_LIST_PNEXT_CIRC, bu_log(), bu_ptbl_ins_unique(), edgeuse::e_p, vertexuse::l, bu_list::magic, MAX_FASTF, nmg_break_eu_on_v(), NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_INTER_STRUCT, nmg_enlist_vu(), vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_isect_edge2p_edge2p(), and nmg_isect_line2_face2pNEW().

Here is the call graph for this function:

RT_EXPORT int nmg_isect_edge2p_edge2p struct nmg_inter_struct is,
struct edgeuse eu1,
struct edgeuse eu2,
struct faceuse fu1,
struct faceuse fu2
 

N M G _ I S E C T _ E D G E 2 P _ E D G E 2 P

Actual 2d edge/edge intersector

One or both of the edges may be wire edges, i.e. either or both of the fu1 and fu2 args may be null. If so, the vert_list's are unimportant.

Returns a bit vector - ISECT_NONE no intersection ISECT_SHARED_V intersection was at (at least one) shared vertex ISECT_SPLIT1 eu1 was split at (geometric) intersection. ISECT_SPLIT2 eu2 was split at (geometric) intersection.

Definition at line 1337 of file nmg_inter.c.

References bn_isect_line2_lseg2(), BU_LIST_PNEXT_CIRC, bu_log(), vertex_g::coord, edgeuse::eumate_p, ISECT_NONE, ISECT_SHARED_V, ISECT_SPLIT1, ISECT_SPLIT2, edgeuse::l, faceuse::l, bu_list::magic, MAX_FASTF, NMG_CK_EDGEUSE, NMG_CK_INTER_STRUCT, NMG_CK_MODEL, NMG_CK_VERTEXUSE, nmg_e2break(), nmg_ebreaker(), nmg_enlist_vu(), nmg_find_model(), nmg_find_pt_in_model(), nmg_isect_2colinear_edge2p(), nmg_jv(), nmg_radial_join_eu(), nmg_vertex_gv(), rt_bomb(), status, nmg_inter_struct::tol, vertexuse::v_p, vertex::vg_p, VJOIN1, VPRINT, VSUB2, VSUB2_2D, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT int nmg_isect_construct_nice_ray struct nmg_inter_struct is,
struct faceuse fu2
 

N M G _ I S E C T _ C O N S T R U C T _ N I C E _ R A Y

Construct a nice ray for is->pt, is->dir which contains the line of intersection, is->on_eg.

See the comment in nmg_isect_two_generics_faces() for details on the constraints on this ray, and the algorithm.

XXX Danger? The ray -vs- RPP check is being done in 3D. It really ought to be done in 2D, to ensure that long edge lines on nearly axis-aligned faces don't get discarded prematurely! XXX Can't just comment out the code, I think the selection XXX of is->pt is significant: 1) All intersections are at positive distances on the ray, 2) dir cross N will point "left".

Returns - 0 OK 1 ray misses fu2 bounding box

Definition at line 2099 of file nmg_inter.c.

References bu_log(), nmg_inter_struct::dir, edge_g_lseg::e_dir, edge_g_lseg::e_pt, faceuse::f_p, face::max_pt, face::min_pt, NMG_CK_FACEUSE, NMG_CK_INTER_STRUCT, nmg_inter_struct::on_eg, nmg_inter_struct::pt, xray::r_dir, xray::r_max, xray::r_min, xray::r_pt, rt_in_rpp(), VINVDIR, VJOIN1, VMOVE, VPRINT, VREVERSE, and VUNITIZE.

Here is the call graph for this function:

RT_EXPORT void nmg_enlist_one_vu struct nmg_inter_struct is,
const struct vertexuse vu,
fastf_t  dist
 

Definition at line 2347 of file nmg_inter.c.

References bu_calloc(), bu_log(), BU_PTBL_END, bu_ptbl_ins_unique(), bu_ptbl_locate(), DEBUG_VERIFY, nmg_inter_struct::fu1, nmg_inter_struct::fu2, vertexuse::l, nmg_inter_struct::l1, nmg_inter_struct::l2, nmg_inter_struct::mag1, nmg_inter_struct::mag2, nmg_inter_struct::mag_len, bu_list::magic, MAX_FASTF, NMG_CK_INTER_STRUCT, nmg_ck_v_in_2fus(), NMG_CK_VERTEXUSE, nmg_find_s_of_vu(), rt_bomb(), rt_realloc, nmg_inter_struct::s1, nmg_inter_struct::s2, nmg_inter_struct::tol, and vertexuse::v_p.

Here is the call graph for this function:

RT_EXPORT int nmg_isect_line2_edge2p struct nmg_inter_struct is,
struct bu_ptbl list,
struct edgeuse eu1,
struct faceuse fu1,
struct faceuse fu2
 

N M G _ I S E C T _ L I N E 2 _ E D G E 2 P

A parallel to nmg_isect_edge2p_edge2p().

Intersect the line with eu1, from fu1. The resulting vu's are added to "list", not is->l1 or is->l2. fu2 is the "other" face on this intersect line, and is used only when searching for existing vertex structs suitable for re-use.

Returns - Number of times edge is broken (0 or 1).

Definition at line 3038 of file nmg_inter.c.

References bn_between(), bn_isect_line2_lseg2(), bn_isect_pt_lseg(), bn_pt3_pt3_equal(), BU_CK_PTBL, BU_LIST_PNEXT_CIRC, bu_log(), vertex_g::coord, nmg_inter_struct::dir, nmg_inter_struct::dir2d, faceuse::l, nmgregion::m_p, bu_list::magic, MAX_FASTF, NMG_CK_EDGEUSE, nmg_ck_face_worthless_edges(), NMG_CK_FACEUSE, NMG_CK_INTER_STRUCT, NMG_CK_VERTEXUSE, nmg_ebreaker(), nmg_enlist_vu(), nmg_find_pt_in_model(), nmg_vertex_gv(), nmg_inter_struct::pt, nmg_inter_struct::pt2d, shell::r_p, rt_bomb(), faceuse::s_p, nmg_inter_struct::tol, vertexuse::v_p, vertex::vg_p, VJOIN1, VPRINT, VSUB2_2D, edgeuse::vu_p, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT void nmg_isect_line2_vertex2 struct nmg_inter_struct is,
struct vertexuse vu1,
struct faceuse fu1
 

N M G _ I S E C T _ L I N E 2 _ V E R T E X 2

If this lone vertex lies along the intersect line, then add it to the lists.

Called from nmg_isect_line2_face2p().

Definition at line 3201 of file nmg_inter.c.

References bn_distsq_line3_pt3(), bu_log(), vertex_g::coord, nmg_inter_struct::dir, bn_tol::dist_sq, MAX_FASTF, NMG_CK_FACEUSE, NMG_CK_INTER_STRUCT, NMG_CK_VERTEXUSE, nmg_enlist_vu(), nmg_inter_struct::pt, nmg_inter_struct::tol, vertexuse::v_p, and vertex::vg_p.

Here is the call graph for this function:

RT_EXPORT int nmg_isect_two_ptbls struct nmg_inter_struct is,
const struct bu_ptbl t1,
const struct bu_ptbl t2
 

Given two pointer tables filled with edgeuses representing two differentt edge geometry lines, see if there is a common vertex of intersection. If so, enlist the intersection.

Returns - 1 intersection found 0 no intersection

Definition at line 3232 of file nmg_inter.c.

References BU_CK_PTBL, BU_LIST_PNEXT_CIRC, BU_PTBL_BASEADDR, BU_PTBL_LASTADDR, NMG_CK_INTER_STRUCT, NMG_CK_VERTEXUSE, and vertexuse::v_p.

RT_EXPORT struct edge_g_lseg* nmg_find_eg_on_line const long *  magic_p,
const point_t  pt,
const vect_t  dir,
const struct bn_tol tol
 

RT_EXPORT int nmg_k0eu struct vertex v  ) 
 

N M G _ K 0 E U

Kill all 0-length edgeuses that start and end on this vertex.

Returns - 0 If none were found count Number of 0-length edgeuses killed (not counting mates)

Definition at line 3359 of file nmg_inter.c.

References BU_LIST_FOR, bu_log(), vertexuse::eu_p, edgeuse::eumate_p, vertexuse::magic_p, NMG_CK_EDGEUSE, NMG_CK_VERTEX, NMG_CK_VERTEXUSE, NMG_EDGEUSE_MAGIC, nmg_keu(), nmg_pr_eu_briefly(), top(), vertexuse::up, vertexuse::v_p, vertex::vu_hd, and edgeuse::vu_p.

Referenced by nmg_repair_v_near_v().

Here is the call graph for this function:

RT_EXPORT struct vertex* nmg_repair_v_near_v struct vertex hit_v,
struct vertex v,
const struct edge_g_lseg eg1,
const struct edge_g_lseg eg2,
int  bomb,
const struct bn_tol tol
 

N M G _ R E P A I R _ V _ N E A R _ V

Attempt to join two vertices which both claim to be the intersection of two lines. If they are close enough, repair the damage.

Returns - hit_v If repair succeeds. vertex 'v' is now invalid. NULL If repair fails. If 'bomb' is non-zero, rt_bomb() is called.

if( bomb )

Definition at line 3399 of file nmg_inter.c.

References bn_2line3_colinear(), BN_CK_TOL, bn_dist_line3_pt3(), bn_dist_pt3_pt3(), bn_pt3_pt3_equal(), bu_log(), vertex_g::coord, bn_tol::dist, edge_g_lseg::e_dir, edge_g_lseg::e_pt, edge_g_lseg::l, bu_list::magic, NMG_CK_EDGE_G_LSEG, NMG_CK_VERTEX, nmg_findeu(), nmg_jv(), nmg_k0eu(), nmg_pr_eg(), NULL, rt_bomb(), vertex::vg_p, void(), and VPRINT.

Referenced by nmg_search_v_eg().

Here is the call graph for this function:

RT_EXPORT struct vertex* nmg_search_v_eg const struct edgeuse eu,
int  second,
const struct edge_g_lseg eg1,
const struct edge_g_lseg eg2,
struct vertex hit_v,
const struct bn_tol tol
 

Referenced by nmg_common_v_2eg().

RT_EXPORT struct vertex* nmg_common_v_2eg struct edge_g_lseg eg1,
struct edge_g_lseg eg2,
const struct bn_tol tol
 

N M G _ C O M M O N _ V _ 2 E G

Perform a topology search for a common vertex between two edge geometry lines.

Definition at line 3554 of file nmg_inter.c.

References BN_CK_TOL, BU_LIST_FOR, BU_LIST_MAIN_PTR, bu_log(), edge_g_lseg::eu_hd2, edgeuse::g, edgeuse::lseg_p, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, NMG_CKMAG, NMG_EDGEUSE2_MAGIC, nmg_search_v_eg(), and rt_bomb().

Here is the call graph for this function:

RT_EXPORT int nmg_is_vertex_on_inter struct vertex v,
struct faceuse fu1,
struct faceuse fu2,
struct nmg_inter_struct is
 

Definition at line 3588 of file nmg_inter.c.

References bn_distsq_line3_pt3(), vertex_g::coord, nmg_inter_struct::dir, bn_tol::dist, DIST_PT_PLANE, bn_tol::dist_sq, NMG_CK_FACEUSE, NMG_CK_INTER_STRUCT, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CLASS_AinB, nmg_class_pt_fu_except(), nmg_find_v_in_face(), NMG_GET_FU_PLANE, NULL, nmg_inter_struct::pt, nmg_inter_struct::tol, vertex::vg_p, and void().

Here is the call graph for this function:

RT_EXPORT void nmg_isect_eu_verts struct edgeuse eu,
struct vertex_g vg1,
struct vertex_g vg2,
struct bu_ptbl verts,
struct bu_ptbl inters,
const struct bn_tol tol
 

Definition at line 3636 of file nmg_inter.c.

References BN_CK_TOL, bn_dist_pt3_lseg3(), BU_CK_PTBL, BU_PTBL_END, BU_PTBL_GET, bu_ptbl_ins_unique(), vertex_g::coord, edgeuse::eumate_p, NMG_CK_EDGEUSE, NMG_CK_VERTEX_G, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_isect_eu_fu().

Here is the call graph for this function:

RT_EXPORT void nmg_isect_eu_eu struct edgeuse eu1,
struct vertex_g vg1a,
struct vertex_g vg1b,
vect_t  dir1,
struct edgeuse eu2,
struct bu_ptbl verts,
struct bu_ptbl inters,
const struct bn_tol tol
 

Referenced by nmg_isect_eu_fu().

RT_EXPORT void nmg_isect_eu_fu struct nmg_inter_struct is,
struct bu_ptbl verts,
struct edgeuse eu,
struct faceuse fu
 

Definition at line 3794 of file nmg_inter.c.

References bn_isect_line3_plane(), bu_calloc(), BU_CK_PTBL, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins_unique(), vertex_g::coord, bn_tol::dist, DIST_PT_PLANE, bn_tol::dist_sq, loopuse::down_hd, edgeuse::eumate_p, faceuse::l, edgeuse::l, faceuse::lu_hd, bu_list::magic, model::magic, MAGNITUDE, MAGSQ, nmg_break_all_es_on_v(), NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_INTER_STRUCT, NMG_CK_LOOPUSE, NMG_CK_MODEL, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_CLASS_AinB, nmg_class_pt_fu_except(), NMG_EDGEUSE_MAGIC, nmg_esplit(), nmg_find_fu_of_eu(), nmg_find_model(), nmg_find_pt_in_model(), nmg_find_v_in_face(), NMG_GET_FU_PLANE, nmg_isect_eu_eu(), nmg_isect_eu_verts(), nmg_make_dualvu(), nmg_vertex_gv(), rt_bomb(), SMALL_FASTF, nmg_inter_struct::tol, V3ARGS, vertexuse::v_p, VDIST_SQ, VDOT, vertex::vg_p, VJOIN1, VMOVE, void(), VSCALE, VSUB2, and edgeuse::vu_p.

Referenced by nmg_isect_fu_jra().

Here is the call graph for this function:

RT_EXPORT void nmg_isect_fu_jra struct nmg_inter_struct is,
struct faceuse fu1,
struct faceuse fu2,
struct bu_ptbl eu1_list,
struct bu_ptbl eu2_list
 

Definition at line 4136 of file nmg_inter.c.

References BU_CK_PTBL, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), BU_PTBL_END, bu_ptbl_free(), BU_PTBL_GET, bu_ptbl_ins_unique(), loopuse::down_hd, faceuse::l, faceuse::lu_hd, bu_list::magic, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_INTER_STRUCT, NMG_CK_LOOPUSE, NMG_CK_MODEL, NMG_CK_VERTEX, NMG_EDGEUSE_MAGIC, nmg_find_model(), nmg_isect_eu_fu(), and nmg_vertex_tabulate().

Here is the call graph for this function:

RT_EXPORT void nmg_isect_line2_face2pNEW struct nmg_inter_struct is,
struct faceuse fu1,
struct faceuse fu2,
struct bu_ptbl eu1_list,
struct bu_ptbl eu2_list
 

N M G _ I S E C T _ L I N E 2 _ F A C E 2 P

HEART

For each distinct edge_g_lseg LINE on the face (composed of potentially many edgeuses and many different edges), intersect with the edge_g_lseg LINE which represents the face/face intersection line.

Note that the geometric intersection of the two faces is stored in is->pt and is->dir. If is->on_eg is set, it is the callers' responsibility to make sure it is not much different than the original geometric one.

Go to great pains to ensure that two non-colinear lines intersect at either 0 or 1 points, and no more.

Called from - nmg_isect_edge2p_face2p() nmg_isect_two_face3p()

Definition at line 4277 of file nmg_inter.c.

References BU_CK_PTBL, BU_LIST_PNEXT_CIRC, bu_log(), BU_PTBL_BASEADDR, BU_PTBL_END, BU_PTBL_GET, BU_PTBL_LASTADDR, nmg_inter_struct::dir, nmg_inter_struct::dir2d, edgeuse::g, faceuse::l, edgeuse::lseg_p, bu_list::magic, MAT4X3PNT, MAT4X3VEC, MAX_FASTF, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_INTER_STRUCT, nmg_edge_g_tabulate(), nmg_enlist_vu(), nmg_isect2d_prep(), nmg_isect_2colinear_edge2p(), nmg_inter_struct::on_eg, nmg_inter_struct::proj, nmg_inter_struct::pt, nmg_inter_struct::pt2d, void(), and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT int nmg_is_eu_on_line3 const struct edgeuse eu,
const point_t  pt,
const vect_t  dir,
const struct bn_tol tol
 

RT_EXPORT struct edge_g_lseg* nmg_find_eg_between_2fg const struct faceuse ofu1,
const struct faceuse fu2,
const struct bn_tol tol
 

N M G _ F I N D _ E G _ B E T W E E N _ 2 F G

Perform a topology search to determine if two face geometries (specified by their faceuses) share an edge geometry in common. The edge_g is returned, even if there are no existing uses of it in *either* fu1 or fu2. It still represents the intersection line between the two face geometries, found topologically.

If there are multiple edgeuses in common, ensure that they all refer to the same edge_g geometry structure. The intersection of two planes (non-coplanar) must be a single line.

Calling this routine when the two faces share face geometry is illegal.

NULL is returned if no common edge geometry could be found.

Definition at line 5029 of file nmg_inter.c.

References BN_CK_TOL, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), DEBUG_BASIC, loopuse::down_hd, edgeuse::e_p, edgeuse::eumate_p, face_g_plane::f_hd, faceuse::f_p, face::fu_p, loopuse::fu_p, face::g, edgeuse::g, edgeuse::l, edgeuse::lseg_p, faceuse::lu_hd, edgeuse::lu_p, face_g_plane::magic, bu_list::magic, edgeuse::magic_p, loopuse::magic_p, nmg_2edgeuse_g_coincident(), NMG_ARE_EUS_ADJACENT, NMG_CK_EDGE_G_EITHER, NMG_CK_EDGEUSE, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_FACEUSE_MAGIC, nmg_find_model(), nmg_jeg(), NMG_LOOPUSE_MAGIC, nmg_model_fuse(), nmg_pl_lu_around_eu(), nmg_pr_eg(), nmg_pr_eu_briefly(), nmg_pr_eu_endpoints(), nmg_pr_fu_around_eu(), nmg_pr_fus_in_fg(), nmg_radial_join_eu(), NMG_VERTEXUSE_MAGIC, face::plane_p, edgeuse::radial_p, rt_bomb(), edgeuse::up, and loopuse::up.

Here is the call graph for this function:

RT_EXPORT struct edgeuse* nmg_does_fu_use_eg const struct faceuse fu1,
const long *  eg
 

RT_EXPORT int rt_line_on_plane const point_t  pt,
const vect_t  dir,
const plane_t  plane,
const struct bn_tol tol
 

RT_EXPORT void nmg_cut_lu_into_coplanar_and_non struct loopuse lu,
plane_t  pl,
struct nmg_inter_struct is
 

RT_EXPORT void nmg_check_radial_angles char *  str,
struct shell s,
const struct bn_tol tol
 

Definition at line 6437 of file nmg_inter.c.

References BN_CK_TOL, bn_twopi, bu_log(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_init(), vertex_g::coord, edgeuse::eumate_p, shell::l, bu_list::magic, MAX_FACES, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_SHELL, nmg_edge_tabulate(), nmg_find_eu_leftvec(), nmg_find_fu_of_eu(), nmg_measure_fu_angle(), edgeuse::radial_p, rt_bomb(), start, vertexuse::v_p, VCROSS, vertex::vg_p, VSUB2, edgeuse::vu_p, and VUNITIZE.

Here is the call graph for this function:

RT_EXPORT int nmg_faces_can_be_intersected struct nmg_inter_struct bs,
const struct faceuse fu1,
const struct faceuse fu2,
const struct bn_tol tol
 

N M G _ F A C E S _ C A N _ B E _ I N T E R S E C T E D

Check if two faceuses can be intersected normally, by looking at the line of intersection and determining if the vertices from each face are all above the other face on one side of the intersection line and below it on the other side of the interection line.

return: 1 - faceuses meet criteria and can be intersected normally 0 - must use nmg_isect_nearly_coplanar_faces

Definition at line 7116 of file nmg_inter.c.

References BN_CK_TOL, bn_mkpoint_3planes(), BU_PTBL_END, BU_PTBL_GET, nmg_inter_struct::dir, bn_tol::dist, DIST_PT_PLANE, faceuse::f_p, faceuse::l, bu_list::magic, MAGSQ, face::min_pt, NMG_CK_FACE, NMG_CK_FACEUSE, NMG_GET_FU_PLANE, nmg_vertex_tabulate(), nmg_inter_struct::pt, rt_dist_pt3_line3(), SMALL_FASTF, VCROSS, VDOT, VMIN, VMOVE, VSCALE, and VSUB2.

Referenced by nmg_isect_two_generic_faces().

Here is the call graph for this function:

RT_EXPORT void nmg_isect_two_generic_faces struct faceuse fu1,
struct faceuse fu2,
const struct bn_tol tol
 

N M G _ I S E C T _ T W O _ G E N E R I C _ F A C E S

Intersect a pair of faces

Definition at line 7291 of file nmg_inter.c.

References BN_CK_TOL, bn_isect_2planes(), bu_log(), BU_PTBL_END, bu_ptbl_free(), BU_PTBL_GET, nmg_inter_struct::coplanar, nmg_inter_struct::dir, bn_tol::dist, DIST_PT_PLANE, faceuse::f_p, face::g, faceuse::l, nmg_inter_struct::magic, bu_list::magic, MAX_FASTF, face::max_pt, face::min_pt, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, nmg_faces_can_be_intersected(), nmg_fu_touchingloops(), NMG_GET_FU_PLANE, NMG_INTER_STRUCT_MAGIC, nmg_pr_fu_briefly(), nmg_vertex_tabulate(), face::plane_p, nmg_inter_struct::pt, rt_bomb(), nmg_inter_struct::tol, V3RPP_OVERLAP_TOL, VDOT, nmg_inter_struct::vert2d, VMIN, VMOVE, X, Y, and Z.

Referenced by nmg_crackshells(), and nmg_isect_shell_self().

Here is the call graph for this function:

RT_EXPORT void nmg_crackshells struct shell s1,
struct shell s2,
const struct bn_tol tol
 

N M G _ C R A C K S H E L L S

Split the components of two shells wherever they may intersect, in preparation for performing boolean operations on the shells.

Definition at line 7936 of file nmg_inter.c.

References BN_CK_TOL, bu_calloc(), bu_free(), BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), bu_ptbl_free(), bu_ptbl_init(), DEBUG_VERIFY, loopuse::down_hd, faceuse::f_p, flags, nmg_inter_struct::fu1, nmg_inter_struct::fu2, face::g, nmg_inter_struct::l1, nmg_inter_struct::l2, nmg_inter_struct::magic, shell_a::max_pt, face::max_pt, shell_a::min_pt, face::min_pt, NMG_CK_EDGEUSE, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_SHELL, NMG_CK_SHELL_A, nmg_ck_vs_in_region(), NMG_EDGEUSE_MAGIC, NMG_INDEX_IS_SET, NMG_INDEX_SET, NMG_INTER_STRUCT_MAGIC, nmg_isect2d_cleanup(), nmg_isect_two_generic_faces(), nmg_sanitize_s_lv(), nmg_unbreak_region_edges(), nmg_vshell(), NULL, faceuse::orientation, OT_BOOLPLACE, OT_SAME, face::plane_p, rt_bomb(), s1, nmg_inter_struct::s1, s2, nmg_inter_struct::s2, nmg_inter_struct::tol, V3RPP_OVERLAP_TOL, nmg_inter_struct::vert2d, and void().

Here is the call graph for this function:

RT_EXPORT int nmg_fu_touchingloops const struct faceuse fu  ) 
 

N M G _ F U _ T O U C H I N G L O O P S

Definition at line 8149 of file nmg_inter.c.

References BU_LIST_FOR, bu_log(), faceuse::lu_hd, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CK_VERTEXUSE, nmg_loop_touches_self(), nmg_pr_lu_briefly(), and rt_bomb().

Referenced by nmg_face_state_transition(), and nmg_isect_two_generic_faces().

Here is the call graph for this function:

RT_EXPORT int nmg_index_of_struct const long *  p  ) 
 

Referenced by nmg_eval_action(), and rt_nmg_reindex().

RT_EXPORT void nmg_m_set_high_bit struct model m  ) 
 

N M G _ M _ S E T _ H I G H _ B I T

First pass: just set the high bit on all index words

This is a separate function largely for the benefit of global optimizers, which tended to blow their brains out on such a large subroutine.

Definition at line 167 of file nmg_index.c.

References BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, loopuse::down_hd, edgeuse::e_p, shell::eu_hd, faceuse::f_p, shell::fu_hd, face::g, edgeuse::g, vertexuse::l, loopuse::l_p, faceuse::lu_hd, shell::lu_hd, face::magic_p, edgeuse::magic_p, MARK_VU, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_FACE, NMG_CK_FACEUSE, NMG_CK_LOOP, NMG_CK_LOOP_G, NMG_CK_LOOPUSE, NMG_CK_MODEL, NMG_CK_REGION, NMG_CK_REGION_A, NMG_CK_SHELL, NMG_CK_SHELL_A, NMG_FACE_G_PLANE_MAGIC, NMG_FACE_G_SNURB_MAGIC, NMG_MARK_INDEX, NMG_VERTEXUSE_MAGIC, face::plane_p, model::r_hd, nmgregion::ra_p, nmgregion::s_hd, shell::sa_p, face::snurb_p, edgeuse::vu_p, and shell::vu_p.

Referenced by nmg_m_reindex().

RT_EXPORT void nmg_m_reindex struct model m,
long  newindex
 

Referenced by nmg_merge_models(), and wdb_shells_cmd().

RT_EXPORT void nmg_vls_struct_counts struct bu_vls str,
const struct nmg_struct_counts ctr
 

N M G _ V L S _ S T R U C T _ C O U N T S

Definition at line 488 of file nmg_index.c.

References BU_CK_VLS, bu_vls_printf(), nmg_struct_counts::edge, nmg_struct_counts::edge_g_cnurb, nmg_struct_counts::edge_g_lseg, nmg_struct_counts::edgeuse, nmg_struct_counts::face, nmg_struct_counts::face_edges, nmg_struct_counts::face_g_plane, nmg_struct_counts::face_g_snurb, nmg_struct_counts::face_lone_verts, nmg_struct_counts::face_loops, nmg_struct_counts::faceuse, nmg_struct_counts::loop, nmg_struct_counts::loop_g, nmg_struct_counts::loopuse, nmg_struct_counts::max_structs, nmg_struct_counts::model, nmg_struct_counts::region, nmg_struct_counts::region_a, nmg_struct_counts::shell, nmg_struct_counts::shell_a, nmg_struct_counts::shells_of_lone_vert, nmg_struct_counts::vertex, nmg_struct_counts::vertex_g, nmg_struct_counts::vertexuse, nmg_struct_counts::vertexuse_a_cnurb, nmg_struct_counts::vertexuse_a_plane, nmg_struct_counts::wire_edges, nmg_struct_counts::wire_lone_verts, nmg_struct_counts::wire_loop_edges, and nmg_struct_counts::wire_loops.

Referenced by nmg_pr_struct_counts(), and rt_nmg_describe().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_struct_counts const struct nmg_struct_counts ctr,
const char *  str
 

N M G _ P R _ S T R U C T _ C O U N T S

Definition at line 530 of file nmg_index.c.

References bu_log(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), and nmg_vls_struct_counts().

Referenced by nmg_struct_counts().

Here is the call graph for this function:

RT_EXPORT long** nmg_m_struct_count struct nmg_struct_counts ctr,
const struct model m
 

Referenced by nmg_struct_counts(), rt_nmg_describe(), rt_nmg_export5(), and rt_nmg_export_internal().

RT_EXPORT void nmg_struct_counts const struct model m,
const char *  str
 

Count 'em up, and print 'em out.

Definition at line 745 of file nmg_index.c.

References bu_free(), NMG_CK_MODEL, nmg_m_struct_count(), and nmg_pr_struct_counts().

Here is the call graph for this function:

RT_EXPORT void nmg_merge_models struct model m1,
struct model m2
 

N M G _ M E R G _ M O D E L S

Combine two NMG model trees into one single NMG model. The first model inherits the nmgregions of the second. The second model pointer is freed before return.

Definition at line 764 of file nmg_index.c.

References BU_LIST_APPEND_LIST, BU_LIST_FOR, FREE_MODEL, nmgregion::m_p, model::maxindex, NMG_CK_MODEL, NMG_CK_REGION, nmg_m_reindex(), and model::r_hd.

Referenced by nmg_boolean(), nmg_booltree_evaluate(), and rt_nmg_tess().

Here is the call graph for this function:

RT_EXPORT long nmg_find_max_index const struct model m  ) 
 

N M G _ F I N D _ M A X _ I N D E X

Definition at line 822 of file nmg_index.c.

References BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, CHECK_INDEX, CHECK_VU_INDEX, edgeuse::cnurb_p, loopuse::down_hd, edgeuse::e_p, shell::eu_hd, faceuse::f_p, shell::fu_hd, face::g, edgeuse::g, loopuse::l_p, loop::lg_p, edgeuse::lseg_p, faceuse::lu_hd, shell::lu_hd, face::magic_p, edgeuse::magic_p, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_FACE, NMG_CK_FACEUSE, NMG_CK_LOOP, NMG_CK_LOOPUSE, NMG_CK_REGION, NMG_CK_SHELL, NMG_EDGE_G_CNURB_MAGIC, NMG_EDGE_G_LSEG_MAGIC, NMG_FACE_G_PLANE_MAGIC, NMG_FACE_G_SNURB_MAGIC, NMG_VERTEXUSE_MAGIC, face::plane_p, model::r_hd, nmgregion::ra_p, nmgregion::s_hd, shell::sa_p, face::snurb_p, edgeuse::vu_p, and shell::vu_p.

RT_EXPORT void rt_dspline_matrix mat_t  m,
const char *  type,
const double  tension,
const double  bias
 

RT_EXPORT double rt_dspline4 mat_t  m,
double  a,
double  b,
double  c,
double  d,
double  alpha
 

RT_EXPORT void rt_dspline4v double *  pt,
const mat_t  m,
const double *  a,
const double *  b,
const double *  c,
const double *  d,
const int  depth,
const double  alpha
 

Referenced by rt_dspline_n().

RT_EXPORT void rt_dspline_n double *  r,
const mat_t  m,
const double *  knots,
const int  n,
const int  depth,
const double  alpha
 

RT_EXPORT int rt_nurb_bezier struct bu_list bezier_hd,
const struct face_g_snurb orig_surf,
struct resource res
 

Definition at line 66 of file nurb_bezier.c.

References BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_INIT, BU_LIST_WHILE, face_g_snurb::dir, face_g_snurb::l, NMG_CK_SNURB, rt_bez_check(), rt_nurb_free_snurb(), rt_nurb_s_split(), and rt_nurb_scopy().

Here is the call graph for this function:

RT_EXPORT int rt_bez_check const struct face_g_snurb srf  ) 
 

Definition at line 99 of file nurb_bezier.c.

References knot_vector::k_size, NMG_CK_SNURB, face_g_snurb::order, face_g_snurb::u, and face_g_snurb::v.

RT_EXPORT int nurb_crv_is_bezier const struct edge_g_cnurb crv  ) 
 

Definition at line 121 of file nurb_bezier.c.

References edge_g_cnurb::k, knot_vector::k_size, and knot_vector::knots.

Referenced by rt_process_casec().

RT_EXPORT void nurb_c_to_bezier struct bu_list clist,
struct edge_g_cnurb crv
 

Definition at line 150 of file nurb_bezier.c.

References edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, MAX_FASTF, and rt_nurb_crv_copy().

Referenced by rt_process_casec().

Here is the call graph for this function:

RT_EXPORT struct face_g_snurb* rt_nurb_scopy const struct face_g_snurb srf,
struct resource res
 

Definition at line 49 of file nurb_copy.c.

References face_g_snurb::ctl_points, knot_vector::k_size, knot_vector::knots, NMG_CK_SNURB, face_g_snurb::order, face_g_snurb::pt_type, RT_NURB_EXTRACT_COORDS, rt_nurb_new_snurb(), face_g_snurb::s_size, face_g_snurb::u, and face_g_snurb::v.

Here is the call graph for this function:

RT_EXPORT struct edge_g_cnurb* rt_nurb_crv_copy const struct edge_g_cnurb crv  ) 
 

Definition at line 78 of file nurb_copy.c.

References edge_g_cnurb::c_size, edge_g_cnurb::ctl_points, edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, NMG_CK_CNURB, edge_g_cnurb::order, edge_g_cnurb::pt_type, RT_NURB_EXTRACT_COORDS, and rt_nurb_new_cnurb().

Referenced by nurb_c_to_bezier().

Here is the call graph for this function:

RT_EXPORT int nmg_is_common_bigloop const struct face f1,
const struct face f2
 

N M G _ I S _ C O M M O N _ B I G L O O P

Do two faces share by topology at least one loop of 3 or more vertices?

Require that at least three distinct edge geometries be involved.

XXX Won't catch sharing of faces with only self-loops and no edge loops.

Definition at line 89 of file nmg_fuse.c.

References BU_LIST_FIRST_MAGIC, BU_LIST_FOR, loopuse::down_hd, face::fu_p, edgeuse::g, edgeuse::lseg_p, faceuse::lu_hd, edgeuse::magic_p, NMG_CK_EDGE_G_LSEG, NMG_CK_FACE, NMG_CK_FACEUSE, nmg_is_vertex_in_face(), NMG_VERTEXUSE_MAGIC, NULL, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_two_face_fuse().

Here is the call graph for this function:

RT_EXPORT void nmg_region_v_unique struct nmgregion r1,
const struct bn_tol tol
 

N M G _ R E G I O N _ V _ U N I Q U E

Ensure that all the vertices in r1 are still geometricaly unique. This will be true after nmg_region_both_vfuse() has been called, and should remain true throughout the intersection process.

Definition at line 148 of file nmg_fuse.c.

References BN_CK_TOL, bn_pt3_pt3_equal(), bu_log(), BU_PTBL_END, BU_PTBL_GET, nmgregion::l, bu_list::magic, NMG_CK_REGION, NMG_CK_VERTEX, nmg_pr_v(), nmg_vertex_tabulate(), and rt_bomb().

Referenced by nmg_do_bool(), and nmg_mesh_shell_shell().

Here is the call graph for this function:

RT_EXPORT int nmg_ptbl_vfuse struct bu_ptbl t,
const struct bn_tol tol
 

N M G _ P T B L _ V F U S E

Working from the end to the front, scan for geometric duplications within a single list of vertex structures.

Exists primarily as a support routine for nmg_model_vertex_fuse().

Definition at line 191 of file nmg_fuse.c.

References bn_pt3_pt3_equal(), BU_PTBL_END, BU_PTBL_GET, bu_ptbl_rm(), NMG_CK_VERTEX, and nmg_jv().

Referenced by nmg_model_vertex_fuse().

Here is the call graph for this function:

RT_EXPORT int nmg_region_both_vfuse struct bu_ptbl t1,
struct bu_ptbl t2,
const struct bn_tol tol
 

N M G _ R E G I O N _ B O T H _ V F U S E

For every element in t1, scan t2 for geometric duplications.

Deleted elements in t2 are marked by a null vertex pointer, rather than bothering to do a BU_PTBL_RM, which will re-copy the list to compress it.

Exists as a support routine for nmg_two_region_vertex_fuse()

Definition at line 232 of file nmg_fuse.c.

References BU_PTBL_END, BU_PTBL_GET, and NMG_CK_VERTEX.

RT_EXPORT int nmg_model_vertex_fuse struct model m,
const struct bn_tol tol
 

N M G _ M O D E L _ V E R T E X _ F U S E

Fuse together any vertices in the nmgmodel that are geometricly identical, within the tolerance.

Definition at line 310 of file nmg_fuse.c.

References BN_CK_TOL, bu_log(), bu_ptbl_free(), DEBUG_BASIC, model::magic, NMG_CK_MODEL, nmg_ptbl_vfuse(), and nmg_vertex_tabulate().

Referenced by nmg_model_fuse().

Here is the call graph for this function:

RT_EXPORT int nmg_cnurb_is_linear const struct edge_g_cnurb cnrb  ) 
 

N M G _ C N U R B _ I S _ L I N E A R

Checks if cnurb is linear

Returns: 1 - cnurb is linear 0 - either cnurb is not linear, or it's not obvious

Definition at line 340 of file nmg_fuse.c.

References bu_log(), edge_g_cnurb::c_size, edge_g_cnurb::ctl_points, DEBUG_MESH, NMG_CK_EDGE_G_CNURB, edge_g_cnurb::order, edge_g_cnurb::pt_type, rt_nurb_c_print(), RT_NURB_EXTRACT_COORDS, and VEQUAL.

Here is the call graph for this function:

RT_EXPORT int nmg_snurb_is_planar const struct face_g_snurb srf,
const struct bn_tol tol
 

N M G _ S N U R B _ I S _ P L A N A R

Checks if snurb surface is planar

Returns: 0 - surface is not planar 1 - surface is planar (within tolerance)

Definition at line 404 of file nmg_fuse.c.

References BN_CK_TOL, bn_mat_determinant(), bn_mat_inv(), bu_log(), face_g_snurb::ctl_points, DEBUG_MESH, H, HSCALE, MAGNITUDE, MAT4X3PNT, MAT_ZERO, NEAR_ZERO, NMG_CK_FACE_G_SNURB, face_g_snurb::order, face_g_snurb::pt_type, RT_NURB_EXTRACT_COORDS, rt_nurb_s_print(), face_g_snurb::s_size, SMALL_FASTF, VDOT, VSCALE, VSET, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT void nmg_eval_linear_trim_curve const struct face_g_snurb snrb,
const fastf_t  uvw[3],
point_t  xyz
 

Referenced by nmg_cnurb_is_on_crv(), nmg_cnurb_lseg_coincident(), nmg_eval_linear_trim_to_tol(), and nmg_split_linear_trim().

RT_EXPORT void nmg_eval_trim_curve const struct edge_g_cnurb cnrb,
const struct face_g_snurb snrb,
const fastf_t  t,
point_t  xyz
 

Referenced by nmg_eval_trim_to_tol(), and nmg_split_trim().

RT_EXPORT void nmg_eval_trim_to_tol const struct edge_g_cnurb cnrb,
const struct face_g_snurb snrb,
const fastf_t  t0,
const fastf_t  t1,
struct bu_list head,
const struct bn_tol tol
 

Definition at line 702 of file nmg_fuse.c.

References BN_CK_TOL, BU_LIST_INSERT, bu_log(), bu_malloc(), DEBUG_MESH, head, pt_list::l, NMG_CK_EDGE_G_CNURB, NMG_CK_FACE_G_SNURB, nmg_eval_trim_curve(), nmg_split_trim(), pt_list::t, and pt_list::xyz.

Here is the call graph for this function:

RT_EXPORT void nmg_eval_linear_trim_to_tol const struct edge_g_cnurb cnrb,
const struct face_g_snurb snrb,
const fastf_t  uvw1[3],
const fastf_t  uvw2[3],
struct bu_list head,
const struct bn_tol tol
 

RT_EXPORT int nmg_cnurb_lseg_coincident const struct edgeuse eu1,
const struct edge_g_cnurb cnrb,
const struct face_g_snurb snrb,
const point_t  pt1,
const point_t  pt2,
const struct bn_tol tol
 

RT_EXPORT int nmg_cnurb_is_on_crv const struct edgeuse eu,
const struct edge_g_cnurb cnrb,
const struct face_g_snurb snrb,
const struct bu_list head,
const struct bn_tol tol
 

N M G _ C N U R B _ I S _ O N _ C R V

Checks if CNURB eu lies on curve contained in list headed at "head" "Head" must contain a list of points (struct pt_list) each within tolerance of the next. (Just checks at "CHECK_NUMBER" points for now).

Returns: 0 - cnurb is not on curve; 1 - cnurb is on curve

Definition at line 986 of file nmg_fuse.c.

References vertexuse::a, BN_CK_TOL, BU_CK_LIST_HEAD, BU_LIST_FOR, bu_log(), vertexuse::cnurb_p, DEBUG_MESH, bn_tol::dist_sq, edgeuse::eumate_p, head, vertexuse::magic_p, MAGSQ, NMG_CK_EDGE_G_CNURB, NMG_CK_EDGEUSE, NMG_CK_FACE_G_SNURB, NMG_CK_VERTEXUSE, NMG_CK_VERTEXUSE_A_CNURB, nmg_eval_linear_trim_curve(), NMG_VERTEXUSE_A_CNURB_MAGIC, edge_g_cnurb::order, vertexuse_a_cnurb::param, rt_bomb(), VBLEND2, VSUB2, and edgeuse::vu_p.

Here is the call graph for this function:

RT_EXPORT int nmg_model_edge_fuse struct model m,
const struct bn_tol tol
 

N M G _ M O D E L _ E D G E _ F U S E

Definition at line 1258 of file nmg_fuse.c.

References BN_CK_TOL, BU_PTBL_END, BU_PTBL_GET, bu_ptbl_zero(), edge::eu_p, edgeuse::g, edge::index, model::magic, edge::magic, edgeuse::magic_p, NMG_ARE_EUS_ADJACENT, NMG_CK_MODEL, NMG_EDGE_G_LSEG_MAGIC, NMG_EDGE_MAGIC, nmg_edge_tabulate(), and nmg_radial_join_eu().

Referenced by nmg_model_fuse(), and wdb_nmg_simplify_cmd().

Here is the call graph for this function:

RT_EXPORT int nmg_model_edge_g_fuse struct model m,
const struct bn_tol tol
 

N M G _ M O D E L _ E D G E _ G _ F U S E

The present algorithm is a consequence of the old edge geom ptr structure. XXX This might be better formulated by generating a list of all edge_g structs in the model, and comparing *them* pairwise.

Definition at line 1322 of file nmg_fuse.c.

References BN_CK_TOL, BU_LIST_FIRST, BU_LIST_MAIN_PTR, BU_PTBL_END, BU_PTBL_GET, model::magic, nmg_2edgeuse_g_coincident(), NMG_CK_EDGE_G_EITHER, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, NMG_CK_MODEL, NMG_EDGE_G_CNURB_MAGIC, nmg_edge_g_tabulate(), nmg_jeg(), NULL, and rt_bomb().

Referenced by nmg_model_fuse(), nmg_triangulate_model(), and wdb_nmg_simplify_cmd().

Here is the call graph for this function:

RT_EXPORT int nmg_ck_fu_verts struct faceuse fu1,
struct face f2,
const struct bn_tol tol
 

N M G _ C K _ F U _ V E R T S

Check that all the vertices in fu1 are within tol->dist of fu2's surface. fu1 and fu2 may be the same face, or different.

This is intended to be a geometric check only, not a topology check. Topology may have become inappropriately shared.

Returns - 0 All is well, or all verts are within TOL_MULTIPLES*tol->dist of fu2 count Number of verts *not* on fu2's surface when at least one is more than TOL_MULTIPLES*tol->dist from fu2.

Definition at line 1398 of file nmg_fuse.c.

References BN_CK_TOL, BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, bu_log(), vertex_g::coord, bn_tol::dist, DIST_PT_PLANE, loopuse::down_hd, FAST, face::g, faceuse::lu_hd, face_g_plane::N, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, NMG_CK_VERTEX, NMG_CK_VERTEX_G, NMG_VERTEXUSE_MAGIC, face::plane_p, PLPRINT, rt_bomb(), TOL_MULTIPLES, vertexuse::v_p, vertex::vg_p, VPRINT, and edgeuse::vu_p.

Referenced by nmg_ck_fg_verts(), nmg_fu_planeeqn(), nmg_make_faces_within_tol(), nmg_model_face_fuse(), and nmg_shell_coplanar_face_merge().

Here is the call graph for this function:

RT_EXPORT int nmg_ck_fg_verts struct faceuse fu1,
struct face f2,
const struct bn_tol tol
 

N M G _ C K _ F G _ V E R T S

Similar to nmg_ck_fu_verts, but checks all vertices that use the same face geometry as fu1 fu1 and f2 may be the same face, or different.

This is intended to be a geometric check only, not a topology check. Topology may have become inappropriately shared.

Returns - 0 All is well. count Number of verts *not* on fu2's surface.

Definition at line 1496 of file nmg_fuse.c.

References BN_CK_TOL, BU_LIST_FOR, face_g_plane::f_hd, faceuse::f_p, face::fu_p, face::g, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, NMG_CK_FACEUSE, nmg_ck_fu_verts(), and face::plane_p.

Referenced by nmg_two_face_fuse().

Here is the call graph for this function:

RT_EXPORT int nmg_two_face_fuse struct face f1,
struct face f2,
const struct bn_tol tol
 

N M G _ T W O _ F A C E _ F U S E

XXX A better algorithm would be to compare loop by loop. If the two faces share all the verts of at least one loop of 3 or more vertices, then they should be shared. Otherwise it will be awkward having shared loop(s) on non-shared faces!!

Compare the geometry of two faces, and fuse them if they are the same within tolerance. First compare the plane equations. If they are "similar" (within tol), then check all verts in f2 to make sure that they are within tol->dist of f1's geometry. If they are, then fuse the face geometry.

Returns - 0 Faces were not fused. >0 Faces were successfully fused.

Definition at line 1543 of file nmg_fuse.c.

References BN_CK_TOL, bn_coplanar(), BU_LIST_FOR, bu_log(), bn_tol::dist, face_g_plane::f_hd, face::flip, face::fu_p, face::g, face_g_plane::N, NMG_CK_FACE, NMG_CK_FACE_G_PLANE, nmg_ck_fg_verts(), nmg_is_common_bigloop(), nmg_jfg(), face::plane_p, PLPRINT, and VDOT.

Referenced by nmg_model_face_fuse(), and nmg_radial_join_eu().

Here is the call graph for this function:

RT_EXPORT int nmg_model_face_fuse struct model m,
const struct bn_tol tol
 

N M G _ M O D E L _ F A C E _ F U S E

A routine to find all face geometry structures in an nmg model that have the same plane equation, and have them share face geometry. (See also nmg_shell_coplanar_face_merge(), which actually moves the loops into one face).

The criteria for two face geometry structs being the "same" are: 1) The plane equations must be the same, within tolerance. 2) All the vertices on the 2nd face must lie within the distance tolerance of the 1st face's plane equation.

Definition at line 1687 of file nmg_fuse.c.

References BN_CK_TOL, BU_PTBL_END, BU_PTBL_GET, model::magic, NMG_CK_FACE, NMG_CK_FACE_G_EITHER, NMG_CK_FACE_G_PLANE, nmg_ck_fu_verts(), NMG_CK_MODEL, NMG_FACE_G_SNURB_MAGIC, nmg_face_tabulate(), nmg_pr_fu_briefly(), nmg_two_face_fuse(), PLPRINT, and rt_bomb().

Referenced by nmg_model_fuse().

Here is the call graph for this function:

RT_EXPORT int nmg_break_all_es_on_v long *  magic_p,
struct vertex v,
const struct bn_tol tol
 

Referenced by nmg_isect_eu_fu().

RT_EXPORT int nmg_model_break_e_on_v struct model m,
const struct bn_tol tol
 

N M G _ M O D E L _ B R E A K _ E _ O N _ V

As the first step in evaluating a boolean formula, before starting to do face/face intersections, compare every edge in the model with every vertex in the model. If the vertex is within tolerance of the edge, break the edge, and enrole the new edge on a list of edges still to be processed.

A list of edges and a list of vertices are built, and then processed.

Space partitioning could improve the performance of this algorithm. For the moment, a brute-force approach is used.

Returns - Number of edges broken.

Definition at line 1838 of file nmg_fuse.c.

References BN_CK_TOL, bn_isect_pt_lseg(), bu_log(), BU_PTBL_BASEADDR, bu_ptbl_init(), bu_ptbl_ins(), BU_PTBL_LASTADDR, BU_PTBL_LEN, vertex_g::coord, DEBUG_BASIC, DEBUG_BOOL, edgeuse::l, model::magic, bu_list::magic, NMG_CK_EDGEUSE, NMG_CK_MODEL, NMG_CK_VERTEX, nmg_e_and_v_tabulate(), nmg_ebreak(), NMG_EDGE_G_CNURB_MAGIC, vertex::vg_p, and void().

Referenced by nmg_model_fuse().

Here is the call graph for this function:

RT_EXPORT int nmg_model_fuse struct model m,
const struct bn_tol tol
 

N M G _ M O D E L _ F U S E

This is the primary application interface to the geometry fusing support. Fuse together all data structures that are equal to each other, within tolerance.

The algorithm is three part: 1) Fuse together all vertices. 2) Fuse together all face geometry, where appropriate. 3) Fuse together all edges.

Edge fusing is handled last, because the difficult part there is sorting faces radially around the edge. It is important to know whether faces are shared or not at that point.

XXX It would be more efficient to build all the ptbl's at once, XXX with a single traversal of the model.

Definition at line 1942 of file nmg_fuse.c.

References BN_CK_TOL, BU_LIST_FOR, bu_log(), DEBUG_BASIC, NMG_CK_MODEL, nmg_make_faces_within_tol(), nmg_model_break_e_on_v(), nmg_model_edge_fuse(), nmg_model_edge_g_fuse(), nmg_model_face_fuse(), nmg_model_vertex_fuse(), model::r_hd, and nmgregion::s_hd.

Referenced by nmg_boolean(), nmg_find_edge_between_2fu(), and nmg_find_eg_between_2fg().

Here is the call graph for this function:

RT_EXPORT void nmg_radial_sorted_list_insert struct bu_list hd,
struct nmg_radial rad
 

N M G _ R A D I A L _ S O R T E D _ L I S T _ I N S E R T

Build sorted list, with 'ang' running from zero to 2*pi. New edgeuses with same angle as an edgeuse already on the list are added AFTER the last existing one, for lack of any better way to break the tie.

Definition at line 2015 of file nmg_fuse.c.

References nmg_radial::ang, BU_CK_LIST_HEAD, BU_LIST_APPEND, BU_LIST_FOR_BACKWARDS, BU_LIST_INSERT, BU_LIST_IS_EMPTY, BU_LIST_PREV, nmg_radial::fu, nmg_radial::l, NMG_CK_RADIAL, and NULL.

Referenced by nmg_radial_merge_lists().

RT_EXPORT void nmg_radial_verify_pointers const struct bu_list hd,
const struct bn_tol tol
 

Not only verity that list is monotone increasing, but that pointer integrity still exists.

Definition at line 2064 of file nmg_fuse.c.

References nmg_radial::ang, BN_CK_TOL, bn_radtodeg, BU_CK_LIST_HEAD, BU_LIST_FOR, BU_LIST_PNEXT_CIRC, BU_LIST_PPREV_CIRC, bu_log(), nmg_radial::eu, edgeuse::eumate_p, nmg_radial::fu, nmg_pr_radial_list(), NULL, edgeuse::radial_p, and rt_bomb().

Here is the call graph for this function:

RT_EXPORT void nmg_radial_verify_monotone const struct bu_list hd,
const struct bn_tol tol
 

Verify that the angles are monotone increasing. Wire edgeuses are ignored.

Definition at line 2105 of file nmg_fuse.c.

References nmg_radial::ang, BN_CK_TOL, bn_radtodeg, BU_CK_LIST_HEAD, BU_LIST_FOR, bu_log(), nmg_radial::fu, nmg_pr_radial_list(), NULL, and rt_bomb().

Referenced by nmg_radial_join_eu_NEW().

Here is the call graph for this function:

RT_EXPORT void nmg_insure_radial_list_is_increasing struct bu_list hd,
fastf_t  amin,
fastf_t  amax
 

N M G _ I N S U R E _ L I S T _ I S _ I N C R E A S I N G

Check if the passed bu_list is in increasing order. If not, reverse the order of the list. XXX Isn't the word "ensure"?

Definition at line 2133 of file nmg_fuse.c.

References nmg_radial::ang, BU_CK_LIST_HEAD, BU_LIST_FOR, bu_list_len(), bu_list_reverse(), nmg_radial::eu, edgeuse::eumate_p, nmg_radial::fu, MAX_FASTF, nmg_find_fu_of_eu(), and NULL.

Here is the call graph for this function:

RT_EXPORT void nmg_radial_build_list struct bu_list hd,
struct bu_ptbl shell_tbl,
int  existing,
struct edgeuse eu,
const vect_t  xvec,
const vect_t  yvec,
const vect_t  zvec,
const struct bn_tol tol
 

Referenced by nmg_eu_radial_check(), nmg_radial_join_eu_NEW(), and nmg_s_radial_harmonize().

RT_EXPORT void nmg_radial_merge_lists struct bu_list dest,
struct bu_list src,
const struct bn_tol tol
 

N M G _ R A D I A L _ M E R G E _ L I S T S

Merge all of the src list into the dest list, sorting by angles.

Definition at line 2378 of file nmg_fuse.c.

References BN_CK_TOL, BU_CK_LIST_HEAD, BU_LIST_DEQUEUE, BU_LIST_WHILE, nmg_radial::l, and nmg_radial_sorted_list_insert().

Referenced by nmg_radial_join_eu_NEW().

Here is the call graph for this function:

RT_EXPORT int nmg_is_crack_outie const struct edgeuse eu,
const struct bn_tol tol
 

N M G _ I S _ C R A C K _ O U T I E

If there is more than one edgeuse of a loopuse along an edge, then it is a "topological crack". There are two kinds, an "innie", where the crack is a null-area incursion into the interior of the loop, and an "outie", where the crack is a null-area protrusion outside of the interior of the loop.

"Outie" "Innie" *-------* *-------* | ^ | ^ v | v | *<------* | *--->* | *---M-->* | *<-M-* | | | | | v | v | *------>* *------>*

The algorithm used is to compute the geometric midpoint of the crack edge, "delete" that edge from the loop, and then classify the midpoint ("M") against the remainder of the loop. If the edge midpoint is inside the remains of the loop, then the crack is an "innie", otherwise it is an "outie".

When there are an odd number of edgeuses along the crack, then the situation is "nasty":

"Nasty" *-------* | ^ v | *<------* | *------>* | *<------* | *------>* | *<------* | | | | | v | *------------->*

The caller is responsible for making sure that the edgeuse is not a wire edgeuse (i.e. that the edgeuse is part of a loop).

In the "Nasty" case, all the edgeuse pairs are "outies" except for the last lone edgeuse, which should be handled as a "non-crack". Walk the loopuse's edgeuses list in edgeuse order to see which one is the last (non-crack) repeated edgeuse. For efficiency, detecting and dealing with this condition is left up to the caller, and is not checked for here.

Definition at line 2445 of file nmg_fuse.c.

References BN_CK_TOL, bu_log(), vertex_g::coord, DEBUG_BASIC, bn_tol::dist, DIST_PT_PLANE, bn_tol::dist_sq, edgeuse::e_p, edgeuse::eumate_p, loopuse::fu_p, edgeuse::lu_p, loopuse::magic_p, MAGNITUDE, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_FACEUSE, NMG_CK_LOOPUSE, NMG_CLASS_AinB, NMG_CLASS_AonBshared, NMG_CLASS_AoutB, nmg_class_name(), nmg_class_pt_lu_except(), NMG_FACEUSE_MAGIC, NMG_GET_FU_PLANE, nmg_loop_is_a_crack(), nmg_orientation(), nmg_pr_lu_briefly(), loopuse::orientation, OT_SAME, rt_bomb(), rt_pr_tol(), SMALL_FASTF, SQRT_SMALL_FASTF, edgeuse::up, loopuse::up, V3ARGS, vertexuse::v_p, VADD2SCALE, vertex::vg_p, VJOIN1, and edgeuse::vu_p.

Referenced by nmg_radial_mark_cracks().

Here is the call graph for this function:

RT_EXPORT struct nmg_radial* nmg_find_radial_eu const struct bu_list hd,
const struct edgeuse eu
 

N M G _ F I N D _ R A D I A L _ E U

Definition at line 2540 of file nmg_fuse.c.

References BU_CK_LIST_HEAD, BU_LIST_FOR, bu_log(), nmg_radial::eu, edgeuse::eumate_p, NMG_CK_EDGEUSE, NULL, and rt_bomb().

Here is the call graph for this function:

RT_EXPORT const struct edgeuse* nmg_find_next_use_of_2e_in_lu const struct edgeuse eu,
const struct edge e1,
const struct edge e2
 

N M G _ F I N D _ N E X T _ U S E _ O F _ 2 E _ I N _ L U

Find the next use of either of two edges in the loopuse. The second edge pointer may be NULL.

Definition at line 2564 of file nmg_fuse.c.

References BU_LIST_PNEXT_CIRC, edgeuse::e_p, edgeuse::l, edgeuse::lu_p, NMG_CK_EDGE, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, and edgeuse::up.

RT_EXPORT void nmg_radial_mark_cracks struct bu_list hd,
const struct edge e1,
const struct edge e2,
const struct bn_tol tol
 

N M G _ R A D I A L _ M A R K _ C R A C K S

For every edgeuse, if there are other edgeuses around this edge from the same face, then mark them all as part of a "crack".

To be a crack the two edgeuses must be from the same loopuse.

If the count of repeated ("crack") edgeuses is even, then classify the entire crack as an "innie" or an "outie". If the count is odd, this is a "Nasty" -- all but one edgeuse are marked as "outies", and the remaining one is marked as a non-crack. The "outie" edgeuses are marked off in pairs, in the loopuses's edgeuse order.

Definition at line 2601 of file nmg_fuse.c.

References BN_CK_TOL, BU_CK_LIST_HEAD, BU_LIST_FOR, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, bu_log(), DEBUG_MESH_EU, nmg_radial::eu, nmg_radial::is_crack, nmg_radial::is_outie, NMG_CK_EDGE, NMG_CK_RADIAL, nmg_is_crack_outie(), nmg_pr_lu_briefly(), nmg_pr_radial_list(), and loopuse::up.

Referenced by nmg_eu_radial_check(), and nmg_radial_join_eu_NEW().

Here is the call graph for this function:

RT_EXPORT struct nmg_radial* nmg_radial_find_an_original const struct bu_list hd,
const struct shell s,
const struct bn_tol tol
 

N M G _ R A D I A L _ F I N D _ A N _ O R I G I N A L

Returns - NULL No edgeuses from indicated shell on this list nmg_radial* An original, else first newbie, else a newbie crack.

Definition at line 2723 of file nmg_fuse.c.

References BU_CK_LIST_HEAD, BU_LIST_FOR, bu_log(), nmg_radial::fu, nmg_radial::is_outie, NMG_CK_RADIAL, NMG_CK_SHELL, nmg_pr_radial_list(), NULL, rt_bomb(), and nmg_radial::s.

Referenced by nmg_radial_check_parity(), and nmg_radial_mark_flips().

Here is the call graph for this function:

RT_EXPORT int nmg_radial_mark_flips struct bu_list hd,
const struct shell s,
const struct bn_tol tol
 

N M G _ R A D I A L _ M A R K _ F L I P S

For a given shell, find an original edgeuse from that shell, and then mark parity violators with a "flip" flag.

Definition at line 2792 of file nmg_fuse.c.

References BN_CK_TOL, BU_CK_LIST_HEAD, BU_LIST_FOR, BU_LIST_FOR_CIRC, BU_LIST_PPREV_CIRC, bu_log(), DEBUG_MESH_EU, nmg_radial::eu, nmg_radial::fu, nmg_radial::is_outie, nmg_radial::needs_flip, NMG_CK_RADIAL, NMG_CK_SHELL, nmg_pr_radial_list(), nmg_radial_find_an_original(), faceuse::orientation, orig, OT_SAME, rt_bomb(), nmg_radial::s, V3ARGS, vertexuse::v_p, and edgeuse::vu_p.

Referenced by nmg_eu_radial_check(), nmg_radial_join_eu_NEW(), and nmg_s_radial_harmonize().

Here is the call graph for this function:

RT_EXPORT int nmg_radial_check_parity const struct bu_list hd,
const struct bu_ptbl shells,
const struct bn_tol tol
 

N M G _ R A D I A L _ C H E C K _ P A R I T Y

For each shell, check orientation parity of edgeuses within that shell.

Definition at line 2891 of file nmg_fuse.c.

References BN_CK_TOL, BU_CK_LIST_HEAD, BU_CK_PTBL, BU_LIST_FOR_CIRC, bu_log(), BU_PTBL_BASEADDR, BU_PTBL_LASTADDR, nmg_radial::eu, nmg_radial::fu, nmg_radial::is_outie, NMG_CK_RADIAL, NMG_CK_SHELL, nmg_radial_find_an_original(), faceuse::orientation, orig, OT_SAME, and nmg_radial::s.

Referenced by nmg_radial_join_eu_NEW().

Here is the call graph for this function:

RT_EXPORT void nmg_radial_implement_decisions struct bu_list hd,
const struct bn_tol tol,
struct edgeuse eu1,
vect_t  xvec,
vect_t  yvec,
vect_t  zvec
 

RT_EXPORT void nmg_pr_radial const char *  title,
const struct nmg_radial rad
 

N M G _ P R _ R A D I A L

Definition at line 3019 of file nmg_fuse.c.

References nmg_radial::ang, bn_radtodeg, bu_log(), nmg_radial::eu, edgeuse::eumate_p, nmg_radial::existing_flag, faceuse::f_p, nmg_radial::fu, nmg_radial::is_crack, nmg_radial::is_outie, nmg_radial::needs_flip, NMG_CK_RADIAL, nmg_orientation(), NULL, faceuse::orientation, and nmg_radial::s.

Referenced by nmg_do_radial_join(), nmg_pr_radial_list(), and nmg_radial_implement_decisions().

Here is the call graph for this function:

RT_EXPORT void nmg_pr_radial_list const struct bu_list hd,
const struct bn_tol tol
 

N M G _ P R _ R A D I A L _ L I S T

Patterned after nmg_pr_fu_around_eu_vecs(), with similar format.

Definition at line 3055 of file nmg_fuse.c.

References BN_CK_TOL, BU_CK_LIST_HEAD, BU_LIST_FOR, bu_log(), NMG_CK_RADIAL, and nmg_pr_radial().

Referenced by nmg_do_radial_join(), nmg_eu_radial_check(), nmg_radial_find_an_original(), nmg_radial_join_eu_NEW(), nmg_radial_mark_cracks(), nmg_radial_mark_flips(), nmg_radial_verify_monotone(), nmg_radial_verify_pointers(), and nmg_s_radial_harmonize().

Here is the call graph for this function:

RT_EXPORT void nmg_do_radial_flips struct bu_list hd  ) 
 

N M G _ D O _ R A D I A L _ F L I P S

This routine looks for nmg_radial structures with the same angle, and sorts them to match the order of nmg_radial structures that are not at that same angle

Definition at line 3080 of file nmg_fuse.c.

References nmg_radial::ang, BN_TOL_MAGIC, BU_CK_LIST_HEAD, BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, BU_LIST_PNEXT_CIRC, BU_LIST_PPREV_CIRC, bn_tol::dist, bn_tol::dist_sq, nmg_radial::fu, nmg_radial::l, bn_tol::magic, bn_tol::para, bn_tol::perp, and nmg_radial::s.

Referenced by nmg_do_radial_join().

RT_EXPORT void nmg_do_radial_join struct bu_list hd,
struct edgeuse eu1ref,
vect_t  xvec,
vect_t  yvec,
vect_t  zvec,
const struct bn_tol tol
 

Referenced by nmg_radial_join_eu_NEW().

RT_EXPORT void nmg_radial_join_eu_NEW struct edgeuse eu1,
struct edgeuse eu2,
const struct bn_tol tol
 

N M G _ R A D I A L _ J O I N _ E U _ N E W

A new routine, that uses "global information" about the edge to plan the operations to be performed.

Definition at line 3291 of file nmg_fuse.c.

References BN_CK_TOL, bn_pt3_pt3_equal(), bu_free(), BU_LIST_DEQUEUE, BU_LIST_INIT, BU_LIST_WHILE, bu_log(), BU_PTBL_BASEADDR, bu_ptbl_free(), bu_ptbl_init(), BU_PTBL_LASTADDR, vertex_g::coord, DEBUG_MESH_EU, edgeuse::e_p, edgeuse::eumate_p, faceuse::f_p, edgeuse::g, face::g, nmg_radial::l, edgeuse::lseg_p, edgeuse::magic_p, face::magic_p, NMG_ARE_EUS_ADJACENT, NMG_CK_EDGEUSE, nmg_do_radial_join(), nmg_edge_g(), nmg_eu_2vecs_perp(), nmg_euprint(), NMG_FACE_G_SNURB_MAGIC, nmg_find_fu_of_eu(), nmg_find_ot_same_eu_of_e(), nmg_find_s_of_eu(), nmg_je(), nmg_jeg(), nmg_pr_fu_around_eu_vecs(), nmg_pr_ptbl(), nmg_pr_radial_list(), nmg_radial_build_list(), nmg_radial_check_parity(), nmg_radial_mark_cracks(), nmg_radial_mark_flips(), nmg_radial_merge_lists(), nmg_radial_verify_monotone(), nmg_use_edge_g(), faceuse::orientation, OT_SAME, edgeuse::radial_p, rt_bomb(), V3ARGS, vertexuse::v_p, vertex::vg_p, void(), and edgeuse::vu_p.

Referenced by nmg_edge_collapse(), and nmg_radial_join_eu().

Here is the call graph for this function:

RT_EXPORT void nmg_radial_exchange_marked struct bu_list hd,
const struct bn_tol tol
 

N M G _ R A D I A L _ E X C H A N G E _ M A R K E D

Exchange eu and eu->eumate_p on the radial list, where marked.

Definition at line 3470 of file nmg_fuse.c.

References after, BN_CK_TOL, BU_CK_LIST_HEAD, BU_LIST_FOR, nmg_radial::eu, edgeuse::eumate_p, nmg_radial::fu, nmg_radial::needs_flip, nmg_find_fu_of_eu(), and edgeuse::radial_p.

Referenced by nmg_s_radial_harmonize().

Here is the call graph for this function:

RT_EXPORT void nmg_s_radial_harmonize struct shell s,
const struct bn_tol tol
 

N M G _ S _ R A D I A L _ H A R M O N I Z E

Visit each edge in this shell exactly once. Where the radial edgeuse parity has become disrupted due to a boolean operation or whatever, fix it.

Definition at line 3520 of file nmg_fuse.c.

References BN_CK_TOL, bu_free(), BU_LIST_DEQUEUE, BU_LIST_INIT, BU_LIST_WHILE, bu_log(), BU_PTBL_BASEADDR, BU_PTBL_LASTADDR, DEBUG_BASIC, shell::l, bu_list::magic, NMG_CK_EDGE, NMG_CK_SHELL, nmg_edge_tabulate(), nmg_eu_2vecs_perp(), nmg_find_ot_same_eu_of_e(), nmg_pr_fu_around_eu_vecs(), nmg_pr_radial_list(), nmg_radial_build_list(), nmg_radial_exchange_marked(), nmg_radial_mark_flips(), and NULL.

Referenced by nmg_js().

Here is the call graph for this function:

RT_EXPORT int nmg_eu_radial_check const struct edgeuse eu,
const struct shell s,
const struct bn_tol tol
 

N M G _ E U _ R A D I A L _ C H E C K

Where the radial edgeuse parity has become disrupted, note it.

Returns - 0 OK !0 Radial parity problem detected

Definition at line 3583 of file nmg_fuse.c.

References BN_CK_TOL, bu_free(), BU_LIST_DEQUEUE, BU_LIST_FOR, BU_LIST_INIT, BU_LIST_WHILE, bu_log(), vertex_g::coord, DEBUG_BASIC, debug_file_count, edgeuse::e_p, nmg_radial::eu, edgeuse::eumate_p, nmg_radial::fu, edgeuse::l, nmg_radial::l, bu_list::magic, NMG_CK_EDGEUSE, nmg_eu_2vecs_perp(), nmg_find_fu_of_eu(), nmg_find_model(), nmg_pr_fu_around_eu_vecs(), nmg_pr_fu_briefly(), nmg_pr_radial_list(), nmg_radial_build_list(), nmg_radial_mark_cracks(), nmg_radial_mark_flips(), nmg_stash_model_to_file(), NULL, faceuse::orientation, OT_SAME, nmg_radial::s, V3ARGS, vertexuse::v_p, vertex::vg_p, and edgeuse::vu_p.

Referenced by nmg_check_radial(), nmg_ebreaker(), and nmg_s_radial_check().

Here is the call graph for this function:

RT_EXPORT void nmg_s_radial_check struct shell s,
const struct bn_tol tol
 

N M G _ S _ R A D I A L _ C H E C K

Visit each edge in this shell exactly once, and check it.

Definition at line 3649 of file nmg_fuse.c.

References BN_CK_TOL, bu_log(), BU_PTBL_BASEADDR, BU_PTBL_LASTADDR, DEBUG_BASIC, shell::l, bu_list::magic, NMG_CK_EDGE, NMG_CK_SHELL, nmg_edge_tabulate(), nmg_eu_radial_check(), and nmg_find_ot_same_eu_of_e().

Referenced by nmg_r_radial_check().

Here is the call graph for this function:

RT_EXPORT void nmg_r_radial_check const struct nmgregion r,
const struct bn_tol tol
 

N M G _ R _ R A D I A L _ C H E C K

Definition at line 3680 of file nmg_fuse.c.

References BN_CK_TOL, BU_LIST_FOR, bu_log(), DEBUG_BASIC, NMG_CK_REGION, NMG_CK_SHELL, nmg_s_radial_check(), and nmgregion::s_hd.

Referenced by nmg_booltree_evaluate().

Here is the call graph for this function:

RT_EXPORT struct edge_g_lseg* nmg_pick_best_edge_g struct edgeuse eu1,
struct edgeuse eu2,
const struct bn_tol tol
 

N M G _ P I C K _ B E S T _ E D G E _ G

Given two edgeuses with different edge geometry but running between the same two vertices, select the proper edge geometry to associate with.

Really, there are 3 geometries to be compared here: the vector between the two endpoints of this edge, and the two edge_g structures. Rather than always taking eu2 or eu1, select the one that best fits this one edge.

Consider fu1: B * /| eg2/ | / | D/ | * | / | A *-*----* C E eg1

At the start of a face/face intersection, eg1 runs from A to C, and eg2 runs ADB. The line of intersection with the other face (fu2, not drawn) lies along eg1. Assume that edge AC needs to be broken at E, where E is just a little more than tol->dist away from A. Existing point D is found because it *is* within tol->dist of E, thanks to the cosine of angle BAC. So, edge AC is broken on vertex D, and the intersection list contains vertexuses A, E, and C.

Because D and E are the same point, fu1 has become a triangle with a little "spike" on the end. If this is handled simply by re-homing edge AE to eg2, it may cause trouble, because eg1 now runs EC, but the geometry for eg1 runs AC. If there are other vertices on edge eg1, the problem can not be resolved simply by recomputing the geometry of eg1. Since E (D) is within tolerance of eg1, it is not unreasonable just to leave eg1 alone.

The issue boils down to selecting whether the existing eg1 or eg2 best represents the direction of the little stub edge AD (shared with AE). In this case, eg2 is the correct choice, as AD (and AE) lie on line AB.

It would be disasterous to force *all* of eg1 to use the edge geometry of eg2, as the two lines are very different.

Definition at line 146 of file nmg_mesh.c.

References BN_CK_TOL, bn_radtodeg, bu_log(), vertex_g::coord, DEBUG_BASIC, edge_g_lseg::e_dir, edgeuse::eumate_p, edgeuse::g, edgeuse::lseg_p, NMG_CK_EDGE_G_LSEG, NMG_CK_EDGEUSE, vertexuse::v_p, VDOT, vertex::vg_p, VMOVE, VSUB2, edgeuse::vu_p, and VUNITIZE.

Referenced by nmg_radial_join_eu().

Here is the call graph for this function:

RT_EXPORT void nmg_visit_vertex struct vertex v,
const struct nmg_visit_handlers htab,
genptr_t  state
 

N M G _ V I S I T _ V E R T E X

Definition at line 64 of file nmg_visit.c.

References NMG_CK_VERTEX.

Referenced by nmg_visit_vertexuse().

RT_EXPORT void nmg_visit_vertexuse struct vertexuse vu,
const struct nmg_visit_handlers htab,
genptr_t  state
 

N M G _ V I S I T _ V E R T E X U S E

Definition at line 81 of file nmg_visit.c.

References NMG_CK_VERTEXUSE, and nmg_visit_vertex().

Referenced by nmg_visit(), nmg_visit_edgeuse(), nmg_visit_loopuse(), and nmg_visit_shell().

Here is the call graph for this function:

RT_EXPORT void nmg_visit_edge struct edge e,
const struct nmg_visit_handlers htab,
genptr_t  state
 

N M G _ V I S I T _ E D G E

Definition at line 102 of file nmg_visit.c.

References NMG_CK_EDGE.

Referenced by nmg_visit_edgeuse().

RT_EXPORT void nmg_visit_edgeuse struct edgeuse eu,
const struct nmg_visit_handlers htab,
genptr_t  state
 

N M G _ V I S I T _ E D G E U S E

Definition at line 116 of file nmg_visit.c.

References NMG_CK_EDGEUSE, nmg_visit_edge(), and nmg_visit_vertexuse().

Referenced by nmg_visit(), nmg_visit_loopuse(), and nmg_visit_shell().

Here is the call graph for this function:

RT_EXPORT void nmg_visit_loop struct loop l,
const struct nmg_visit_handlers htab,
genptr_t  state
 

N M G _ V I S I T _ L O O P

Definition at line 138 of file nmg_visit.c.

References faceuse::l, and NMG_CK_LOOP.

Referenced by nmg_visit_loopuse().

RT_EXPORT void nmg_visit_loopuse struct loopuse lu,
const struct nmg_visit_handlers htab,
genptr_t  state
 

N M G _ V I S I T _ L O O P U S E

Definition at line 155 of file nmg_visit.c.

References BU_LIST_FIRST, BU_LIST_FIRST_MAGIC, BU_LIST_FOR, NMG_CK_LOOPUSE, NMG_VERTEXUSE_MAGIC, nmg_visit_edgeuse(), nmg_visit_loop(), and nmg_visit_vertexuse().

Referenced by nmg_visit(), nmg_visit_faceuse(), and nmg_visit_shell().

Here is the call graph for this function:

RT_EXPORT void nmg_visit_face struct face f,
const struct nmg_visit_handlers htab,
genptr_t  state
 

N M G _ V I S I T _ F A C E

Definition at line 183 of file nmg_visit.c.

Referenced by nmg_visit_faceuse().

RT_EXPORT void nmg_visit_faceuse struct faceuse fu,
const struct nmg_visit_handlers htab,
genptr_t  state
 

N M G _ V I S I T _ F A C E U S E

Definition at line 199 of file nmg_visit.c.

References BU_LIST_FOR, NMG_CK_FACEUSE, nmg_visit_face(), and nmg_visit_loopuse().

Referenced by nmg_visit(), and nmg_visit_shell().

Here is the call graph for this function:

RT_EXPORT void nmg_visit_shell struct shell s,
const struct nmg_visit_handlers htab,
genptr_t  state
 

N M G _ V I S I T _ S H E L L

Definition at line 223 of file nmg_visit.c.

References BU_LIST_FOR, NMG_CK_SHELL, nmg_visit_edgeuse(), nmg_visit_faceuse(), nmg_visit_loopuse(), and nmg_visit_vertexuse().

Referenced by nmg_visit(), and nmg_visit_region().

Here is the call graph for this function:

RT_EXPORT void nmg_visit_region struct nmgregion r,
const struct nmg_visit_handlers htab,
genptr_t  state
 

N M G _ V I S I T _ R E G I O N

Definition at line 256 of file nmg_visit.c.

References BU_LIST_FOR, NMG_CK_REGION, and nmg_visit_shell().

Referenced by nmg_visit(), and nmg_visit_model().

Here is the call graph for this function:

RT_EXPORT void nmg_visit_model struct model model,
const struct nmg_visit_handlers htab,
genptr_t  state
 

N M G _ V I S I T _ M O D E L

Definition at line 279 of file nmg_visit.c.

References BU_LIST_FOR, NMG_CK_MODEL, and nmg_visit_region().

Referenced by nmg_visit().

Here is the call graph for this function:

RT_EXPORT void nmg_visit const long *  magicp,
const struct nmg_visit_handlers htab,
genptr_t  state
 

Referenced by nmg_ck_vs_in_region(), nmg_e_and_v_tabulate(), nmg_edge_g_tabulate(), nmg_edge_tabulate(), nmg_edgeuse_on_line_tabulate(), nmg_edgeuse_tabulate(), nmg_face_tabulate(), nmg_find_e_nearest_pt2(), nmg_has_dangling_faces(), nmg_split_loops_into_faces(), nmg_unbreak_region_edges(), nmg_vertex_tabulate(), and nmg_vertexuse_normal_tabulate().

RT_EXPORT int db5_type_tag_from_major char **  tag,
const int  major
 

Definition at line 231 of file db5_types.c.

References DB5_MAJORTYPE_RESERVED, db5_type::heed_minor, and db5_type::major_code.

RT_EXPORT int db5_type_descrip_from_major char **  descrip,
const int  major
 

Definition at line 246 of file db5_types.c.

References DB5_MAJORTYPE_RESERVED, db5_type::description, db5_type::heed_minor, and db5_type::major_code.

RT_EXPORT int db5_type_tag_from_codes char **  tag,
const int  major,
const int  minor
 

Definition at line 261 of file db5_types.c.

References DB5_MAJORTYPE_RESERVED, db5_type::heed_minor, db5_type::major_code, and db5_type::minor_code.

RT_EXPORT int db5_type_descrip_from_codes char **  descrip,
const int  major,
const int  minor
 

Definition at line 281 of file db5_types.c.

References DB5_MAJORTYPE_RESERVED, db5_type::description, db5_type::heed_minor, db5_type::major_code, and db5_type::minor_code.

Referenced by rt_retrieve_binunif().

RT_EXPORT int db5_type_codes_from_tag int *  major,
int *  minor,
const char *  tag
 

Definition at line 302 of file db5_types.c.

References DB5_MAJORTYPE_RESERVED, db5_type::major_code, and db5_type::minor_code.

RT_EXPORT int db5_type_codes_from_descrip int *  major,
int *  minor,
const char *  descrip
 

Definition at line 319 of file db5_types.c.

References DB5_MAJORTYPE_RESERVED, db5_type::description, db5_type::major_code, and db5_type::minor_code.

RT_EXPORT size_t db5_type_sizeof_h_binu const int  minor  ) 
 

Definition at line 337 of file db5_types.c.

References DB5_MINORTYPE_BINU_16BITINT, DB5_MINORTYPE_BINU_16BITINT_U, DB5_MINORTYPE_BINU_32BITINT, DB5_MINORTYPE_BINU_32BITINT_U, DB5_MINORTYPE_BINU_64BITINT, DB5_MINORTYPE_BINU_64BITINT_U, DB5_MINORTYPE_BINU_8BITINT, DB5_MINORTYPE_BINU_8BITINT_U, DB5_MINORTYPE_BINU_DOUBLE, and DB5_MINORTYPE_BINU_FLOAT.

Referenced by rt_mk_binunif(), and wdb_binary_cmd().

RT_EXPORT size_t db5_type_sizeof_n_binu const int  minor  ) 
 

Definition at line 360 of file db5_types.c.

References DB5_MINORTYPE_BINU_16BITINT, DB5_MINORTYPE_BINU_16BITINT_U, DB5_MINORTYPE_BINU_32BITINT, DB5_MINORTYPE_BINU_32BITINT_U, DB5_MINORTYPE_BINU_64BITINT, DB5_MINORTYPE_BINU_64BITINT_U, DB5_MINORTYPE_BINU_8BITINT, DB5_MINORTYPE_BINU_8BITINT_U, DB5_MINORTYPE_BINU_DOUBLE, DB5_MINORTYPE_BINU_FLOAT, SIZEOF_NETWORK_DOUBLE, and SIZEOF_NETWORK_FLOAT.

RT_EXPORT int wdb_create_cmd Tcl_Interp interp,
struct rt_wdb wdbp,
const char *  oname
 

Definition at line 458 of file wdb_obj.c.

References interp, NULL, RT_WDB_NULL, TCL_ERROR, TCL_OK, void(), and wdb_deleteProc().

Here is the call graph for this function:

void wdb_deleteProc ClientData  clientData  ) 
 

Definition at line 437 of file wdb_obj.c.

References BU_LIST_DEQUEUE, bu_observer_free(), bu_vls_free(), dgo_impending_wdb_close(), rt_wdb::l, RT_CK_WDB, wdb_close(), rt_wdb::wdb_interp, rt_wdb::wdb_name, and rt_wdb::wdb_observers.

Referenced by wdb_create_cmd().

Here is the call graph for this function:

int wdb_get_tcl ClientData  clientData,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 897 of file wdb_obj.c.

References interp, and wdb_get_cmd().

Here is the call graph for this function:

int dgo_cmd ClientData  clientData,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 255 of file dg_obj.c.

References bu_cmd(), and interp.

Here is the call graph for this function:

int wdb_init_obj Tcl_Interp interp,
struct rt_wdb wdbp,
const char *  oname
 

Definition at line 483 of file wdb_obj.c.

References rt_tess_tol::abs, BN_TOL_MAGIC, BU_LIST_APPEND, BU_LIST_INIT, bu_vls_init(), bu_vls_strcpy(), bn_tol::dist, bn_tol::dist_sq, interp, rt_wdb::l, bu_observer::l, bn_tol::magic, rt_tess_tol::magic, rt_tess_tol::norm, NULL, bn_tol::para, bn_tol::perp, rt_tess_tol::rel, rt_initial_tree_state, RT_TESS_TOL_MAGIC, rt_uniresource, RT_WDB_NULL, TCL_ERROR, TCL_OK, db_tree_state::ts_tol, db_tree_state::ts_ttol, rt_wdb::wdb_air_default, rt_wdb::wdb_initial_tree_state, rt_wdb::wdb_interp, rt_wdb::wdb_item_default, rt_wdb::wdb_los_default, rt_wdb::wdb_mat_default, rt_wdb::wdb_name, rt_wdb::wdb_observers, rt_wdb::wdb_resp, rt_wdb::wdb_tol, and rt_wdb::wdb_ttol.

Here is the call graph for this function:

struct db_i * wdb_prep_dbip Tcl_Interp interp,
const char *  filename
 

Definition at line 658 of file wdb_obj.c.

References db_create(), db_dirbuild(), db_open(), DBI_NULL, interp, NULL, and perror().

Referenced by wdb_reopen_cmd().

Here is the call graph for this function:

RT_EXPORT int wdb_bot_face_sort_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 8946 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, and TCL_ERROR.

Here is the call graph for this function:

RT_EXPORT int wdb_bot_decimate_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 9932 of file wdb_obj.c.

References atof(), bu_getopt(), bu_optarg, bu_opterr, bu_optind, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), DB5_MAJORTYPE_BRLCAD, DB5_MINORTYPE_BRLCAD_BOT, db_lookup(), db_i::dbi_local2base, rt_wdb::dbip, DIR_NULL, rt_db_internal::idb_major_type, rt_db_internal::idb_minor_type, rt_db_internal::idb_ptr, interp, LOOKUP_QUIET, RT_BOT_CK_MAGIC, rt_bot_decimate(), rt_db_free_internal(), rt_db_get_internal(), RT_INIT_DB_INTERNAL, TCL_ERROR, TCL_OK, wdb_put_internal(), and rt_wdb::wdb_resp.

Here is the call graph for this function:

RT_EXPORT int wdb_close_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

RT_EXPORT int wdb_reopen_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 743 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_close(), db_i::dbi_filename, DBI_NULL, rt_wdb::dbip, dgo_zapall(), interp, NULL, TCL_ERROR, TCL_OK, and wdb_prep_dbip().

Here is the call graph for this function:

RT_EXPORT int wdb_match_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 800 of file wdb_obj.c.

References bu_vls_init(), bu_vls_strcat(), db_regexp_match_all(), rt_wdb::dbip, interp, NULL, RT_CK_WDB_TCL, and TCL_ERROR.

Here is the call graph for this function:

RT_EXPORT int wdb_get_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 848 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), rt_wdb::dbip, rt_db_internal::idb_meth, interp, NULL, rt_db_free_internal(), rt_tcl_import_from_path(), rt_uniresource, status, and TCL_ERROR.

Referenced by wdb_get_tcl().

Here is the call graph for this function:

RT_EXPORT int wdb_put_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1081 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_QUIET, name, NULL, RT_INIT_DB_INTERNAL, TCL_ERROR, and type.

Here is the call graph for this function:

RT_EXPORT int wdb_adjust_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1179 of file wdb_obj.c.

References bu_observer_notify(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), rt_wdb::dbip, DIR_NULL, rt_db_internal::idb_meth, interp, LOOKUP_QUIET, name, NULL, RT_CK_DB_INTERNAL, RT_CK_DBI_TCL, RT_CK_FUNCTAB, rt_db_free_internal(), rt_db_get_internal(), rt_uniresource, status, TCL_ERROR, TCL_OK, rt_wdb::wdb_name, rt_wdb::wdb_observers, and wdb_put_internal().

Here is the call graph for this function:

RT_EXPORT int wdb_form_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1262 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, rt_get_functab_by_label(), and TCL_ERROR.

Here is the call graph for this function:

RT_EXPORT int wdb_tops_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1302 of file wdb_obj.c.

References bu_getopt(), bu_optind, directory::d_forw, directory::d_nref, db_update_nref(), db_i::dbi_Head, db_i::dbi_version, rt_wdb::dbip, DIR_NULL, interp, NULL, RT_CK_DBI_TCL, RT_CK_WDB_TCL, RT_DBNHASH, and rt_uniresource.

Here is the call graph for this function:

RT_EXPORT int wdb_rt_gettrees_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1456 of file wdb_obj.c.

References application::a_magic, application::a_purpose, application::a_resource, application::a_rt_i, BU_ASSERT_PTR, BU_GETSTRUCT, bu_malloc(), BU_PTBL_GET, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), rt_wdb::dbip, interp, NULL, RT_AP_MAGIC, RT_APPLICATION_INIT, rt_ck(), RT_CK_DBI_TCL, RT_CK_WDB_TCL, rt_free_rti(), rt_gettrees(), rt_init_resource(), rt_new_rti(), rt_tcl_rt(), rt_i::rti_dont_instance, rt_i::rti_hasty_prep, rt_i::rti_resources, TCL_ERROR, TCL_OK, rt_i::useair, and void().

Here is the call graph for this function:

RT_EXPORT int wdb_dump_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1806 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_dump(), rt_wdb::dbip, interp, NULL, RT_CK_DBI_TCL, RT_CK_WDB_TCL, RT_WDB_NULL, TCL_ERROR, TCL_OK, wdb_close(), and wdb_fopen().

Here is the call graph for this function:

RT_EXPORT int wdb_dbip_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1865 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), rt_wdb::dbip, interp, NULL, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

RT_EXPORT int wdb_ls_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1906 of file wdb_obj.c.

References bu_avs_add(), bu_avs_add_nonunique(), bu_avs_init(), bu_getopt(), bu_optind, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), DIR_COMB, DIR_HIDDEN, DIR_REGION, DIR_SOLID, interp, MAXARGS, NULL, and TCL_ERROR.

Here is the call graph for this function:

RT_EXPORT int wdb_list_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2080 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, MAXARGS, NULL, TCL_ERROR, and wdb_pathsum_cmd().

Here is the call graph for this function:

RT_EXPORT int wdb_lt_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 5002 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, and TCL_ERROR.

Here is the call graph for this function:

RT_EXPORT int wdb_pathlist_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 8515 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_walk_tree(), rt_wdb::dbip, interp, TCL_ERROR, TCL_OK, and rt_wdb::wdb_initial_tree_state.

Here is the call graph for this function:

int wdb_pathsum_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2347 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, MAXARGS, TCL_ERROR, WDB_CPEVAL, WDB_LISTEVAL, WDB_LISTPATH, wdb_trace_data::wtd_dbip, wdb_trace_data::wtd_flag, wdb_trace_data::wtd_interp, wdb_trace_data::wtd_obj, wdb_trace_data::wtd_objpos, and wdb_trace_data::wtd_prflag.

Referenced by wdb_list_cmd().

Here is the call graph for this function:

RT_EXPORT int wdb_expand_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2474 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, MAXARGS, and TCL_ERROR.

Here is the call graph for this function:

RT_EXPORT int wdb_kill_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2569 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_delete(), db_dirdelete(), db_lookup(), rt_wdb::dbip, dgo_eraseobjall_callback(), DIR_NULL, interp, LOOKUP_NOISY, LOOKUP_QUIET, MAXARGS, RT_DIR_PHONY_ADDR, TCL_ERROR, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_killall_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2644 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_flags, directory::d_forw, directory::d_namep, db_i::dbi_Head, rt_wdb::dbip, DIR_NULL, interp, MAXARGS, rt_db_get_internal(), rt_uniresource, TCL_ERROR, TCL_OK, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_killtree_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2745 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_functree(), db_lookup(), rt_wdb::dbip, DIR_NULL, interp, wdb_killtree_data::interp, LOOKUP_NOISY, MAXARGS, wdb_killtree_data::notify, RT_DIR_PHONY_ADDR, TCL_ERROR, rt_wdb::wdb_resp, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_copy_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2835 of file wdb_obj.c.

References bu_free_external(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_flags, directory::d_minor_type, db_diradd(), db_get_external(), db_lookup(), db_put_external(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, LOOKUP_QUIET, TCL_ERROR, TCL_OK, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_move_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2902 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), db_rename(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, LOOKUP_QUIET, rt_db_free_internal(), rt_db_get_internal(), rt_db_put_internal(), rt_uniresource, TCL_ERROR, TCL_OK, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_move_all_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2973 of file wdb_obj.c.

References bu_free(), bu_log(), bu_strdup, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_forw, directory::d_major_type, directory::d_minor_type, directory::d_namep, DB5_MAJORTYPE_BRLCAD, DB5_MINORTYPE_BRLCAD_EXTRUDE, DB5_MINORTYPE_BRLCAD_SKETCH, db_lookup(), db_i::dbi_Head, db_i::dbi_version, rt_wdb::dbip, DIR_NULL, rt_db_internal::idb_ptr, interp, LOOKUP_NOISY, LOOKUP_QUIET, NAMESIZE, rt_db_get_internal(), rt_db_put_internal(), RT_EXTRUDE_CK_MAGIC, rt_uniresource, stack, TCL_ERROR, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_concat_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 3339 of file wdb_obj.c.

References ADD_PREFIX, ADD_SUFFIX, bu_free(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bu_vls_strcpy(), bu_vls_strlen(), bu_vls_trunc(), directory::d_major_type, DB5_MAJORTYPE_ATTRIBUTE_ONLY, db_close(), db_dirbuild(), db_open(), db_sync(), db_i::dbi_filename, db_i::dbi_freep, DBI_NULL, db_i::dbi_version, rt_wdb::dbip, FOR_ALL_DIRECTORY_END, FOR_ALL_DIRECTORY_START, interp, concat_data::new_dbip, concat_data::old_dbip, OLD_PREFIX, perror(), concat_data::prestr, ptr, rt_mempurge(), TCL_ERROR, Tcl_GetHashValue, TCL_OK, TCL_STRING_KEYS, concat_data::unique_mode, void(), and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_dup_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 3722 of file wdb_obj.c.

References bu_free(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bu_vls_strcpy(), bu_vls_strlen(), bu_vls_trunc(), db5_scan(), db_close(), db_open(), db_scan(), db_i::dbi_filename, db_i::dbi_freep, DBI_NULL, db_i::dbi_version, rt_wdb::dbip, dir_check_stuff::dup_dirp, interp, dir_check_stuff::main_dbip, perror(), rt_mempurge(), TCL_ERROR, TCL_OK, void(), wdb_getspace(), rt_wdb::wdb_ncharadd, rt_wdb::wdb_num_dups, rt_wdb::wdb_prestr, wdb_vls_col_pr4v(), and dir_check_stuff::wdbp.

Here is the call graph for this function:

RT_EXPORT int wdb_group_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 3824 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, MAXARGS, TCL_ERROR, wdb_combadd(), WDB_TCL_CHECK_READ_ONLY, and WMOP_UNION.

Here is the call graph for this function:

RT_EXPORT int wdb_remove_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 3872 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_flags, directory::d_namep, db_lookup(), db_tree_del_dbleaf(), rt_wdb::dbip, DIR_NULL, rt_db_internal::idb_ptr, interp, LOOKUP_NOISY, MAXARGS, RT_CK_COMB, rt_db_get_internal(), rt_uniresource, TCL_ERROR, TCL_OK, rt_comb_internal::tree, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_region_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 3953 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_QUIET, MAXARGS, TCL_ERROR, rt_wdb::wdb_air_default, rt_wdb::wdb_item_default, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_comb_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 4058 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_flags, db_lookup(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_QUIET, MAXARGS, TCL_ERROR, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_find_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 4444 of file wdb_obj.c.

References bu_getopt(), bu_optind, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_flags, directory::d_forw, db_i::dbi_Head, rt_wdb::dbip, DIR_HIDDEN, DIR_NULL, interp, MAXARGS, rt_db_get_internal(), rt_uniresource, and TCL_ERROR.

Here is the call graph for this function:

RT_EXPORT int wdb_which_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 4684 of file wdb_obj.c.

References BU_GETSTRUCT, BU_LIST_FOR, BU_LIST_INIT, BU_LIST_INSERT, BU_LIST_IS_HEAD, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, wdb_id_to_names::l, MAXARGS, start, and TCL_ERROR.

Here is the call graph for this function:

RT_EXPORT int wdb_title_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 4864 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_from_argv(), bu_vls_init(), bu_vls_printf(), db_update_ident(), db_i::dbi_base2local, db_i::dbi_title, rt_wdb::dbip, interp, MAXARGS, RT_CK_DBI, RT_CK_WDB, TCL_ERROR, TCL_OK, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_tree_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 5225 of file wdb_obj.c.

References bu_getopt(), bu_optarg, bu_optind, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, MAXARGS, and TCL_ERROR.

Here is the call graph for this function:

RT_EXPORT int wdb_color_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 5390 of file wdb_obj.c.

References BU_GETSTRUCT, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db5_update_attribute(), db_i::dbi_version, rt_wdb::dbip, interp, MATER_NO_ADDR, MATER_NULL, mater::mt_b, mater::mt_daddr, mater::mt_forw, mater::mt_g, mater::mt_high, mater::mt_low, mater::mt_r, rt_insert_color(), rt_material_head, TCL_ERROR, TCL_OK, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_prcolor_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 5509 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, MATER_NULL, mater::mt_forw, rt_material_head, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

RT_EXPORT int wdb_tol_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 5552 of file wdb_obj.c.

References rt_tess_tol::abs, bn_degtorad, bn_radtodeg, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bn_tol::dist, bn_tol::dist_sq, int, interp, rt_tess_tol::norm, bn_tol::para, bn_tol::perp, rt_tess_tol::rel, status, TCL_ERROR, TCL_OK, rt_wdb::wdb_tol, and rt_wdb::wdb_ttol.

Here is the call graph for this function:

RT_EXPORT int wdb_push_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 5874 of file wdb_obj.c.

References wdb_push_id::back, bu_free(), bu_getopt(), BU_GETSTRUCT, bu_optarg, bu_optind, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_namep, db_lookup(), db_walk_tree(), rt_wdb::dbip, FOR_ALL_WDB_PUSH_SOLIDS, wdb_push_id::forw, interp, wdb_push_data::interp, wdb_push_id::magic, MAXARGS, wdb_push_id::pi_dir, wdb_push_data::pi_head, wdb_push_id::pi_mat, wdb_push_data::push_error, RT_CHECK_DBI, RT_CK_DB_INTERNAL, rt_db_free_internal(), rt_db_get_internal(), rt_db_put_internal(), RT_G_DEBUG, rt_uniresource, TCL_ERROR, TCL_OK, wdb_identitize(), rt_wdb::wdb_initial_tree_state, WDB_MAGIC_PUSH_ID, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_whatid_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 6595 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_flags, db_lookup(), rt_wdb::dbip, DIR_NULL, DIR_REGION, rt_db_internal::idb_ptr, interp, LOOKUP_NOISY, rt_comb_internal::region_id, rt_comb_ifree(), rt_db_free_internal(), rt_db_get_internal(), rt_uniresource, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

RT_EXPORT int wdb_keep_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 6712 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_forw, directory::d_nref, db_i::dbi_Head, rt_wdb::dbip, DIR_NULL, interp, MAXARGS, and TCL_ERROR.

Here is the call graph for this function:

RT_EXPORT int wdb_cat_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 6817 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bu_vls_trunc(), db_lookup(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, MAXARGS, TCL_ERROR, and wdb_do_list().

Here is the call graph for this function:

RT_EXPORT int wdb_instance_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 6866 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, TCL_ERROR, TCL_OK, wdb_combadd(), WDB_TCL_CHECK_READ_ONLY, WMOP_INTERSECT, WMOP_SUBTRACT, and WMOP_UNION.

Here is the call graph for this function:

RT_EXPORT int wdb_observer_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 6929 of file wdb_obj.c.

References bu_cmd(), bu_observer_cmds, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, and rt_wdb::wdb_observers.

Here is the call graph for this function:

RT_EXPORT int wdb_make_bb_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 7239 of file wdb_obj.c.

References bu_malloc(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), DB5_MAJORTYPE_BRLCAD, db_diradd(), db_lookup(), rt_wdb::dbip, DIR_NULL, ID_ARB8, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, interp, LOOKUP_QUIET, rt_arb_internal::magic, MAXARGS, rt_arb_internal::pt, RT_ARB_INTERNAL_MAGIC, rt_db_free_internal(), rt_db_put_internal(), RT_INIT_DB_INTERNAL, TCL_ERROR, TCL_OK, VMOVE, VSET, wdb_get_obj_bounds(), rt_wdb::wdb_resp, WDB_TCL_CHECK_READ_ONLY, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int wdb_make_name_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 7339 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

RT_EXPORT int wdb_units_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 7425 of file wdb_obj.c.

References bu_mm_value(), bu_units_string(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_update_ident(), db_i::dbi_base2local, db_i::dbi_local2base, db_i::dbi_title, rt_wdb::dbip, interp, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

RT_EXPORT int wdb_hide_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 7510 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), db_i::dbi_version, rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, RT_CK_DBI, RT_CK_WDB, TCL_ERROR, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_unhide_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 7661 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), db_i::dbi_version, rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, RT_CK_DBI, RT_CK_WDB, TCL_ERROR, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_attr_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 7779 of file wdb_obj.c.

References bu_attribute_value_set::avp, bu_avs_free(), bu_avs_get(), bu_avs_init_empty(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bu_attribute_value_set::count, directory::d_namep, db5_get_attributes(), db_lookup(), db_i::dbi_version, rt_wdb::dbip, DIR_NULL, interp, LOOKUP_QUIET, bu_attribute_value_pair::name, TCL_ERROR, val, and bu_attribute_value_pair::value.

Referenced by wdb_attr_tcl().

Here is the call graph for this function:

RT_EXPORT int wdb_summary_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 8453 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), rt_wdb::dbip, DIR_REGION, flags, interp, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

RT_EXPORT int wdb_comb_std_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 464 of file wdb_comb_std.c.

References rt_comb_internal::aircode, bu_getopt(), BU_LIST_INIT, bu_optind, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_flags, db_lookup(), db_i::dbi_read_only, rt_wdb::dbip, DIR_COMB, DIR_NULL, rt_comb_internal::GIFTmater, rt_db_internal::idb_ptr, interp, tokens::l, LOOKUP_NOISY, LOOKUP_QUIET, rt_comb_internal::los, NULL, PRINT_USAGE, ptr, rt_comb_internal::region_flag, rt_comb_internal::region_id, RT_CK_COMB, rt_db_free_internal(), rt_db_get_internal(), rt_db_put_internal(), RT_MAXARGS, rt_uniresource, TCL_ERROR, TCL_OK, tokens::type, rt_wdb::wdb_air_default, wdb_append_lparen(), wdb_append_rparen(), rt_wdb::wdb_item_default, rt_wdb::wdb_los_default, rt_wdb::wdb_mat_default, WDB_TOK_LPAREN, WDB_TOK_NULL, and WDB_TOK_RPAREN.

Referenced by wdb_comb_std_tcl().

Here is the call graph for this function:

RT_EXPORT int wdb_nmg_collapse_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 8338 of file wdb_obj.c.

References atof(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_flags, db_diradd(), db_lookup(), db_i::dbi_local2base, rt_wdb::dbip, DIR_NULL, ID_NMG, rt_db_internal::idb_ptr, interp, LOOKUP_NOISY, LOOKUP_QUIET, NMG_CK_MODEL, nmg_edge_collapse(), nmg_triangulate_model(), rt_db_free_internal(), rt_db_get_internal(), rt_db_put_internal(), rt_uniresource, TCL_ERROR, TCL_OK, WDB_TCL_CHECK_READ_ONLY, WDB_TCL_WRITE_ERR_return, and rt_wdb::wdb_tol.

Here is the call graph for this function:

RT_EXPORT int wdb_nmg_simplify_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 8093 of file wdb_obj.c.

References bn_mat_identity, BU_GETSTRUCT, BU_LIST_FIRST, BU_LIST_FOR, BU_LIST_NON_EMPTY, bu_malloc(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), DB5_MAJORTYPE_BRLCAD, db_diradd(), db_lookup(), rt_wdb::dbip, DIR_NULL, shell::eu_hd, ID_ARB8, ID_NMG, ID_POLY, ID_TGC, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, interp, nmgregion::l, LOOKUP_QUIET, shell::lu_hd, bu_list::magic, NMG_CK_MODEL, nmg_kill_cracks(), nmg_model_edge_fuse(), nmg_model_edge_g_fuse(), nmg_shell_coplanar_face_merge(), nmg_to_arb(), nmg_to_poly(), nmg_to_tgc(), nmg_unbreak_region_edges(), model::r_hd, rt_db_free_internal(), rt_db_get_internal(), rt_db_put_internal(), RT_INIT_DB_INTERNAL, rt_uniresource, nmgregion::s_hd, TCL_ERROR, TCL_OK, void(), shell::vu_p, WDB_TCL_CHECK_READ_ONLY, WDB_TCL_WRITE_ERR_return, and rt_wdb::wdb_tol.

Here is the call graph for this function:

RT_EXPORT int wdb_shells_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1699 of file wdb_obj.c.

References bn_mat_identity, bu_free(), BU_LIST_APPEND, BU_LIST_DEQUEUE, BU_LIST_FIRST, BU_LIST_FOR, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bu_vls_trunc(), DB5_MAJORTYPE_BRLCAD, db_diradd(), db_lookup(), rt_wdb::dbip, DIR_NULL, DIR_SOLID, ID_NMG, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, interp, shell::l, LOOKUP_NOISY, NMG_CK_MODEL, nmg_dup_shell(), nmg_km(), nmg_m_reindex(), nmg_mmr(), nmg_rebound(), NULL, model::r_hd, shell::r_p, rt_db_get_internal(), rt_db_put_internal(), RT_INIT_DB_INTERNAL, rt_uniresource, nmgregion::s_hd, TCL_ERROR, TCL_OK, WDB_TCL_ALLOC_ERR_return, WDB_TCL_CHECK_READ_ONLY, and rt_wdb::wdb_tol.

Here is the call graph for this function:

RT_EXPORT int wdb_xpush_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 6432 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_flags, directory::d_forw, directory::d_nref, directory::d_uses, db_lookup(), db_i::dbi_Head, rt_wdb::dbip, DIR_NULL, DIR_SOLID, interp, LOOKUP_NOISY, TCL_ERROR, and WDB_TCL_CHECK_READ_ONLY.

Here is the call graph for this function:

RT_EXPORT int wdb_showmats_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1612 of file wdb_obj.c.

References bn_tcl_mat_print(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), directory::d_flags, db_lookup(), db_tree_funcleaf(), rt_wdb::dbip, DIR_COMB, DIR_NULL, rt_db_internal::idb_ptr, interp, LOOKUP_NOISY, MAT_IDN, NULL, rt_comb_ifree(), rt_db_free_internal(), rt_db_get_internal(), rt_uniresource, showmats_data::smd_child, showmats_data::smd_count, showmats_data::smd_interp, showmats_data::smd_mat, TCL_ERROR, TCL_OK, rt_comb_internal::tree, and WDB_TCL_READ_ERR_return.

Here is the call graph for this function:

RT_EXPORT int wdb_copyeval_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 3471 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), rt_wdb::dbip, DIR_NULL, interp, LOOKUP_NOISY, LOOKUP_QUIET, MAT_IDN, TCL_ERROR, WDB_CPEVAL, WDB_TCL_CHECK_READ_ONLY, wdb_trace_data::wtd_dbip, wdb_trace_data::wtd_flag, wdb_trace_data::wtd_interp, wdb_trace_data::wtd_obj, and wdb_trace_data::wtd_prflag.

Here is the call graph for this function:

RT_EXPORT int wdb_version_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 5042 of file wdb_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_i::dbi_version, rt_wdb::dbip, interp, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

RT_EXPORT int wdb_binary_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 8695 of file wdb_obj.c.

References bu_getopt(), bu_opterr, bu_optind, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), rt_binunif_internal::count, directory::d_major_type, directory::d_namep, DB5_MAJORTYPE_BINARY_MASK, DB5_MAJORTYPE_BINARY_UNIF, DB5_MINORTYPE_BINU_16BITINT, DB5_MINORTYPE_BINU_16BITINT_U, DB5_MINORTYPE_BINU_32BITINT, DB5_MINORTYPE_BINU_32BITINT_U, DB5_MINORTYPE_BINU_64BITINT, DB5_MINORTYPE_BINU_64BITINT_U, DB5_MINORTYPE_BINU_8BITINT, DB5_MINORTYPE_BINU_8BITINT_U, DB5_MINORTYPE_BINU_DOUBLE, DB5_MINORTYPE_BINU_FLOAT, db5_type_sizeof_h_binu(), db_lookup(), db_i::dbi_version, rt_wdb::dbip, DIR_NULL, rt_db_internal::idb_ptr, rt_binunif_internal::int8, interp, LOOKUP_NOISY, LOOKUP_QUIET, RT_CK_DB_INTERNAL, rt_db_free_internal(), rt_db_get_internal(), rt_mk_binunif(), rt_uniresource, TCL_ERROR, TCL_OK, rt_binunif_internal::type, rt_binunif_internal::u, and wdb_binary_cmd().

Referenced by wdb_binary_cmd().

Here is the call graph for this function:

RT_EXPORT int wdb_track_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 114 of file track.c.

References atof(), BU_LIST_INIT, bu_malloc(), bu_strdup, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_i::dbi_local2base, rt_wdb::dbip, head, interp, NULL, TCL_ERROR, TCL_OK, WDB_TCL_CHECK_READ_ONLY, WMOP_INTERSECT, and WMOP_SUBTRACT.

Here is the call graph for this function:

RT_EXPORT int wdb_smooth_bot_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 8566 of file wdb_obj.c.

References atof(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_diradd(), db_lookup(), db_i::dbi_version, rt_wdb::dbip, DIR_NULL, ID_BOT, rt_db_internal::idb_ptr, interp, LOOKUP_QUIET, M_PI, RT_BOT_CK_MAGIC, rt_db_free_internal(), rt_db_get_internal(), rt_db_put_internal(), rt_smooth_bot(), TCL_ERROR, TCL_OK, and rt_wdb::wdb_resp.

Here is the call graph for this function:

int wdb_importFg4Section_cmd struct rt_wdb wdbp,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 542 of file importFg4Section.c.

References bu_free(), bu_log(), bu_malloc(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), do_grid(), do_quad(), do_tri(), FIND_NEWLINE, free(), GRID_BLOCK, grid_pts, interp, make_bot_object(), NULL, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

int dgo_set_outputHandler_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2639 of file dg_obj.c.

References bu_free(), bu_strdup, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), dg_obj::dgo_outputHandler, interp, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

int dgo_set_transparency_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2766 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), dgo_build_dpp(), dg_obj::dgo_headSolid, DIR_NULL, FOR_ALL_SOLIDS, db_full_path::fp_len, db_full_path::fp_names, interp, solid::s_fullpath, solid::s_transparency, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

int dgo_observer_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2427 of file dg_obj.c.

References bu_cmd(), bu_observer_cmds, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), dg_obj::dgo_observers, interp, and TCL_ERROR.

Here is the call graph for this function:

void dgo_deleteProc ClientData  clientData  ) 
 

Definition at line 275 of file dg_obj.c.

References bu_free(), BU_LIST_DEQUEUE, bu_observer_free(), bu_vls_free(), dgo_free_qray(), dg_obj::dgo_name, dg_obj::dgo_observers, and dg_obj::l.

Here is the call graph for this function:

void dgo_autoview struct dg_obj dgop,
struct view_obj vop,
Tcl_Interp interp
 

Definition at line 1092 of file dg_obj.c.

References BU_LIST_IS_EMPTY, dg_obj::dgo_headSolid, FOR_ALL_SOLIDS, INFINITY, interp, MAT_DELTAS, MAT_IDN, solid::s_center, solid::s_size, SQRT_SMALL_FASTF, V_MAX, VADD2SCALE, VMAX, VMIN, VNEAR_ZERO, view_obj::vo_center, view_obj::vo_invSize, view_obj::vo_scale, view_obj::vo_size, vo_update(), VSETALL, VSUB2, X, Y, and Z.

Referenced by dgo_autoview_cmd().

Here is the call graph for this function:

int dgo_autoview_cmd struct dg_obj dgop,
struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1140 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), dgo_autoview(), DGO_CHECK_WDBP_NULL, interp, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

int dgo_blast_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1578 of file dg_obj.c.

References dgo_draw_cmd(), dgo_zap_cmd(), and interp.

Here is the call graph for this function:

int dgo_draw_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv,
int  kind
 

Definition at line 586 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), dgo_color_soltab(), dgo_eraseobjpath(), dg_obj::dgo_headSolid, interp, LOOKUP_QUIET, TCL_ERROR, and TCL_OK.

Referenced by dgo_blast_cmd().

Here is the call graph for this function:

RT_EXPORT int dgo_E_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2268 of file bigE.c.

References application::a_resource, application::a_rt_i, dg_client_data::ap, bu_debug, BU_DEBUG_MEM_CHECK, bu_free(), bu_getopt(), BU_GETSTRUCT, BU_LIST_FOR, BU_LIST_INIT, BU_LIST_UNINITIALIZED, bu_log(), bu_malloc(), bu_mem_barriercheck(), bu_optarg, bu_optind, bu_ptbl_free(), bu_ptbl_init(), bu_ptbl_reset(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), build_etree(), db_free_full_path(), db_string_to_path(), rt_wdb::dbip, dgo_color_soltab(), dgo_drawH_part2(), dgo_eraseobjpath(), dg_obj::dgo_headSolid, dg_obj::dgo_wdbp, dg_client_data::dgop, dg_client_data::do_polysolids, Eplot(), dg_client_data::etime, fix_halfs(), free_etree(), rt_i::HeadRegion, interp, dg_client_data::interp, dg_client_data::leaf_list, LOOKUP_QUIET, rt_tess_tol::magic, dg_client_data::num_halfs, dg_client_data::nvectors, path, resource::re_magic, resource::re_nmgfree, region::reg_mater, region::reg_name, region::reg_treetop, rt_tess_tol::rel, RESOURCE_MAGIC, RT_APPLICATION_INIT, rt_clean(), rt_gettrees(), rt_new_rti(), RT_TESS_TOL_MAGIC, rt_uniresource, rt_i::rti_tol, dg_client_data::rtip, SOLID_NULL, dg_client_data::start_time, TCL_ERROR, TCL_OK, time(), db_tree_state::ts_mater, rt_i::useair, void(), rt_wdb::wdb_tol, rt_wdb::wdb_ttol, dg_client_data::wireframe_color, and dg_client_data::wireframe_color_override.

Referenced by dgo_E_tcl().

Here is the call graph for this function:

int dgo_erase_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 678 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), dgo_eraseobjpath(), interp, LOOKUP_NOISY, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

int dgo_erase_all_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 721 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), dgo_eraseobjpath(), interp, LOOKUP_NOISY, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

int dgo_get_autoview_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1205 of file dg_obj.c.

References bu_getopt(), BU_LIST_IS_EMPTY, bu_optind, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_i::dbi_base2local, rt_wdb::dbip, DGO_CHECK_WDBP_NULL, dg_obj::dgo_headSolid, dg_obj::dgo_wdbp, FOR_ALL_SOLIDS, db_full_path::fp_names, INFINITY, interp, NULL, RT_DIR_PHONY_ADDR, solid::s_center, solid::s_fullpath, solid::s_size, SQRT_SMALL_FASTF, TCL_ERROR, TCL_OK, V3ARGS, VADD2SCALE, VMAX, VMIN, VNEAR_ZERO, VSCALE, VSETALL, VSUB2, X, Y, and Z.

Here is the call graph for this function:

int dgo_how_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 837 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), dgo_build_dpp(), dg_obj::dgo_headSolid, DIR_NULL, FOR_ALL_SOLIDS, db_full_path::fp_len, db_full_path::fp_names, interp, NULL, solid::s_dmode, solid::s_fullpath, solid::s_transparency, and TCL_ERROR.

Here is the call graph for this function:

int dgo_illum_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 477 of file dg_obj.c.

References DB_FULL_PATH_GET, dg_obj::dgo_headSolid, DOWN, FOR_ALL_SOLIDS, db_full_path::fp_len, solid::s_fullpath, solid::s_iflag, and UP.

int dgo_label_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 558 of file dg_obj.c.

References TCL_OK.

struct dg_obj * dgo_open_cmd char *  oname,
struct rt_wdb wdbp
 

Definition at line 332 of file dg_obj.c.

References BU_GETSTRUCT, BU_LIST_APPEND, BU_LIST_INIT, bu_vls_init(), bu_vls_strcpy(), dg_obj::dgo_freeSolids, dg_obj::dgo_headRunRt, dg_obj::dgo_headSolid, dg_obj::dgo_headVDraw, dgo_init_qray(), dg_obj::dgo_name, dg_obj::dgo_observers, dg_obj::dgo_uplotOutputMode, dg_obj::dgo_wdbp, HeadDGObj, dg_obj::l, run_rt::l, bu_observer::l, and PL_OUTPUT_MODE_BINARY.

Here is the call graph for this function:

int dgo_overlay_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1026 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, PL_MODE, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

int dgo_report_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2464 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

int dgo_rt_cmd struct dg_obj dgop,
struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1382 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), dg_obj::dgo_rt_cmd, interp, MAXARGS, TCL_ERROR, view_obj::vo_perspective, and void().

Here is the call graph for this function:

int dgo_rtabort_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2508 of file dg_obj.c.

References run_rt::aborted, BU_LIST_FOR, dg_obj::dgo_headRunRt, run_rt::l, run_rt::pid, and TCL_OK.

int dgo_rtcheck_cmd struct dg_obj dgop,
struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2054 of file dg_obj.c.

References db_i::dbi_filename, rt_wdb::dbip, dgo_build_tops(), dg_obj::dgo_headSolid, dg_obj::dgo_rt_cmd, dg_obj::dgo_rt_cmd_len, dg_obj::dgo_wdbp, rtcheck_output::dgop, interp, and MAXARGS.

Here is the call graph for this function:

int dgo_vdraw_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1497 of file dg_obj.c.

References bu_cmd(), interp, and vdraw_cmds.

Here is the call graph for this function:

int dgo_who_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 922 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), d_addr, dg_obj::dgo_headSolid, DOWN, FIRST_SOLID, FOR_ALL_SOLIDS, FOR_REST_OF_SOLIDS, interp, NULL, RT_DIR_PHONY_ADDR, solid::s_flag, TCL_ERROR, TCL_OK, and UP.

Here is the call graph for this function:

void dgo_zap_cmd struct dg_obj dgop,
Tcl_Interp interp
 

Definition at line 1523 of file dg_obj.c.

References BU_LIST_DEQUEUE, BU_LIST_NEXT, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, db_dirdelete(), rt_wdb::dbip, dg_obj::dgo_headSolid, dg_obj::dgo_wdbp, FIRST_SOLID, FREE_SOLID, interp, solid::l, NULL, RT_CK_DIR, and RT_DIR_PHONY_ADDR.

Referenced by dgo_blast_cmd(), dgo_impending_wdb_close(), and dgo_zapall().

Here is the call graph for this function:

int dgo_shaded_mode_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2842 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), dg_obj::dgo_shaded_mode, interp, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

RT_EXPORT void dgo_color_soltab  ) 
 

Referenced by dgo_draw_cmd(), and dgo_E_cmd().

RT_EXPORT void dgo_drawH_part2  ) 
 

Referenced by dgo_E_cmd().

void dgo_eraseobjall_callback struct db_i dbip,
Tcl_Interp interp,
struct directory dp,
int  notify
 

Definition at line 3787 of file dg_obj.c.

References BU_LIST_FOR, rt_wdb::dbip, dgo_notify(), dg_obj::dgo_wdbp, DIR_NULL, HeadDGObj, interp, and dg_obj::l.

Referenced by wdb_kill_cmd().

Here is the call graph for this function:

RT_EXPORT void dgo_eraseobjpath  ) 
 

Referenced by dgo_draw_cmd(), dgo_E_cmd(), dgo_erase_all_cmd(), and dgo_erase_cmd().

RT_EXPORT void dgo_impending_wdb_close  ) 
 

Referenced by wdb_deleteProc().

RT_EXPORT int dgo_invent_solid  ) 
 

Referenced by dgo_cvt_vlblock_to_solids().

void dgo_notify struct dg_obj dgop,
Tcl_Interp interp
 

Definition at line 4595 of file dg_obj.c.

References bu_observer_notify(), bu_vls_addr(), dg_obj::dgo_name, dg_obj::dgo_observers, dg_rt_client_data::dgop, and interp.

Referenced by dgo_eraseobjall_callback(), dgo_impending_wdb_close(), dgo_notifyWdb(), and dgo_zapall().

Here is the call graph for this function:

void dgo_notifyWdb struct rt_wdb wdbp,
Tcl_Interp interp
 

Definition at line 4602 of file dg_obj.c.

References BU_LIST_FOR, dgo_notify(), dg_obj::dgo_wdbp, HeadDGObj, interp, and dg_obj::l.

Here is the call graph for this function:

RT_EXPORT void dgo_zapall  ) 
 

Referenced by wdb_reopen_cmd().

RT_EXPORT int dgo_nirt_cmd struct dg_obj dgop,
struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 103 of file nirt.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bu_vls_strlen(), bu_vls_trunc(), db_i::dbi_base2local, db_i::dbi_filename, db_i::dbi_local2base, rt_wdb::dbip, DG_QRAY_FORMAT_NULL, DG_QRAY_FORMAT_O, DG_QRAY_FORMAT_P, DG_QRAY_GRAPHICS, DG_QRAY_TEXT, dgo_build_tops(), dg_obj::dgo_headSolid, dg_obj::dgo_qray_cmd_echo, dg_obj::dgo_qray_fmts, dg_obj::dgo_qray_script, dg_obj::dgo_rt_cmd, dg_obj::dgo_rt_cmd_len, dg_obj::dgo_wdbp, FALSE, dg_qray_fmt::fmt, interp, MAT4X3PNT, MDX, MDY, MDZ, name, NULL, perror(), RT_MAXARGS, RT_MAXLINE, TRUE, dg_qray_fmt::type, val, VMOVE, VMOVEN, view_obj::vo_center, view_obj::vo_rotation, view_obj::vo_view2model, void(), VSCALE, VSET, VSUB2, VUNITIZE, X, Y, and Z.

Referenced by dgo_vnirt_cmd().

Here is the call graph for this function:

RT_EXPORT int dgo_vnirt_cmd struct dg_obj dgop,
struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 554 of file nirt.c.

References bu_free(), bu_malloc(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), DG_GED_MAX, DG_INV_GED, dgo_nirt_cmd(), MAT4X3PNT, MAXARGS, status, TCL_ERROR, VSCALE, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int dg_E_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

RT_EXPORT struct view_obj* vo_open_cmd const char *  oname  ) 
 

Definition at line 191 of file view_obj.c.

References BU_GETSTRUCT, BU_LIST_APPEND, BU_LIST_INIT, bu_vls_init(), bu_vls_strcpy(), HeadViewObj, interp, bu_observer::l, view_obj::l, MAT_IDN, NULL, view_obj::vo_base2local, view_obj::vo_callback, view_obj::vo_center, view_obj::vo_coord, view_obj::vo_eye_pos, view_obj::vo_invSize, view_obj::vo_keypoint, view_obj::vo_local2base, view_obj::vo_name, view_obj::vo_observers, view_obj::vo_rotate_about, view_obj::vo_rotation, view_obj::vo_scale, view_obj::vo_size, vo_update(), void(), VSET, and VSETALL.

Here is the call graph for this function:

RT_EXPORT void vo_center struct view_obj vop,
Tcl_Interp interp,
point_t  center
 

Definition at line 558 of file view_obj.c.

References interp, MAT_DELTAS_VEC_NEG, view_obj::vo_center, view_obj::vo_local2base, vo_update(), and VSCALE.

Referenced by vo_center_cmd().

Here is the call graph for this function:

RT_EXPORT int vo_center_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 568 of file view_obj.c.

References bn_decode_vect(), bn_encode_vect(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, MAT_DELTAS_GET_NEG, NULL, TCL_ERROR, TCL_OK, view_obj::vo_base2local, view_obj::vo_center, vo_center(), VSCALE, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT void vo_size struct view_obj vop,
Tcl_Interp interp,
fastf_t  size
 

Definition at line 289 of file view_obj.c.

References interp, RT_MINVIEWSIZE, view_obj::vo_invSize, view_obj::vo_local2base, view_obj::vo_scale, view_obj::vo_size, and vo_update().

Referenced by vo_size_cmd().

Here is the call graph for this function:

RT_EXPORT int vo_size_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 302 of file view_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NEAR_ZERO, NULL, size, SMALL_FASTF, TCL_ERROR, TCL_OK, view_obj::vo_base2local, view_obj::vo_size, and vo_size().

Here is the call graph for this function:

RT_EXPORT int vo_invSize_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 361 of file view_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, TCL_ERROR, TCL_OK, view_obj::vo_base2local, and view_obj::vo_invSize.

Here is the call graph for this function:

void vo_mat_aet struct view_obj vop  ) 
 

Definition at line 2717 of file view_obj.c.

References bn_degtorad, bn_mat_angles(), bn_mat_mul2(), bn_mat_zrot(), view_obj::vo_aet, and view_obj::vo_rotation.

Referenced by vo_aet_cmd(), and vo_lookat_cmd().

Here is the call graph for this function:

RT_EXPORT int vo_zoom struct view_obj vop,
Tcl_Interp interp,
fastf_t  sf
 

Definition at line 1251 of file view_obj.c.

References INFINITY, interp, RT_MINVIEWSCALE, SMALL_FASTF, TCL_ERROR, TCL_OK, view_obj::vo_invSize, view_obj::vo_scale, view_obj::vo_size, and vo_update().

Referenced by vo_zoom_cmd().

Here is the call graph for this function:

RT_EXPORT int vo_zoom_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1271 of file view_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, and vo_zoom().

Here is the call graph for this function:

RT_EXPORT int vo_orientation_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1121 of file view_obj.c.

References bn_decode_quat(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, quat_quat2mat(), quat_t, TCL_ERROR, TCL_OK, view_obj::vo_rotation, and vo_update().

Here is the call graph for this function:

RT_EXPORT int vo_lookat_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1040 of file view_obj.c.

References bn_ae_vec(), bn_decode_vect(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, MAT4X3PNT, MAT_DELTAS_VEC_NEG, TCL_ERROR, TCL_OK, VJOIN1, view_obj::vo_aet, view_obj::vo_center, view_obj::vo_local2base, vo_mat_aet(), view_obj::vo_scale, vo_update(), view_obj::vo_view2model, VSCALE, VSET, VSUB2, VUNITIZE, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT void vo_setview struct view_obj vop,
Tcl_Interp interp,
vect_t  rvec
 

Definition at line 2021 of file view_obj.c.

References bn_mat_angles(), interp, view_obj::vo_rotation, vo_update(), X, Y, and Z.

Referenced by vo_setview_cmd().

Here is the call graph for this function:

RT_EXPORT int vo_setview_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2030 of file view_obj.c.

References bn_decode_vect(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, TCL_OK, vo_setview(), X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int vo_eye_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 880 of file view_obj.c.

References bn_decode_vect(), bn_encode_vect(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, MAT4X3PNT, MAT_DELTAS_VEC_NEG, NULL, TCL_ERROR, TCL_OK, view_obj::vo_base2local, view_obj::vo_center, view_obj::vo_local2base, vo_update(), view_obj::vo_view2model, VSCALE, VSET, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int vo_eye_pos_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 972 of file view_obj.c.

References bn_decode_vect(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, TCL_OK, VMOVE, view_obj::vo_eye_pos, view_obj::vo_local2base, view_obj::vo_pmat, vo_update(), VSCALE, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int vo_pmat_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 837 of file view_obj.c.

References bn_encode_mat(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, TCL_ERROR, TCL_OK, and view_obj::vo_pmat.

Here is the call graph for this function:

RT_EXPORT int vo_perspective_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 770 of file view_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, TCL_ERROR, TCL_OK, view_obj::vo_eye_pos, view_obj::vo_perspective, view_obj::vo_pmat, and vo_update().

Here is the call graph for this function:

void vo_update struct view_obj vop,
Tcl_Interp interp,
int  oflag
 

Definition at line 2672 of file view_obj.c.

References bn_aet_vec(), bn_mat_inv(), bn_mat_mul(), bu_observer_notify(), bu_vls_addr(), interp, MAT4X3VEC, NEAR_ZERO, NULL, view_obj::vo_aet, view_obj::vo_callback, view_obj::vo_center, view_obj::vo_clientData, view_obj::vo_model2view, view_obj::vo_name, view_obj::vo_observers, view_obj::vo_pmat, view_obj::vo_pmodel2view, view_obj::vo_rotation, view_obj::vo_scale, view_obj::vo_view2model, and VSET.

Referenced by dgo_autoview(), vo_aet_cmd(), vo_center(), vo_eye_cmd(), vo_eye_pos_cmd(), vo_lookat_cmd(), vo_open_cmd(), vo_orientation_cmd(), vo_perspective_cmd(), vo_pov_cmd(), vo_rmat_cmd(), vo_rot(), vo_sca(), vo_setview(), vo_size(), vo_slew(), vo_tra(), and vo_zoom().

Here is the call graph for this function:

RT_EXPORT int vo_aet_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 404 of file view_obj.c.

References bn_decode_vect(), bn_encode_vect(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, TCL_ERROR, TCL_OK, VADD2, VMOVE, view_obj::vo_aet, vo_mat_aet(), vo_update(), X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int vo_rmat_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 506 of file view_obj.c.

References bn_decode_mat(), bn_encode_mat(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, MAT_COPY, NULL, TCL_ERROR, TCL_OK, view_obj::vo_rotation, and vo_update().

Here is the call graph for this function:

RT_EXPORT int vo_model2view_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 643 of file view_obj.c.

References bn_encode_mat(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, TCL_ERROR, TCL_OK, and view_obj::vo_model2view.

Here is the call graph for this function:

RT_EXPORT int vo_pmodel2view_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 686 of file view_obj.c.

References bn_encode_mat(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, TCL_ERROR, TCL_OK, and view_obj::vo_pmodel2view.

Here is the call graph for this function:

RT_EXPORT int vo_view2model_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 729 of file view_obj.c.

References bn_encode_mat(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, TCL_ERROR, TCL_OK, and view_obj::vo_view2model.

Here is the call graph for this function:

RT_EXPORT int vo_pov_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1172 of file view_obj.c.

References bn_decode_quat(), bn_decode_vect(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, MAT_DELTAS_VEC_NEG, quat_quat2mat(), quat_t, TCL_ERROR, TCL_OK, VMOVE, view_obj::vo_center, view_obj::vo_eye_pos, view_obj::vo_local2base, view_obj::vo_perspective, view_obj::vo_rotation, view_obj::vo_scale, vo_update(), and VSCALE.

Here is the call graph for this function:

RT_EXPORT int vo_units_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1313 of file view_obj.c.

References bu_units_conversion(), bu_units_string(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, TCL_ERROR, TCL_OK, view_obj::vo_base2local, and view_obj::vo_local2base.

Here is the call graph for this function:

RT_EXPORT int vo_base2local_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1375 of file view_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, TCL_ERROR, TCL_OK, and view_obj::vo_base2local.

Here is the call graph for this function:

RT_EXPORT int vo_local2base_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1417 of file view_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, NULL, TCL_ERROR, TCL_OK, and view_obj::vo_local2base.

Here is the call graph for this function:

RT_EXPORT int vo_rot struct view_obj vop,
Tcl_Interp interp,
char  coord,
char  origin,
mat_t  rmat,
int(*)()  func
 

Definition at line 1459 of file view_obj.c.

References bn_mat_inv(), bn_mat_mul(), bn_mat_mul2(), bn_mat_xform_about_pt(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, MAT4X3PNT, MAT_DELTAS_VEC_NEG, TCL_ERROR, TCL_OK, view_obj::vo_center, view_obj::vo_keypoint, view_obj::vo_model2view, view_obj::vo_rotation, vo_update(), view_obj::vo_view2model, and VSET.

Referenced by vo_arot_cmd(), vo_mrot_cmd(), vo_rot_cmd(), and vo_vrot_cmd().

Here is the call graph for this function:

RT_EXPORT int vo_rot_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv,
int(*)()  func
 

Definition at line 1533 of file view_obj.c.

References bn_decode_vect(), bn_mat_angles(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, view_obj::vo_coord, vo_rot(), view_obj::vo_rotate_about, VSCALE, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int vo_arot_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv,
int(*)()  func
 

Definition at line 2088 of file view_obj.c.

References bn_degtorad, bn_mat_arb_rot(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, view_obj::vo_coord, vo_rot(), view_obj::vo_rotate_about, VSETALL, VUNITIZE, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int vo_mrot_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv,
int(*)()  func
 

Definition at line 2214 of file view_obj.c.

References bn_decode_vect(), bn_mat_angles(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, vo_rot(), view_obj::vo_rotate_about, VSCALE, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int vo_tra struct view_obj vop,
Tcl_Interp interp,
char  coord,
vect_t  tvec,
int(*)()  func
 

Definition at line 1609 of file view_obj.c.

References interp, MAT4X3PNT, MAT_DELTAS_GET_NEG, MAT_DELTAS_VEC_NEG, TCL_OK, view_obj::vo_center, view_obj::vo_invSize, view_obj::vo_local2base, vo_update(), view_obj::vo_view2model, VSCALE, and VSUB2.

Referenced by vo_tra_cmd().

Here is the call graph for this function:

RT_EXPORT int vo_tra_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv,
int(*)()  func
 

Definition at line 1644 of file view_obj.c.

References bn_decode_vect(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, view_obj::vo_coord, vo_tra(), X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int vo_slew struct view_obj vop,
Tcl_Interp interp,
vect_t  svec
 

Definition at line 1716 of file view_obj.c.

References interp, MAT4X3PNT, MAT_DELTAS_VEC_NEG, TCL_OK, view_obj::vo_center, vo_update(), and view_obj::vo_view2model.

Referenced by vo_slew_cmd().

Here is the call graph for this function:

RT_EXPORT int vo_slew_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1730 of file view_obj.c.

References bn_decode_vect(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, vo_slew(), X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int vo_observer_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1800 of file view_obj.c.

References bu_cmd(), bu_observer_cmds, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, and view_obj::vo_observers.

Here is the call graph for this function:

RT_EXPORT int vo_coord_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1838 of file view_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, TCL_OK, and view_obj::vo_coord.

Here is the call graph for this function:

RT_EXPORT int vo_rotate_about_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1890 of file view_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, TCL_OK, and view_obj::vo_rotate_about.

Here is the call graph for this function:

RT_EXPORT int vo_keypoint_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1944 of file view_obj.c.

References bn_decode_vect(), bn_encode_vect(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, TCL_OK, view_obj::vo_base2local, view_obj::vo_keypoint, view_obj::vo_local2base, VSCALE, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int vo_vrot_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2153 of file view_obj.c.

References bn_decode_vect(), bn_mat_angles(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), int, interp, TCL_ERROR, vo_rot(), view_obj::vo_rotate_about, VSCALE, X, Y, and Z.

Here is the call graph for this function:

RT_EXPORT int vo_sca struct view_obj vop,
Tcl_Interp interp,
fastf_t  sf,
int(*)()  func
 

Definition at line 2521 of file view_obj.c.

References INFINITY, interp, RT_MINVIEWSIZE, SMALL_FASTF, TCL_OK, view_obj::vo_invSize, view_obj::vo_scale, view_obj::vo_size, and vo_update().

Referenced by vo_sca_cmd().

Here is the call graph for this function:

RT_EXPORT int vo_sca_cmd struct view_obj vop,
Tcl_Interp interp,
int  argc,
char **  argv,
int(*)()  func
 

Definition at line 2542 of file view_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, TCL_ERROR, and vo_sca().

Here is the call graph for this function:

RT_EXPORT int rt_mk_binunif struct rt_wdb wdbp,
const char *  obj_name,
const char *  file_name,
unsigned int  minor_type,
long  max_count
 

Definition at line 72 of file binary_obj.c.

References __LONG_MAX__, body, bu_close_mapped_file(), bu_log(), bu_malloc(), bu_open_mapped_file(), bu_mapped_file::buf, rt_binunif_internal::count, DB5_MAJORTYPE_BINARY_UNIF, db5_type_sizeof_h_binu(), rt_wdb::dbip, GETSTRUCT, ID_BINUNIF, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_minor_type, rt_db_internal::idb_ptr, rt_binunif_internal::int8, rt_binunif_internal::magic, NULL, RT_BINUNIF_INTERNAL_MAGIC, rt_db_free_internal(), RT_INIT_DB_INTERNAL, rt_binunif_internal::type, rt_binunif_internal::u, and rt_wdb::wdb_resp.

Referenced by wdb_binary_cmd().

Here is the call graph for this function:

RT_EXPORT void rt_binunif_free struct rt_binunif_internal bip  ) 
 

R T _ B I N U N I F _ F R E E

Free the storage associated with a binunif_internal object

Definition at line 517 of file db5_bin.c.

References bu_free(), GENPTR_NULL, RT_CK_BINUNIF, rt_binunif_internal::u, and rt_binunif_internal::uint8.

Here is the call graph for this function:

RT_EXPORT void rt_binunif_dump struct rt_binunif_internal bip  ) 
 

R T _ B I N U N I F _ D U M P

Diagnostic routine

Definition at line 278 of file db5_bin.c.

References bu_log(), rt_binunif_internal::count, RT_CK_BINUNIF, type, rt_binunif_internal::u, and rt_binunif_internal::uint8.

Referenced by rt_retrieve_binunif().

Here is the call graph for this function:

int dgo_shaded_mode_cmd  ) 
 

int dgo_qray_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 138 of file qray.c.

References dg_qray_color::b, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bu_vls_strcpy(), bu_vls_trunc(), dg_obj::dgo_qray_basename, dg_obj::dgo_qray_cmd_echo, dg_obj::dgo_qray_effects, dg_obj::dgo_qray_even_color, dg_obj::dgo_qray_fmts, dg_obj::dgo_qray_odd_color, dg_obj::dgo_qray_overlap_color, dg_obj::dgo_qray_script, dg_obj::dgo_qray_void_color, dg_qray_fmt::fmt, dg_qray_color::g, interp, NULL, dg_qray_color::r, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

void dgo_init_qray struct dg_obj dgop  ) 
 

Definition at line 454 of file qray.c.

References bu_malloc(), bu_vls_init(), bu_vls_strcpy(), DG_QRAY_BASENAME, dg_obj::dgo_qray_basename, dg_obj::dgo_qray_cmd_echo, dg_obj::dgo_qray_effects, dg_obj::dgo_qray_even_color, dg_obj::dgo_qray_fmts, dg_obj::dgo_qray_odd_color, dg_obj::dgo_qray_overlap_color, dg_obj::dgo_qray_script, dg_obj::dgo_qray_void_color, dg_qray_fmt::fmt, dg_qray_fmt_data::fmt, NULL, dg_qray_fmt_data::type, and dg_qray_fmt::type.

Referenced by dgo_open_cmd().

Here is the call graph for this function:

void dgo_free_qray struct dg_obj dgop  ) 
 

Definition at line 487 of file qray.c.

References bu_free(), bu_vls_free(), dg_obj::dgo_qray_basename, dg_obj::dgo_qray_fmts, dg_obj::dgo_qray_script, dg_qray_fmt::fmt, NULL, and dg_qray_fmt::type.

Referenced by dgo_deleteProc().

Here is the call graph for this function:

int dgo_E_tcl ClientData  clientData,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2429 of file bigE.c.

References dgo_E_cmd(), and interp.

Here is the call graph for this function:

int dgo_invent_solid struct dg_obj dgop,
Tcl_Interp interp,
char *  name,
struct bu_list vhead,
long int  rgb,
int  copy,
fastf_t  transparency,
int  dmode
 

Definition at line 3554 of file dg_obj.c.

References bu_list::back, BU_LIST_APPEND, BU_LIST_APPEND_LIST, BU_LIST_INIT, BU_LIST_LAST, db_add_node_to_full_path(), db_diradd(), db_lookup(), DBI_NULL, rt_wdb::dbip, dg_obj::dgo_headSolid, dg_obj::dgo_wdbp, DIR_NULL, DIR_SOLID, GET_SOLID, interp, solid::l, LOOKUP_QUIET, RT_DIR_PHONY_ADDR, rt_vlist_copy(), solid::s_basecolor, solid::s_cflag, solid::s_color, solid::s_dflag, solid::s_dlist, solid::s_dmode, solid::s_Eflag, solid::s_fullpath, solid::s_iflag, solid::s_regionid, solid::s_soldash, solid::s_transparency, solid::s_uflag, solid::s_vlist, solid::s_wflag, and type.

Here is the call graph for this function:

void dgo_drawH_part2 int  dashflag,
struct bu_list vhead,
struct db_full_path pathp,
struct db_tree_state tsp,
struct solid existing_sp,
struct dg_client_data dgcdp
 

Definition at line 3697 of file dg_obj.c.

References bu_list::back, BU_LIST_APPEND, BU_LIST_APPEND_LIST, BU_LIST_LAST, bu_semaphore_acquire(), bu_semaphore_release(), db_dup_full_path(), dg_obj::dgo_headSolid, dg_client_data::dgop, dg_client_data::dmode, GET_SOLID, dg_client_data::interp, solid::l, mater_info::ma_color, mater_info::ma_color_valid, RT_SEM_MODEL, solid::s_basecolor, solid::s_cflag, solid::s_dflag, solid::s_dmode, solid::s_Eflag, solid::s_flag, solid::s_fullpath, solid::s_iflag, solid::s_regionid, solid::s_soldash, solid::s_transparency, solid::s_uflag, solid::s_vlist, dg_client_data::transparency, db_tree_state::ts_mater, db_tree_state::ts_regionid, UP, dg_client_data::wireframe_color, and dg_client_data::wireframe_color_override.

Here is the call graph for this function:

void dgo_eraseobjpath struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv,
int  noisy,
int  all
 

Definition at line 3811 of file dg_obj.c.

References bu_calloc(), bu_free(), bu_log(), bu_vls_addr(), bu_vls_init(), bu_vls_printf(), bu_vls_trunc(), db_lookup(), rt_wdb::dbip, dg_obj::dgo_wdbp, DIR_NULL, free(), interp, Tcl_IncrRefCount, and TCL_OK.

Here is the call graph for this function:

void dgo_color_soltab struct solid hsp  ) 
 

Definition at line 4053 of file dg_obj.c.

References FOR_ALL_SOLIDS, solid::l, MATER_NULL, mater::mt_b, mater::mt_forw, mater::mt_g, mater::mt_high, mater::mt_low, mater::mt_r, rt_material_head, solid::s_basecolor, solid::s_cflag, solid::s_color, solid::s_regionid, and solid::s_uflag.

void dgo_cvt_vlblock_to_solids struct dg_obj dgop,
Tcl_Interp interp,
struct bn_vlblock vbp,
char *  name,
int  copy
 

Definition at line 3525 of file dg_obj.c.

References BU_LIST_IS_EMPTY, dgo_invent_solid(), bn_vlblock::head, interp, bn_vlblock::nused, and bn_vlblock::rgb.

Here is the call graph for this function:

int dgo_build_tops Tcl_Interp interp,
struct solid hsp,
char **  start,
register char **  end
 

Definition at line 4104 of file dg_obj.c.

References BU_LIST_PFOR, directory::d_namep, FIRST_SOLID, FOR_ALL_SOLIDS, interp, solid::l, RT_DIR_PHONY_ADDR, solid::s_flag, and UP.

Referenced by dgo_nirt_cmd(), and dgo_rtcheck_cmd().

void dgo_pr_wait_status Tcl_Interp interp,
int  status
 

Definition at line 4783 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), interp, and NULL.

Here is the call graph for this function:

int Dgo_Init Tcl_Interp interp  ) 
 

Definition at line 261 of file dg_obj.c.

References BU_LIST_INIT, HeadDGObj, interp, dg_obj::l, solid::l, NULL, TCL_OK, and void().

Referenced by rt_tcl_setup().

Here is the call graph for this function:

struct directory** dgo_build_dpp struct dg_obj dgop,
Tcl_Interp interp,
char *  path
 

Definition at line 760 of file dg_obj.c.

References bu_calloc(), bu_free(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), db_lookup(), rt_wdb::dbip, dg_obj::dgo_wdbp, DIR_NULL, free(), interp, NULL, and TCL_OK.

Referenced by dgo_how_cmd(), and dgo_set_transparency_cmd().

Here is the call graph for this function:

int dgo_get_eyemodel_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 1315 of file dg_obj.c.

References BU_LIST_FOR, BU_LIST_IS_HEAD, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), HeadViewObj, interp, view_obj::l, NULL, quat_mat2quat(), quat_t, TCL_ERROR, TCL_OK, V4ARGS, view_obj::vo_name, view_obj::vo_rotation, view_obj::vo_size, X, Y, and Z.

Here is the call graph for this function:

int dgo_set_uplotOutputMode_cmd struct dg_obj dgop,
Tcl_Interp interp,
int  argc,
char **  argv
 

Definition at line 2698 of file dg_obj.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), dg_obj::dgo_uplotOutputMode, interp, PL_OUTPUT_MODE_BINARY, PL_OUTPUT_MODE_TEXT, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

void dgo_impending_wdb_close struct rt_wdb wdbp,
Tcl_Interp interp
 

Definition at line 4613 of file dg_obj.c.

References BU_LIST_FOR, dgo_notify(), dg_obj::dgo_wdbp, dgo_zap_cmd(), HeadDGObj, interp, dg_obj::l, and RT_WDB_NULL.

Here is the call graph for this function:

void dgo_zapall struct rt_wdb wdbp,
Tcl_Interp interp
 

Definition at line 4627 of file dg_obj.c.

References BU_LIST_FOR, dgo_notify(), dg_obj::dgo_wdbp, dgo_zap_cmd(), HeadDGObj, interp, and dg_obj::l.

Here is the call graph for this function:

void do_grid char *  line  ) 
 

Definition at line 224 of file importFg4Section.c.

References atof(), bu_log(), bu_mem_barriercheck(), bu_realloc(), DEBUG_MEM_FULL, GRID_BLOCK, grid_pts, rt_bomb(), RT_G_DEBUG, and VSET.

Referenced by wdb_importFg4Section_cmd().

Here is the call graph for this function:

void do_tri char *  line  ) 
 

Definition at line 320 of file importFg4Section.c.

References Add_bot_face(), atof(), bu_debug, BU_DEBUG_MEM_CHECK, bu_log(), bu_malloc(), bu_mem_barriercheck(), debug, GRID_BLOCK, NULL, PLATE_MODE, pos, and POS_FRONT.

Referenced by wdb_importFg4Section_cmd().

Here is the call graph for this function:

void do_quad char *  line  ) 
 

Definition at line 386 of file importFg4Section.c.

References Add_bot_face(), atof(), bu_log(), bu_malloc(), debug, GRID_BLOCK, NULL, PLATE_MODE, pos, POS_CENTER, and POS_FRONT.

Referenced by wdb_importFg4Section_cmd().

Here is the call graph for this function:

void make_bot_object char *  name,
struct rt_wdb wdbp
 

Definition at line 447 of file importFg4Section.c.

References rt_bot_internal::magic, NULL, RT_BOT_INTERNAL_MAGIC, V_MAX, and V_MIN.

Referenced by wdb_importFg4Section_cmd().

void Add_bot_face int  pt1,
int  pt2,
int  pt3,
fastf_t  thick,
int  pos
 

Definition at line 265 of file importFg4Section.c.

References bu_debug, BU_DEBUG_MEM_CHECK, bu_log(), bu_mem_barriercheck(), bu_realloc(), GRID_BLOCK, PLATE_MODE, POS_CENTER, and POS_FRONT.

Referenced by do_quad(), and do_tri().

Here is the call graph for this function:

struct oslo_mat* rt_nurb_calc_oslo register int  order,
register const struct knot_vector tau_kv,
register struct knot_vector t_kv,
struct resource res
 

Definition at line 61 of file oslo_calc.c.

void rt_nurb_pr_oslo struct oslo_mat om  ) 
 

Definition at line 200 of file oslo_calc.c.

void rt_nurb_free_oslo struct oslo_mat om,
struct resource res
 

Definition at line 224 of file oslo_calc.c.

Referenced by rt_nurb_c_refine(), rt_nurb_c_xsplit(), and rt_nurb_s_refine().

void dgo_qray_data_to_vlist struct dg_obj dgop,
struct bn_vlblock vbp,
struct dg_qray_dataList headp,
vect_t  dir,
int  do_overlaps
 

Definition at line 499 of file qray.c.

References dg_qray_color::b, BU_LIST_FOR, db_i::dbi_local2base, rt_wdb::dbip, dg_obj::dgo_qray_even_color, dg_obj::dgo_qray_odd_color, dg_obj::dgo_qray_overlap_color, dg_obj::dgo_qray_void_color, dg_obj::dgo_wdbp, dg_qray_color::g, dg_qray_dataList::l, dg_qray_dataList::los, dg_qray_color::r, RT_ADD_VLIST, rt_vlblock_find(), RT_VLIST_LINE_DRAW, RT_VLIST_LINE_MOVE, SQRT_SMALL_FASTF, VAPPROXEQUAL, VJOIN1, VMOVE, VSCALE, VSET, dg_qray_dataList::x_in, dg_qray_dataList::y_in, and dg_qray_dataList::z_in.

Here is the call graph for this function:


Variable Documentation

OPTICAL_EXPORT struct light_specific LightHead
 

RT_EXPORT struct mater* rt_material_head
 

defined in mater.c

Definition at line 67 of file mater.c.

Referenced by db5_export_color_table(), dgo_color_soltab(), rt_color_free(), rt_insert_color(), rt_region_color_map(), wdb_color_cmd(), and wdb_prcolor_cmd().

OPTICAL_EXPORT int PM_Activated
 

Photon Mapping Activated, 0=off, 1=on.

OPTICAL_EXPORT int PM_Visualize
 

Photon Mapping Visualization of Irradiance Cache.

RT_EXPORT struct rt_wdb HeadWDB
 

head of BRL-CAD database object list

RT_EXPORT struct dg_obj HeadDGObj
 

head of drawable geometry object list

Definition at line 199 of file dg_obj.c.

Referenced by dgo_eraseobjall_callback(), dgo_impending_wdb_close(), Dgo_Init(), dgo_notifyWdb(), dgo_open_cmd(), and dgo_zapall().

RT_EXPORT struct view_obj HeadViewObj
 

head of view object list

Definition at line 106 of file view_obj.c.

Referenced by dgo_get_eyemodel_cmd(), Vo_Init(), and vo_open_cmd().

RT_EXPORT struct resource rt_uniresource
 

default. Defined in librt/shoot.c

Definition at line 73 of file shoot.c.

Referenced by add_solid(), db5_diradd(), db_close(), db_diradd(), db_diradd5(), db_dirdelete(), db_parse_1anim(), db_walk_dispatcher(), db_walk_tree(), dgo_E_cmd(), main(), nmg_class_ray_vs_shell(), nmg_stash_model_to_file(), rt_add_res_stats(), rt_cell_n_on_ray(), rt_clean(), rt_dirbuild(), rt_fwrite_internal(), rt_gettrees_muves(), Rt_Init(), rt_init_resource(), rt_prep_parallel(), rt_retrieve_binunif(), rt_shootray(), rt_shootray_bundle(), rt_submodel_free(), rt_tcl_import_from_path(), wdb_add_operand(), wdb_adjust_cmd(), wdb_binary_cmd(), wdb_comb_std_cmd(), wdb_combadd(), wdb_dbopen(), wdb_do_list(), wdb_facetize_cmd(), wdb_find_cmd(), wdb_fopen_v(), wdb_free_tokens(), wdb_get_cmd(), wdb_get_obj_bounds2(), wdb_get_type_cmd(), wdb_identitize(), wdb_import(), wdb_init_obj(), wdb_killall_cmd(), wdb_move_all_cmd(), wdb_move_arb_edge_cmd(), wdb_move_arb_face_cmd(), wdb_move_cmd(), wdb_nmg_collapse_cmd(), wdb_nmg_simplify_cmd(), wdb_node_write(), wdb_ocenter_cmd(), wdb_orotate_cmd(), wdb_oscale_cmd(), wdb_otranslate_cmd(), wdb_push_cmd(), wdb_put_internal(), wdb_remove_cmd(), wdb_rmap_cmd(), wdb_rotate_arb_face_cmd(), wdb_shells_cmd(), wdb_showmats_cmd(), wdb_tops_cmd(), and wdb_whatid_cmd().

RT_EXPORT struct rt_g rt_g
 

Definition at line 53 of file global.c.

RT_EXPORT const struct rt_functab rt_functab[]
 

Definition at line 539 of file table.c.

RT_EXPORT const int rt_nfunctab
 

Definition at line 1078 of file table.c.

Referenced by rt_free_soltab().

RT_EXPORT const int rt_arb_faces[5][24]
 

Definition at line 153 of file g_arb.c.

RT_EXPORT short earb8[12][18]
 

E D I T A R B

An ARB edge is moved by finding the direction of the line containing the edge and the 2 "bounding" planes. The new edge is found by intersecting the new line location with the bounding planes. The two "new" planes thus defined are calculated and the affected points are calculated by intersecting planes. This keeps ALL faces planar.

Note - This code came from mged/edarb.c (written mostly by Keith Applin) and was modified to live here.

Definition at line 1921 of file g_arb.c.

RT_EXPORT short earb7[12][18]
 

Definition at line 1937 of file g_arb.c.

RT_EXPORT short earb6[10][18]
 

Definition at line 1953 of file g_arb.c.

RT_EXPORT short earb5[9][18]
 

Definition at line 1967 of file g_arb.c.

RT_EXPORT short earb4[5][18]
 

Definition at line 1980 of file g_arb.c.

RT_EXPORT void(* nmg_plot_anim_upcall)()
 

Definition at line 74 of file nmg_plot.c.

RT_EXPORT void(* nmg_vlblock_anim_upcall)()
 

Definition at line 75 of file nmg_plot.c.

Referenced by nmg_2face_plot(), nmg_face_plot(), nmg_pl_2fu(), and nmg_pl_comb_fu().

RT_EXPORT void(* nmg_mged_debug_display_hack)()
 

Definition at line 76 of file nmg_plot.c.

RT_EXPORT double nmg_eue_dist
 

Definition at line 77 of file nmg_plot.c.

Referenced by nmg_offset_eu_vert().

RT_EXPORT fastf_t rt_cline_radius
 

Definition at line 78 of file g_cline.c.

RT_EXPORT int rt_bot_minpieces
 

Definition at line 67 of file g_bot.c.

Referenced by rt_tcl_setup(), and XGLUE().

RT_EXPORT int rt_bot_tri_per_piece
 

Definition at line 68 of file g_bot.c.

Referenced by rt_tcl_setup().

RT_EXPORT const struct db_tree_state rt_initial_tree_state
 

Definition at line 70 of file tree.c.

Referenced by rt_gettrees_muves(), rt_submodel_plot(), and wdb_init_obj().

RT_EXPORT const char* rt_vlist_cmd_descriptions[]
 

Definition at line 201 of file vlist.c.

RT_EXPORT const char rt_version[]
 

Definition at line 10 of file vers_win.c.

Referenced by rt_pr_library_version(), and rt_tcl_setup().

struct mater* rt_material_head
 

defined in mater.c

Definition at line 67 of file mater.c.

struct bu_cmdtab vdraw_cmds[]
 

Definition at line 147 of file vdraw.c.

Referenced by dgo_vdraw_cmd().

struct dg_obj HeadDGObj
 

head of drawable geometry object list

Definition at line 199 of file dg_obj.c.

Referenced by dgo_eraseobjall_callback(), dgo_impending_wdb_close(), Dgo_Init(), dgo_notifyWdb(), dgo_open_cmd(), and dgo_zapall().

point_t* grid_pts
 

Definition at line 114 of file importFg4Section.c.

Referenced by do_grid(), and wdb_importFg4Section_cmd().


Generated on Mon Sep 18 01:25:33 2006 for BRL-CAD by  doxygen 1.4.6