Primitives
[librt geometry, raytracing]

Collaboration diagram for Primitives:


Files

file  rtgeom.h
 Details of the internal forms used by the LIBRT geometry routines for the different solids.
file  bot.h
file  g_arb.c
file  g_arbn.c
file  g_ars.c
file  g_bot.c
file  g_bot_include.c
file  g_cline.c
file  g_dsp.c
file  g_ebm.c
file  g_ehy.c
file  g_ell.c
file  g_epa.c
file  g_eto.c
file  g_extrude.c
file  g_grip.c
file  g_half.c
file  g_hf.c
file  g_metaball.c
file  g_nmg.c
file  g_nurb.c
file  g_part.c
file  g_pg.c
file  g_pipe.c
file  g_rec.c
file  g_rhc.c
file  g_rpc.c
file  g_sketch.c
file  g_sph.c
file  g_submodel.c
file  g_superell.c
file  g_tgc.c
file  g_torus.c
file  g_vol.c
file  g_xxx.c
file  table.c

Modules

 N-Manifold Geometry
 NURBS

Data Structures

struct  rt_tor_internal
struct  rt_tgc_internal
struct  rt_ell_internal
struct  rt_superell_internal
struct  rt_metaball_internal
struct  rt_arb_internal
struct  rt_ars_internal
struct  rt_half_internal
struct  rt_grip_internal
struct  rt_pg_internal
struct  rt_ebm_internal
struct  rt_vol_internal
struct  rt_hf_internal
struct  rt_arbn_internal
struct  rt_pipe_internal
struct  rt_part_internal
struct  rt_rpc_internal
struct  rt_rhc_internal
struct  rt_epa_internal
struct  rt_ehy_internal
struct  rt_eto_internal
struct  rt_dsp_internal
struct  rt_sketch_internal
struct  rt_submodel_internal
struct  rt_extrude_internal
struct  rt_cline_internal
struct  rt_bot_internal
struct  oface
struct  aface
struct  arb_specific
struct  prep_arb
struct  arb_info
struct  arbn_pts
struct  arbn_edges
struct  bot_edge
struct  cline_specific
struct  cline_vert
struct  dsp_rpp
struct  dsp_bb
struct  dsp_bb_layer
struct  dsp_specific
struct  bbox_isect
struct  isect_stuff
struct  rt_ebm_specific
struct  ebm_hit_private
struct  ebm_edge
struct  ehy_specific
struct  ell_specific
struct  ell_state
struct  ell_vert_strip
struct  epa_specific
struct  eto_specific
struct  extrude_specific
struct  loop_inter
struct  grip_specific
struct  half_specific
struct  hf_specific
struct  rec_specific

Defines

#define SEEN_RTGEOM_H   seen
#define NAMELEN   16
#define RT_TOR_INTERNAL_MAGIC   0x9bffed87
#define RT_TOR_CK_MAGIC(_p)   BU_CKMAG(_p,RT_TOR_INTERNAL_MAGIC,"rt_tor_internal")
#define RT_TGC_INTERNAL_MAGIC   0xaabbdd87
#define RT_TGC_CK_MAGIC(_p)   BU_CKMAG(_p,RT_TGC_INTERNAL_MAGIC,"rt_tgc_internal")
#define RT_ELL_INTERNAL_MAGIC   0x93bb23ff
#define RT_ELL_CK_MAGIC(_p)   BU_CKMAG(_p,RT_ELL_INTERNAL_MAGIC,"rt_ell_internal")
#define RT_SUPERELL_INTERNAL_MAGIC   0xff93bb23
#define RT_SUPERELL_CK_MAGIC(_p)   BU_CKMAG(_p,RT_SUPERELL_INTERNAL_MAGIC,"rt_superell_internal")
#define RT_METABALL_INTERNAL_MAGIC   0x62616c6c
#define RT_METABALL_CK_MAGIC(_p)   BU_CKMAG(_p,RT_METABALL_INTERNAL_MAGIC,"rt_metaball_internal")
#define RT_ARB_INTERNAL_MAGIC   0x9befd010
#define RT_ARB_CK_MAGIC(_p)   BU_CKMAG(_p,RT_ARB_INTERNAL_MAGIC,"rt_arb_internal")
#define RT_ARS_INTERNAL_MAGIC   0x77ddbbe3
#define RT_ARS_CK_MAGIC(_p)   BU_CKMAG(_p,RT_ARS_INTERNAL_MAGIC,"rt_ars_internal")
#define RT_HALF_INTERNAL_MAGIC   0xaa87bbdd
#define RT_HALF_CK_MAGIC(_p)   BU_CKMAG(_p,RT_HALF_INTERNAL_MAGIC,"rt_half_internal")
#define RT_GRIP_INTERNAL_MAGIC   0x31196205
#define RT_GRIP_CK_MAGIC(_p)   BU_CKMAG(_p,RT_GRIP_INTERNAL_MAGIC,"rt_grip_internal")
#define RT_PG_INTERNAL_MAGIC   0x9bfed887
#define RT_PG_CK_MAGIC(_p)   BU_CKMAG(_p,RT_PG_INTERNAL_MAGIC,"rt_pg_internal")
#define RT_NURB_GET_CONTROL_POINT(_s, _u, _v)
#define RT_EBM_NAME_LEN   256
#define RT_EBM_INTERNAL_MAGIC   0xf901b231
#define RT_EBM_CK_MAGIC(_p)   BU_CKMAG(_p,RT_EBM_INTERNAL_MAGIC,"rt_ebm_internal")
#define RT_VOL_NAME_LEN   128
#define RT_VOL_INTERNAL_MAGIC   0x987ba1d0
#define RT_VOL_CK_MAGIC(_p)   BU_CKMAG(_p,RT_VOL_INTERNAL_MAGIC,"rt_vol_internal")
#define RT_HF_INTERNAL_MAGIC   0x4846494d
#define RT_HF_CK_MAGIC(_p)   BU_CKMAG(_p,RT_HF_INTERNAL_MAGIC,"rt_hf_internal")
#define RT_ARBN_INTERNAL_MAGIC   0x18236461
#define RT_ARBN_CK_MAGIC(_p)   BU_CKMAG(_p,RT_ARBN_INTERNAL_MAGIC,"rt_arbn_internal")
#define RT_PIPE_INTERNAL_MAGIC   0x7dd7bb3e
#define RT_PIPE_CK_MAGIC(_p)   BU_CKMAG(_p,RT_PIPE_INTERNAL_MAGIC,"rt_pipe_internal")
#define RT_PART_INTERNAL_MAGIC   0xaaccee87
#define RT_PART_CK_MAGIC(_p)   BU_CKMAG(_p,RT_PART_INTERNAL_MAGIC,"rt_part_internal")
#define RT_PARTICLE_TYPE_SPHERE   1
#define RT_PARTICLE_TYPE_CYLINDER   2
#define RT_PARTICLE_TYPE_CONE   3
#define RT_RPC_INTERNAL_MAGIC   0xaaccee88
#define RT_RPC_CK_MAGIC(_p)   BU_CKMAG(_p,RT_RPC_INTERNAL_MAGIC,"rt_rpc_internal")
#define RT_RHC_INTERNAL_MAGIC   0xaaccee89
#define RT_RHC_CK_MAGIC(_p)   BU_CKMAG(_p,RT_RHC_INTERNAL_MAGIC,"rt_rhc_internal")
#define RT_EPA_INTERNAL_MAGIC   0xaaccee90
#define RT_EPA_CK_MAGIC(_p)   BU_CKMAG(_p,RT_EPA_INTERNAL_MAGIC,"rt_epa_internal")
#define RT_EHY_INTERNAL_MAGIC   0xaaccee91
#define RT_EHY_CK_MAGIC(_p)   BU_CKMAG(_p,RT_EHY_INTERNAL_MAGIC,"rt_ehy_internal")
#define RT_ETO_INTERNAL_MAGIC   0xaaccee92
#define RT_ETO_CK_MAGIC(_p)   BU_CKMAG(_p,RT_ETO_INTERNAL_MAGIC,"rt_eto_internal")
#define DSP_NAME_LEN   128
#define RT_DSP_INTERNAL_MAGIC   0xde6
#define RT_DSP_CK_MAGIC(_p)   BU_CKMAG(_p,RT_DSP_INTERNAL_MAGIC,"rt_dsp_internal")
#define SKETCH_NAME_LEN   16
#define RT_SKETCH_INTERNAL_MAGIC   0x736b6574
#define RT_SKETCH_CK_MAGIC(_p)   BU_CKMAG(_p,RT_SKETCH_INTERNAL_MAGIC,"rt_sketch_internal")
#define RT_SUBMODEL_INTERNAL_MAGIC   0x7375626d
 subm
#define RT_SUBMODEL_CK_MAGIC(_p)   BU_CKMAG(_p,RT_SUBMODEL_INTERNAL_MAGIC,"rt_submodel_internal")
#define RT_EXTRUDE_INTERNAL_MAGIC   0x65787472
#define RT_EXTRUDE_CK_MAGIC(_p)   BU_CKMAG(_p,RT_EXTRUDE_INTERNAL_MAGIC,"rt_extrude_internal")
#define RT_CLINE_INTERNAL_MAGIC   0x43767378
#define RT_CLINE_CK_MAGIC(_p)   BU_CKMAG(_p,RT_CLINE_INTERNAL_MAGIC,"rt_cline_internal")
#define RT_BOT_UNORIENTED   1
 unoriented triangles
#define RT_BOT_CCW   2
 oriented counter-clockwise
#define RT_BOT_CW   3
 oriented clockwise
#define RT_BOT_SURFACE   1
 triangles represent a surface (no volume)
#define RT_BOT_SOLID   2
 triangles respresent the boundary of a solid object
#define RT_BOT_PLATE   3
 triangles represent plates. Thicknesses are specified in "thickness" array, and face mode is specified in "face_mode" bit vector. This is the FASTGEN "plate" mode. Orientation is ignored.
#define RT_BOT_PLATE_NOCOS   4
 same as plate mode, but LOS is set equal to face thickness, not the thickness divided by the cosine of the obliquity angle
#define RT_BOT_HAS_SURFACE_NORMALS   0x1
 This primitive may have surface normals at each face vertex.
#define RT_BOT_USE_NORMALS   0x2
 Use the surface normals if they exist.
#define RT_BOT_USE_FLOATS   0x4
 Use the single precision version of "tri_specific" during prep.
#define RT_BOT_INTERNAL_MAGIC   0x626F7472
#define RT_BOT_CK_MAGIC(_p)   BU_CKMAG(_p,RT_BOT_INTERNAL_MAGIC,"rt_bot_internal")
#define RT_SLOPPY_DOT_TOL   0.0087
#define NO   0
#define YES   1
#define SEG_MISS(SEG)   (SEG).seg_stp=(struct soltab *) 0;
#define ARB_FACE(valp, a, b, c, d)
#define RT_ARB_EDIT_EDGE   0
#define RT_ARB_EDIT_POINT   1
#define RT_ARB7_MOVE_POINT_5   11
#define RT_ARB6_MOVE_POINT_5   8
#define RT_ARB6_MOVE_POINT_6   9
#define RT_ARB5_MOVE_POINT_5   8
#define RT_ARB4_MOVE_POINT_4   3
#define LOC(i, j)   i*(aip->neqn)+j
#define TRI_NULL   ((struct tri_specific *)0)
#define IJ(ii, jj)   (((i+(ii))*(arip->pts_per_curve+1))+(j+(jj)))
#define ARS_PT(ii, jj)   (&arip->curves[i+(ii)][(j+(jj))*ELEMENTS_PER_VECT])
#define FIND_IJ(a, b)
#define ASSOC_GEOM(corn, a, b)
#define GLUE(_a, _b)   _a ## _b
#define XGLUE(_a, _b)   GLUE(_a,_b)
#define MAXHITS   128
#define BOT_MIN_DN   1.0e-9
#define RT_BOT_UNORIENTED_NORM(_hitp, _in_or_out)
#define TRI_TYPE   float
#define TRI_TYPE   double
#define NORM_TYPE   signed char
#define NORM_TYPE   fastf_t
#define NORMAL_SCALE   127.0
#define NORMAL_SCALE   1.0
#define ONE_OVER_SCALE   (1.0/127.0)
#define ONE_OVER_SCALE   1.0
#define RT_BOT_SEG_MISS(SEG)   (SEG).seg_stp=RT_SOLTAB_NULL
#define MAX_AFFECTED_FACES   128
#define RT_CLINE_O(m)   bu_offsetof( struct rt_cline_internal, m )
#define RT_CLINE_SEG_MISS(SEG)   (SEG).seg_stp=RT_SOLTAB_NULL
#define ORDERED_ISECT   1
#define DIM_BB_CHILDREN   4
#define NUM_BB_CHILDREN   (DIM_BB_CHILDREN*DIM_BB_CHILDREN)
#define MAGIC_dsp_bb   234
#define DSP_BB_CK(_p)   BU_CKMAG(_p, MAGIC_dsp_bb, "dsp_bb")
#define LAYER(l, x, y)   l->p[l->dim[1]*y+x]
#define dlog   if (RT_G_DEBUG & DEBUG_HF) bu_log
#define BBOX_PLANES   7
#define XMIN   0
#define XMAX   1
#define YMIN   2
#define YMAX   3
#define ZMIN   4
#define ZMAX   5
#define ZMID   6
#define ZTOP   7
#define DSP(_p, _x, _y)   dsp_val(_p, _x, _y, __FILE__, __LINE__)
#define XCNT(_p)   (((struct rt_dsp_internal *)_p)->dsp_xcnt)
#define YCNT(_p)   (((struct rt_dsp_internal *)_p)->dsp_ycnt)
#define XSIZ(_p)   (_p->dsp_i.dsp_xcnt - 1)
#define YSIZ(_p)   (_p->dsp_i.dsp_ycnt - 1)
#define DSP_O(m)   bu_offsetof(struct rt_dsp_internal, m)
#define DSP_AO(a)   bu_offsetofarray(struct rt_dsp_internal, a)
#define PLOT_LAYERS
#define ADD_SEG(isect, in, out, min, max, r, g, b)   add_seg(isect, in, out, min, max, r, g, b, __LINE__)
#define RT_DSP_SEG_MISS(SEG)   (SEG).seg_stp=RT_SOLTAB_NULL
#define RT_EBM_NULL   ((struct rt_ebm_specific *)0)
#define RT_EBM_O(m)   bu_offsetof(struct rt_ebm_internal, m)
#define NORM_ZPOS   3
#define NORM_YPOS   2
#define NORM_XPOS   1
#define NORM_XNEG   (-1)
#define NORM_YNEG   (-2)
#define NORM_ZNEG   (-3)
#define BIT_XWIDEN   2
#define BIT_YWIDEN   2
#define BIT(_eip, _xx, _yy)
#define EHY_NORM_BODY   (1)
#define EHY_NORM_TOP   (2)
#define RT_EHY_SEG_MISS(SEG)   (SEG).seg_stp=RT_SOLTAB_NULL
#define ELL_NULL   ((struct ell_specific *)0)
#define RT_ELL_SEG_MISS(SEG)   (SEG).seg_stp=RT_SOLTAB_NULL
#define ELLOUT(n)   ov+(n-1)*3
#define EPA_NORM_BODY   (1)
#define EPA_NORM_TOP   (2)
#define RT_EPA_SEG_MISS(SEG)   (SEG).seg_stp=RT_SOLTAB_NULL
#define ELLOUT(n)   ov+(n-1)*3
#define SEG_MISS(SEG)   (SEG).seg_stp=(struct soltab *) 0;
#define MAX_HITS   64
#define TOP_FACE   1
#define BOTTOM_FACE   2
#define LINE_SEG   3
#define CARC_SEG   4
#define NURB_SEG   5
#define BEZIER_SEG   6
#define UNKNOWN   0
#define A_IN_B   1
#define B_IN_A   2
#define DISJOINT   3
#define LOOPA   1
#define LOOPB   2
#define RT_EXTRUDE_SEG_MISS(SEG)   (SEG).seg_stp=RT_SOLTAB_NULL
#define GRIP_NULL   ((struct grip_specific *)0)
#define RT_HALF_SEG_MISS(SEG)   (SEG).seg_stp=RT_SOLTAB_NULL
#define HALF_NULL   ((struct half_specific *)0)
#define RT_HALF_SEG_MISS(SEG)   (SEG).seg_stp=RT_SOLTAB_NULL
#define HF_O(m)   bu_offsetof(struct rt_hf_internal, m)
#define MAXHITS   128
#define REC_NORM_BODY   (1)
#define REC_NORM_TOP   (2)
#define REC_NORM_BOT   (3)
#define SEG_MISS(SEG)   (SEG).seg_stp=(struct soltab *) 0;

Functions

void rt_arb_ifree (struct rt_db_internal *)
int rt_arb_get_cgtype (int *cgtype, struct rt_arb_internal *arb, const struct bn_tol *tol, register int *uvec, register int *svec)
int rt_arb_std_type (const struct rt_db_internal *ip, const struct bn_tol *tol)
void rt_arb_centroid (point_t center_pt, const struct rt_arb_internal *arb, int npoints)
HIDDEN int rt_arb_add_pt (register pointp_t point, const char *title, struct prep_arb *pap, int ptno, const char *name)
HIDDEN int rt_arb_mk_planes (register struct prep_arb *pap, struct rt_arb_internal *aip, const char *name)
HIDDEN int rt_arb_setup (struct soltab *stp, struct rt_arb_internal *aip, struct rt_i *rtip, int uv_wanted)
int rt_arb_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_arb_print (register const struct soltab *stp)
int rt_arb_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_arb_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_arb_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_arb_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_arb_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_arb_free (register struct soltab *stp)
int rt_arb_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_arb_class (const struct soltab *stp, const fastf_t *min, const fastf_t *max, const struct bn_tol *tol)
int rt_arb_import (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_arb_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_arb_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_arb_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_arb_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
int rt_arb_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_arb_tnurb (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct bn_tol *tol)
int rt_arb_calc_points (struct rt_arb_internal *arb, int cgtype, const plane_t planes[6], const struct bn_tol *tol)
int rt_arb_3face_intersect (point_t point, const plane_t planes[6], int type, int loc)
int rt_arb_calc_planes (Tcl_Interp *interp, struct rt_arb_internal *arb, int type, plane_t planes[6], const struct bn_tol *tol)
int rt_arb_move_edge (Tcl_Interp *interp, struct rt_arb_internal *arb, vect_t thru, int bp1, int bp2, int end1, int end2, const vect_t dir, plane_t planes[6], const struct bn_tol *tol)
int rt_arb_edit (Tcl_Interp *interp, struct rt_arb_internal *arb, int arb_type, int edit_type, vect_t pos_model, plane_t planes[6], const struct bn_tol *tol)
void rt_arbn_print (const struct soltab *stp)
void rt_arbn_ifree (struct rt_db_internal *ip)
int rt_arbn_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_arbn_print (register const struct soltab *stp)
int rt_arbn_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_arbn_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_arbn_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_arbn_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_arbn_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_arbn_free (register struct soltab *stp)
int rt_arbn_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_arbn_class (void)
int rt_arbn_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_arbn_import (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_arbn_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_arbn_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_arbn_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_arbn_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
int rt_arbn_tclget (Tcl_Interp *interp, const struct rt_db_internal *intern, const char *attr)
int rt_arbn_tcladjust (Tcl_Interp *interp, struct rt_db_internal *intern, int argc, char **argv)
int rt_bot_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_bot_ifree (struct rt_db_internal *ip)
int rt_ars_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
void rt_ars_free (register struct soltab *stp)
int rt_ars_class (const struct soltab *stp, const vect_t min, const vect_t max, const struct bn_tol *tol)
fastf_trt_ars_rd_curve (union record *rp, int npts)
int rt_ars_import (struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip)
int rt_ars_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_ars_import5 (struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip)
int rt_ars_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_ars_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
void rt_ars_ifree (struct rt_db_internal *ip)
int rt_ars_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_ars_print (register const struct soltab *stp)
int rt_ars_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_hitsort (register struct hit *h, register int nh)
void rt_ars_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_ars_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_ars_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
int rt_ars_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_ars_tclget (Tcl_Interp *interp, const struct rt_db_internal *intern, const char *attr)
int rt_ars_tcladjust (Tcl_Interp *interp, struct rt_db_internal *intern, int argc, char **argv)
HIDDEN int rt_bot_makesegs (struct hit *hits, int nhits, struct soltab *stp, struct xray *rp, struct application *ap, struct seg *seghead, struct rt_piecestate *psp)
int rt_botface_w_normals (struct soltab *stp, struct bot_specific *bot, fastf_t *ap, fastf_t *bp, fastf_t *cp, fastf_t *vertex_normals, int face_no, const struct bn_tol *tol)
int rt_botface (struct soltab *stp, struct bot_specific *bot, fastf_t *ap, fastf_t *bp, fastf_t *cp, int face_no, const struct bn_tol *tol)
void rt_bot_prep_pieces (struct bot_specific *bot, struct soltab *stp, int ntri, const struct bn_tol *tol)
void rt_bot_print (register const struct soltab *stp)
int rt_bot_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
int rt_bot_piece_shot (struct rt_piecestate *psp, struct rt_piecelist *plp, double dist_corr, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_bot_piece_hitsegs (struct rt_piecestate *psp, struct seg *seghead, struct application *ap)
void rt_bot_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_bot_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_bot_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_bot_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_bot_free (register struct soltab *stp)
int rt_bot_class (const struct soltab *stp, const fastf_t *min, const fastf_t *max, const struct bn_tol *tol)
int rt_bot_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
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)
int rt_bot_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_bot_import (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_bot_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_bot_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_bot_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_bot_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
int rt_bot_tnurb (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct bn_tol *tol)
int rt_bot_xform (struct rt_db_internal *op, const fastf_t *mat, struct rt_db_internal *ip, const int free, struct db_i *dbip)
int rt_bot_find_v_nearest_pt2 (const struct rt_bot_internal *bot, const point_t pt2, const mat_t mat)
int rt_bot_edge_in_list (const int v1, const int v2, const int edge_list[], const int edge_count)
int rt_bot_find_e_nearest_pt2 (int *vert1, int *vert2, const struct rt_bot_internal *bot, const point_t pt2, const mat_t mat)
int rt_bot_tclget (Tcl_Interp *interp, const struct rt_db_internal *intern, const char *attr)
int rt_bot_tcladjust (Tcl_Interp *interp, struct rt_db_internal *intern, int argc, char **argv)
int rt_bot_tclform (const struct rt_functab *ftp, Tcl_Interp *interp)
int rt_bot_vertex_fuse (struct rt_bot_internal *bot)
int rt_bot_same_orientation (const int *a, const int *b)
int rt_bot_face_fuse (struct rt_bot_internal *bot)
int rt_bot_condense (struct rt_bot_internal *bot)
int find_closest_face (fastf_t **centers, int *piece, int *old_faces, int num_faces, fastf_t *vertices)
void Add_unique_verts (int *piece_verts, int *v)
int rt_bot_sort_faces (struct rt_bot_internal *bot, int tris_per_piece)
int rt_bot_decimate (struct rt_bot_internal *bot, fastf_t max_chord_error, fastf_t max_normal_error, fastf_t min_edge_length)
int rt_smooth_bot (struct rt_bot_internal *bot, char *bot_name, struct db_i *dbip, fastf_t norm_tol_angle)
int XGLUE (rt_botface_w_normals_, TRI_TYPE)
void XGLUE (rt_bot_prep_pieces_, TRI_TYPE)
int XGLUE (rt_bot_prep_, TRI_TYPE)
HIDDEN int XGLUE (rt_bot_makesegs_, TRI_TYPE)
int XGLUE (rt_bot_shot_, TRI_TYPE)
int XGLUE (rt_bot_piece_shot_, TRI_TYPE)
void XGLUE (rt_bot_norm_, TRI_TYPE)
void XGLUE (rt_bot_free_, TRI_TYPE)
int rt_cline_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_cline_print (register const struct soltab *stp)
int rt_cline_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_cline_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_cline_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_cline_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_cline_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_cline_free (register struct soltab *stp)
int rt_cline_class (const struct soltab *stp, const fastf_t *min, const fastf_t *max, const struct bn_tol *tol)
int rt_cline_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_cline_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_cline_import (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_cline_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_cline_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_cline_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_cline_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
void rt_cline_ifree (struct rt_db_internal *ip)
int rt_cline_tnurb (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct bn_tol *tol)
int rt_cline_tclget (Tcl_Interp *interp, const struct rt_db_internal *intern, const char *attr)
int rt_cline_tcladjust (Tcl_Interp *interp, struct rt_db_internal *intern, int argc, char **argv)
int rt_cline_tclform (const struct rt_functab *ftp, Tcl_Interp *interp)
int rt_retrieve_binunif (struct rt_db_internal *intern, const struct db_i *dbip, const char *name)
void rt_binunif_ifree (struct rt_db_internal *ip)
unsigned short dsp_val (struct rt_dsp_internal *dsp_i, unsigned x, unsigned y, char *file, int line)
void rt_dsp_print (register const struct soltab *stp)
int rt_dsp_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
int dsp_in_rpp (struct isect_stuff *isect, register const fastf_t *min, register const fastf_t *max)
int rt_dsp_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_dsp_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_dsp_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_dsp_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_dsp_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_dsp_free (register struct soltab *stp)
int rt_dsp_class (void)
int rt_dsp_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_dsp_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_dsp_import (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_dsp_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_dsp_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip, struct resource *resp, const int minor_type)
int rt_dsp_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip, struct resource *resp, const int minor_type)
int rt_dsp_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local, struct resource *resp, struct db_i *db_ip)
void rt_dsp_ifree (struct rt_db_internal *ip)
int rt_dsp_tclget (Tcl_Interp *interp, const struct rt_db_internal *intern, const char *attr)
int rt_dsp_tcladjust (Tcl_Interp *interp, struct rt_db_internal *intern, int argc, char **argv)
void rt_dsp_make (const struct rt_functab *ftp, struct rt_db_internal *intern, double diameter)
int project_pt (point_t out, int A[3], int B[3], int C[3], point_t pt)
int dsp_pos (point_t out, struct soltab *stp, point_t p)
int rt_ebm_dda (struct xray *rp, struct soltab *stp, struct application *ap, struct seg *seghead)
int rt_seg_planeclip (struct seg *out_hd, struct seg *in_hd, vect_t out_norm, fastf_t in, fastf_t out, struct xray *rp, struct application *ap)
void rt_ebm_plate (int x1, int y1, int x2, int y2, double t, mat_t mat, struct bu_list *vhead)
int rt_seg_planeclip (struct seg *out_hd, struct seg *in_hd, fastf_t *out_norm, fastf_t in, fastf_t out, struct xray *rp, struct application *ap)
int rt_ebm_dda (register struct xray *rp, struct soltab *stp, struct application *ap, struct seg *seghead)
int rt_ebm_import (struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip)
int rt_ebm_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_ebm_import5 (struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip)
int rt_ebm_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_ebm_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
void rt_ebm_ifree (struct rt_db_internal *ip)
int rt_ebm_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_ebm_print (register const struct soltab *stp)
int rt_ebm_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_ebm_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_ebm_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_ebm_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_ebm_free (struct soltab *stp)
int rt_ebm_class (void)
int rt_ebm_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
void rt_ebm_plate (int x1, int y1, int x2, int y2, double t, register fastf_t *mat, register struct bu_list *vhead)
int rt_ebm_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_ebm_tclget (Tcl_Interp *interp, const struct rt_db_internal *intern, const char *attr)
int rt_ebm_tcladjust (Tcl_Interp *interp, struct rt_db_internal *intern, int argc, char **argv)
int rt_ebm_tclform (const struct rt_functab *ftp, Tcl_Interp *interp)
void rt_ebm_make (const struct rt_functab *ftp, struct rt_db_internal *intern, double diameter)
int rt_ehy_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_ehy_print (register const struct soltab *stp)
int rt_ehy_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_ehy_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_ehy_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_ehy_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_ehy_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_ehy_free (register struct soltab *stp)
int rt_ehy_class (void)
int rt_ehy_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_ehy_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_ehy_import (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_ehy_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_ehy_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_ehy_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_ehy_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
void rt_ehy_ifree (struct rt_db_internal *ip)
int rt_sph_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
int rt_ell_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_ell_print (register const struct soltab *stp)
int rt_ell_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_ell_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_ell_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_ell_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_ell_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_ell_free (register struct soltab *stp)
int rt_ell_class (void)
void rt_ell_16pts (register fastf_t *ov, register fastf_t *V, fastf_t *A, fastf_t *B)
int rt_ell_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_ell_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_ell_import (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_ell_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_ell_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_ell_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_ell_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
void rt_ell_ifree (struct rt_db_internal *ip)
int rt_ell_tnurb (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct bn_tol *tol)
int rt_epa_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_epa_print (register const struct soltab *stp)
int rt_epa_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_epa_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_epa_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_epa_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_epa_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_epa_free (register struct soltab *stp)
int rt_epa_class (void)
int rt_epa_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
void rt_ell_norms (register fastf_t *ov, fastf_t *A, fastf_t *B, fastf_t *h_vec, fastf_t t, int sides)
void rt_ell (register fastf_t *ov, register const fastf_t *V, const fastf_t *A, const fastf_t *B, int sides)
fastf_t rt_ell_ang (fastf_t *p1, fastf_t a, fastf_t b, fastf_t dtol, fastf_t ntol)
int rt_epa_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_epa_import (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_epa_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_epa_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_epa_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_epa_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
void rt_epa_ifree (struct rt_db_internal *ip)
int rt_eto_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_eto_print (register const struct soltab *stp)
int rt_eto_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_eto_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_eto_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_eto_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_eto_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_eto_free (struct soltab *stp)
int rt_eto_class (void)
int rt_eto_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_ell4 (struct rt_pt_node *pts, fastf_t a, fastf_t b, fastf_t dtol, fastf_t ntol)
point_trt_mk_ell (int *n, fastf_t a, fastf_t b, fastf_t dtol, fastf_t ntol)
int rt_eto_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_eto_import (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_eto_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_eto_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_eto_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_eto_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
void rt_eto_ifree (struct rt_db_internal *ip)
int seg_to_vlist (struct bu_list *vhead, const struct rt_tess_tol *ttol, point_t V, vect_t u_vec, vect_t v_vec, struct rt_sketch_internal *sketch_ip, genptr_t seg)
int rt_extrude_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_extrude_print (register const struct soltab *stp)
int get_quadrant (fastf_t *v, fastf_t *local_x, fastf_t *local_y, fastf_t *vx, fastf_t *vy)
int isect_line2_ellipse (fastf_t *dist, fastf_t *ray_start, fastf_t *ray_dir, fastf_t *center, fastf_t *ra, fastf_t *rb)
int isect_line_earc (fastf_t *dist, fastf_t *ray_start, fastf_t *ray_dir, fastf_t *center, fastf_t *ra, fastf_t *rb, fastf_t *norm, fastf_t *start, fastf_t *end, int orientation)
int rt_extrude_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_extrude_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_extrude_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_extrude_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_extrude_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_extrude_free (register struct soltab *stp)
int rt_extrude_class (void)
int rt_extrude_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
void get_indices (genptr_t seg, int *start, int *end)
void get_seg_midpoint (genptr_t seg, struct rt_sketch_internal *skt, point2d_t pt)
void isect_2D_loop_ray (point2d_t pta, point2d_t dir, struct bu_ptbl *loop, struct loop_inter **root, int which_loop, struct rt_sketch_internal *ip, struct bn_tol *tol)
int classify_sketch_loops (struct bu_ptbl *loopa, struct bu_ptbl *loopb, struct rt_sketch_internal *ip)
int rt_extrude_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_extrude_import (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip, struct resource *resp)
int rt_extrude_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_extrude_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
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)
int rt_extrude_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
void rt_extrude_ifree (struct rt_db_internal *ip)
int rt_extrude_xform (struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, int free, struct db_i *dbip, struct resource *resp)
int rt_extrude_tclform (const struct rt_functab *ftp, Tcl_Interp *interp)
int rt_extrude_tclget (Tcl_Interp *interp, const struct rt_db_internal *intern, const char *attr)
int rt_extrude_tcladjust (Tcl_Interp *interp, struct rt_db_internal *intern, int argc, char **argv)
int rt_grp_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_grp_print (register const struct soltab *stp)
int rt_grp_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_grp_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_grp_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_grp_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_grp_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_grp_free (struct soltab *stp)
int rt_grp_class (void)
int rt_grp_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_grp_import (struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip)
int rt_grp_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_grp_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_grp_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_grp_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
void rt_grp_ifree (struct rt_db_internal *ip)
int rt_grp_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_hlf_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_hlf_print (register const struct soltab *stp)
int rt_hlf_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_hlf_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_hlf_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_hlf_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_hlf_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_hlf_free (struct soltab *stp)
int rt_hlf_class (register const struct soltab *stp, const fastf_t *min, const fastf_t *max, const struct bn_tol *tol)
int rt_hlf_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_hlf_xform (struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, int free, struct db_i *dbip, struct resource *resp)
int rt_hlf_import (struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip)
int rt_hlf_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_hlf_import5 (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_hlf_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_hlf_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
void rt_hlf_ifree (struct rt_db_internal *ip)
int rt_hlf_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_hf_to_dsp (struct rt_db_internal *db_intern, struct resource *resp)
int rt_hf_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_hf_print (register const struct soltab *stp)
int rt_hf_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_hf_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_hf_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_hf_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_hf_free (register struct soltab *stp)
int rt_hf_class (void)
int rt_hf_plot (struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_hf_tess (struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol)
int rt_hf_import (struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip)
int rt_hf_export (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_hf_import5 (struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip)
int rt_hf_export5 (struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip)
int rt_hf_describe (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local)
void rt_hf_ifree (struct rt_db_internal *ip)
int rt_rec_prep (struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip)
void rt_rec_print (register const struct soltab *stp)
int rt_rec_shot (struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead)
void rt_rec_vshot (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap)
void rt_rec_norm (register struct hit *hitp, struct soltab *stp, register struct xray *rp)
void rt_rec_curve (register struct curvature *cvp, register struct hit *hitp, struct soltab *stp)
void rt_rec_uv (struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp)
void rt_rec_free (struct soltab *stp)
int rt_rec_class (void)

Variables

const struct bu_structparse rt_arb_parse []
const int rt_arb_faces [5][24]
const int rt_arb_planes [5][24]
short earb8 [12][18]
short earb7 [12][18]
short earb6 [10][18]
short earb5 [9][18]
short earb4 [5][18]
int rt_bot_minpieces
int rt_bot_minpieces = RT_DEFAULT_MINPIECES
int rt_bot_tri_per_piece = RT_DEFAULT_TRIS_PER_PIECE
const struct bu_structparse rt_cline_parse []
fastf_t rt_cline_radius = -1.0
const struct bu_structparse rt_dsp_parse []
const struct bu_structparse rt_dsp_ptab []
const struct bu_structparse fake_dsp_printab []
const struct bu_structparse rt_ebm_parse []
const struct bu_structparse rt_ehy_parse []
const struct bu_structparse rt_ell_parse []
const struct bu_structparse rt_epa_parse []
const struct bu_structparse rt_eto_parse []
const struct bu_structparse rt_grp_parse []
const struct bu_structparse rt_hlf_parse []
const struct bu_structparse rt_hf_parse []
const struct bu_structparse rt_hf_cparse []

Define Documentation

#define SEEN_RTGEOM_H   seen
 

Definition at line 58 of file rtgeom.h.

#define NAMELEN   16
 

Definition at line 66 of file rtgeom.h.

#define RT_TOR_INTERNAL_MAGIC   0x9bffed87
 

Definition at line 82 of file rtgeom.h.

Referenced by bu_identify_magic(), rt_tor_import(), and rt_tor_import5().

#define RT_TOR_CK_MAGIC _p   )     BU_CKMAG(_p,RT_TOR_INTERNAL_MAGIC,"rt_tor_internal")
 

Definition at line 83 of file rtgeom.h.

Referenced by rt_tor_describe(), rt_tor_export(), rt_tor_export5(), rt_tor_ifree(), rt_tor_plot(), rt_tor_prep(), and rt_tor_tess().

#define RT_TGC_INTERNAL_MAGIC   0xaabbdd87
 

Definition at line 97 of file rtgeom.h.

Referenced by bu_identify_magic(), nmg_to_tgc(), rt_tgc_import(), and rt_tgc_import5().

#define RT_TGC_CK_MAGIC _p   )     BU_CKMAG(_p,RT_TGC_INTERNAL_MAGIC,"rt_tgc_internal")
 

Definition at line 98 of file rtgeom.h.

Referenced by rt_rec_prep(), rt_tgc_describe(), rt_tgc_export(), rt_tgc_export5(), rt_tgc_plot(), rt_tgc_prep(), rt_tgc_tess(), and rt_tgc_tnurb().

#define RT_ELL_INTERNAL_MAGIC   0x93bb23ff
 

Definition at line 110 of file rtgeom.h.

Referenced by bu_identify_magic(), rt_ell_import(), and rt_ell_import5().

#define RT_ELL_CK_MAGIC _p   )     BU_CKMAG(_p,RT_ELL_INTERNAL_MAGIC,"rt_ell_internal")
 

Definition at line 111 of file rtgeom.h.

Referenced by rt_ell_describe(), rt_ell_export(), rt_ell_export5(), rt_ell_plot(), rt_ell_prep(), rt_ell_tess(), rt_ell_tnurb(), and rt_sph_prep().

#define RT_SUPERELL_INTERNAL_MAGIC   0xff93bb23
 

Definition at line 125 of file rtgeom.h.

Referenced by rt_superell_import(), and rt_superell_import5().

#define RT_SUPERELL_CK_MAGIC _p   )     BU_CKMAG(_p,RT_SUPERELL_INTERNAL_MAGIC,"rt_superell_internal")
 

Definition at line 126 of file rtgeom.h.

Referenced by rt_superell_describe(), rt_superell_export(), rt_superell_export5(), rt_superell_plot(), and rt_superell_prep().

#define RT_METABALL_INTERNAL_MAGIC   0x62616c6c
 

Definition at line 137 of file rtgeom.h.

Referenced by rt_metaball_import5().

#define RT_METABALL_CK_MAGIC _p   )     BU_CKMAG(_p,RT_METABALL_INTERNAL_MAGIC,"rt_metaball_internal")
 

Definition at line 138 of file rtgeom.h.

Referenced by rt_metaball_describe(), rt_metaball_export5(), rt_metaball_ifree(), rt_metaball_plot(), and rt_metaball_prep().

#define RT_ARB_INTERNAL_MAGIC   0x9befd010
 

Definition at line 150 of file rtgeom.h.

Referenced by bu_identify_magic(), rt_arb_import(), rt_arb_import5(), and wdb_make_bb_cmd().

#define RT_ARB_CK_MAGIC _p   )     BU_CKMAG(_p,RT_ARB_INTERNAL_MAGIC,"rt_arb_internal")
 

Definition at line 151 of file rtgeom.h.

Referenced by rt_arb_calc_planes(), rt_arb_calc_points(), rt_arb_centroid(), rt_arb_describe(), rt_arb_edit(), rt_arb_export(), rt_arb_export5(), rt_arb_get_cgtype(), rt_arb_move_edge(), rt_arb_plot(), rt_arb_prep(), rt_arb_setup(), rt_arb_std_type(), rt_arb_tess(), rt_arb_tnurb(), rt_arb_uv(), wdb_move_arb_edge_cmd(), wdb_move_arb_face_cmd(), and wdb_rotate_arb_face_cmd().

#define RT_ARS_INTERNAL_MAGIC   0x77ddbbe3
 

Definition at line 162 of file rtgeom.h.

Referenced by bu_identify_magic(), rt_ars_import(), and rt_ars_import5().

#define RT_ARS_CK_MAGIC _p   )     BU_CKMAG(_p,RT_ARS_INTERNAL_MAGIC,"rt_ars_internal")
 

Definition at line 163 of file rtgeom.h.

Referenced by rt_ars_describe(), rt_ars_export(), rt_ars_export5(), rt_ars_ifree(), rt_ars_plot(), rt_ars_prep(), rt_ars_tcladjust(), rt_ars_tclget(), and rt_ars_tess().

#define RT_HALF_INTERNAL_MAGIC   0xaa87bbdd
 

Definition at line 172 of file rtgeom.h.

Referenced by bu_identify_magic(), rt_hlf_import(), and rt_hlf_import5().

#define RT_HALF_CK_MAGIC _p   )     BU_CKMAG(_p,RT_HALF_INTERNAL_MAGIC,"rt_half_internal")
 

Definition at line 173 of file rtgeom.h.

Referenced by rt_hlf_describe(), rt_hlf_export(), rt_hlf_export5(), rt_hlf_plot(), rt_hlf_prep(), rt_hlf_tess(), and rt_hlf_xform().

#define RT_GRIP_INTERNAL_MAGIC   0x31196205
 

Definition at line 185 of file rtgeom.h.

Referenced by rt_grp_import(), and rt_grp_import5().

#define RT_GRIP_CK_MAGIC _p   )     BU_CKMAG(_p,RT_GRIP_INTERNAL_MAGIC,"rt_grip_internal")
 

Definition at line 186 of file rtgeom.h.

Referenced by rt_grp_describe(), rt_grp_export(), rt_grp_export5(), rt_grp_plot(), rt_grp_prep(), and rt_grp_tess().

#define RT_PG_INTERNAL_MAGIC   0x9bfed887
 

Definition at line 202 of file rtgeom.h.

Referenced by bu_identify_magic(), nmg_to_poly(), and rt_pg_import().

#define RT_PG_CK_MAGIC _p   )     BU_CKMAG(_p,RT_PG_INTERNAL_MAGIC,"rt_pg_internal")
 

Definition at line 203 of file rtgeom.h.

Referenced by rt_pg_describe(), rt_pg_export(), rt_pg_ifree(), rt_pg_plot(), rt_pg_plot_poly(), rt_pg_prep(), rt_pg_tess(), and rt_pg_to_bot().

#define RT_NURB_GET_CONTROL_POINT _s,
_u,
_v   ) 
 

Value:

((_s)->ctl_points[ \
        ((_v)*(_s)->s_size[0]+(_u))*RT_NURB_EXTRACT_COORDS((_s)->pt_type)])

Definition at line 219 of file rtgeom.h.

#define RT_EBM_NAME_LEN   256
 

Definition at line 234 of file rtgeom.h.

Referenced by rt_ebm_tcladjust().

#define RT_EBM_INTERNAL_MAGIC   0xf901b231
 

Definition at line 245 of file rtgeom.h.

Referenced by bu_identify_magic(), rt_ebm_import(), rt_ebm_import5(), and rt_ebm_make().

#define RT_EBM_CK_MAGIC _p   )     BU_CKMAG(_p,RT_EBM_INTERNAL_MAGIC,"rt_ebm_internal")
 

Definition at line 246 of file rtgeom.h.

Referenced by rt_ebm_describe(), rt_ebm_export(), rt_ebm_export5(), rt_ebm_ifree(), rt_ebm_plot(), rt_ebm_prep(), rt_ebm_tcladjust(), rt_ebm_tclget(), and rt_ebm_tess().

#define RT_VOL_NAME_LEN   128
 

Definition at line 251 of file rtgeom.h.

#define RT_VOL_INTERNAL_MAGIC   0x987ba1d0
 

Definition at line 265 of file rtgeom.h.

Referenced by bu_identify_magic(), rt_vol_import(), and rt_vol_import5().

#define RT_VOL_CK_MAGIC _p   )     BU_CKMAG(_p,RT_VOL_INTERNAL_MAGIC,"rt_vol_internal")
 

Definition at line 266 of file rtgeom.h.

Referenced by rt_vol_describe(), rt_vol_export(), rt_vol_export5(), rt_vol_ifree(), rt_vol_plot(), rt_vol_prep(), and rt_vol_tess().

#define RT_HF_INTERNAL_MAGIC   0x4846494d
 

Definition at line 290 of file rtgeom.h.

Referenced by rt_hf_import().

#define RT_HF_CK_MAGIC _p   )     BU_CKMAG(_p,RT_HF_INTERNAL_MAGIC,"rt_hf_internal")
 

Definition at line 291 of file rtgeom.h.

Referenced by rt_hf_describe(), rt_hf_export(), rt_hf_ifree(), rt_hf_plot(), rt_hf_prep(), rt_hf_tess(), and rt_hf_to_dsp().

#define RT_ARBN_INTERNAL_MAGIC   0x18236461
 

Definition at line 301 of file rtgeom.h.

Referenced by bu_identify_magic(), rt_arbn_import(), and rt_arbn_import5().

#define RT_ARBN_CK_MAGIC _p   )     BU_CKMAG(_p,RT_ARBN_INTERNAL_MAGIC,"rt_arbn_internal")
 

Definition at line 302 of file rtgeom.h.

Referenced by rt_arbn_describe(), rt_arbn_export(), rt_arbn_export5(), rt_arbn_ifree(), rt_arbn_plot(), rt_arbn_prep(), rt_arbn_tcladjust(), rt_arbn_tclget(), and rt_arbn_tess().

#define RT_PIPE_INTERNAL_MAGIC   0x7dd7bb3e
 

Definition at line 313 of file rtgeom.h.

Referenced by bu_identify_magic(), rt_pipe_import(), and rt_pipe_import5().

#define RT_PIPE_CK_MAGIC _p   )     BU_CKMAG(_p,RT_PIPE_INTERNAL_MAGIC,"rt_pipe_internal")
 

Definition at line 314 of file rtgeom.h.

Referenced by rt_pipe_describe(), rt_pipe_export(), rt_pipe_export5(), rt_pipe_ifree(), rt_pipe_plot(), rt_pipe_prep(), rt_pipe_tcladjust(), rt_pipe_tclget(), rt_pipe_tess(), and rt_vls_pipept().

#define RT_PART_INTERNAL_MAGIC   0xaaccee87
 

Definition at line 328 of file rtgeom.h.

Referenced by bu_identify_magic(), rt_part_import(), and rt_part_import5().

#define RT_PART_CK_MAGIC _p   )     BU_CKMAG(_p,RT_PART_INTERNAL_MAGIC,"rt_part_internal")
 

Definition at line 329 of file rtgeom.h.

Referenced by rt_part_describe(), rt_part_export(), rt_part_export5(), rt_part_plot(), rt_part_prep(), rt_part_tess(), and rt_part_uv().

#define RT_PARTICLE_TYPE_SPHERE   1
 

Definition at line 331 of file rtgeom.h.

Referenced by rt_part_describe(), rt_part_import(), rt_part_import5(), rt_part_plot(), rt_part_prep(), rt_part_print(), rt_part_shot(), and rt_part_tess().

#define RT_PARTICLE_TYPE_CYLINDER   2
 

Definition at line 332 of file rtgeom.h.

Referenced by rt_part_describe(), rt_part_import(), rt_part_import5(), rt_part_norm(), rt_part_print(), and rt_part_shot().

#define RT_PARTICLE_TYPE_CONE   3
 

Definition at line 333 of file rtgeom.h.

Referenced by rt_part_describe(), rt_part_import(), rt_part_import5(), and rt_part_print().

#define RT_RPC_INTERNAL_MAGIC   0xaaccee88
 

Definition at line 345 of file rtgeom.h.

Referenced by rt_rpc_import(), and rt_rpc_import5().

#define RT_RPC_CK_MAGIC _p   )     BU_CKMAG(_p,RT_RPC_INTERNAL_MAGIC,"rt_rpc_internal")
 

Definition at line 346 of file rtgeom.h.

Referenced by rt_rpc_describe(), rt_rpc_export(), rt_rpc_export5(), rt_rpc_ifree(), rt_rpc_plot(), rt_rpc_prep(), and rt_rpc_tess().

#define RT_RHC_INTERNAL_MAGIC   0xaaccee89
 

Definition at line 359 of file rtgeom.h.

Referenced by rt_rhc_import(), and rt_rhc_import5().

#define RT_RHC_CK_MAGIC _p   )     BU_CKMAG(_p,RT_RHC_INTERNAL_MAGIC,"rt_rhc_internal")
 

Definition at line 360 of file rtgeom.h.

Referenced by rt_rhc_describe(), rt_rhc_export(), rt_rhc_export5(), rt_rhc_ifree(), rt_rhc_plot(), rt_rhc_prep(), and rt_rhc_tess().

#define RT_EPA_INTERNAL_MAGIC   0xaaccee90
 

Definition at line 373 of file rtgeom.h.

Referenced by rt_epa_import(), and rt_epa_import5().

#define RT_EPA_CK_MAGIC _p   )     BU_CKMAG(_p,RT_EPA_INTERNAL_MAGIC,"rt_epa_internal")
 

Definition at line 374 of file rtgeom.h.

Referenced by rt_epa_describe(), rt_epa_export(), rt_epa_export5(), rt_epa_ifree(), rt_epa_plot(), rt_epa_prep(), and rt_epa_tess().

#define RT_EHY_INTERNAL_MAGIC   0xaaccee91
 

Definition at line 388 of file rtgeom.h.

Referenced by rt_ehy_import(), and rt_ehy_import5().

#define RT_EHY_CK_MAGIC _p   )     BU_CKMAG(_p,RT_EHY_INTERNAL_MAGIC,"rt_ehy_internal")
 

Definition at line 389 of file rtgeom.h.

Referenced by rt_ehy_describe(), rt_ehy_export(), rt_ehy_export5(), rt_ehy_ifree(), rt_ehy_plot(), rt_ehy_prep(), and rt_ehy_tess().

#define RT_ETO_INTERNAL_MAGIC   0xaaccee92
 

Definition at line 402 of file rtgeom.h.

Referenced by rt_eto_import(), and rt_eto_import5().

#define RT_ETO_CK_MAGIC _p   )     BU_CKMAG(_p,RT_ETO_INTERNAL_MAGIC,"rt_eto_internal")
 

Definition at line 403 of file rtgeom.h.

Referenced by rt_eto_describe(), rt_eto_export(), rt_eto_export5(), rt_eto_ifree(), rt_eto_plot(), rt_eto_prep(), and rt_eto_tess().

#define DSP_NAME_LEN   128
 

Definition at line 408 of file rtgeom.h.

#define RT_DSP_INTERNAL_MAGIC   0xde6
 

Definition at line 433 of file rtgeom.h.

Referenced by rt_dsp_import(), rt_dsp_import5(), rt_dsp_make(), and rt_hf_to_dsp().

#define RT_DSP_CK_MAGIC _p   )     BU_CKMAG(_p,RT_DSP_INTERNAL_MAGIC,"rt_dsp_internal")
 

Definition at line 434 of file rtgeom.h.

Referenced by dsp_val(), rt_dsp_describe(), rt_dsp_export(), rt_dsp_export5(), rt_dsp_ifree(), rt_dsp_norm(), rt_dsp_plot(), rt_dsp_prep(), rt_dsp_print(), rt_dsp_shot(), rt_dsp_tcladjust(), rt_dsp_tess(), and wdb_node_write().

#define SKETCH_NAME_LEN   16
 

Definition at line 441 of file rtgeom.h.

#define RT_SKETCH_INTERNAL_MAGIC   0x736b6574
 

Definition at line 458 of file rtgeom.h.

Referenced by rt_sketch_import(), and rt_sketch_import5().

#define RT_SKETCH_CK_MAGIC _p   )     BU_CKMAG(_p,RT_SKETCH_INTERNAL_MAGIC,"rt_sketch_internal")
 

Definition at line 459 of file rtgeom.h.

Referenced by classify_sketch_loops(), rt_copy_sketch(), rt_extrude_plot(), rt_extrude_prep(), rt_extrude_tess(), rt_sketch_describe(), rt_sketch_export(), rt_sketch_export5(), rt_sketch_ifree(), rt_sketch_plot(), rt_sketch_tcladjust(), and rt_sketch_tclget().

#define RT_SUBMODEL_INTERNAL_MAGIC   0x7375626d
 

subm

Definition at line 474 of file rtgeom.h.

Referenced by rt_submodel_import(), and rt_submodel_import5().

#define RT_SUBMODEL_CK_MAGIC _p   )     BU_CKMAG(_p,RT_SUBMODEL_INTERNAL_MAGIC,"rt_submodel_internal")
 

Definition at line 475 of file rtgeom.h.

Referenced by rt_submodel_describe(), rt_submodel_export(), rt_submodel_export5(), rt_submodel_ifree(), rt_submodel_plot(), rt_submodel_prep(), and rt_submodel_tess().

#define RT_EXTRUDE_INTERNAL_MAGIC   0x65787472
 

Definition at line 497 of file rtgeom.h.

Referenced by rt_extrude_import(), rt_extrude_import5(), and rt_extrude_xform().

#define RT_EXTRUDE_CK_MAGIC _p   )     BU_CKMAG(_p,RT_EXTRUDE_INTERNAL_MAGIC,"rt_extrude_internal")
 

Definition at line 498 of file rtgeom.h.

Referenced by db_update_nref(), rt_extrude_describe(), rt_extrude_export(), rt_extrude_export5(), rt_extrude_ifree(), rt_extrude_plot(), rt_extrude_prep(), rt_extrude_tcladjust(), rt_extrude_tclget(), rt_extrude_tess(), rt_extrude_xform(), wdb_move_all_cmd(), and wdb_node_write().

#define RT_CLINE_INTERNAL_MAGIC   0x43767378
 

Definition at line 514 of file rtgeom.h.

Referenced by rt_cline_import(), and rt_cline_import5().

#define RT_CLINE_CK_MAGIC _p   )     BU_CKMAG(_p,RT_CLINE_INTERNAL_MAGIC,"rt_cline_internal")
 

Definition at line 515 of file rtgeom.h.

Referenced by rt_cline_describe(), rt_cline_export(), rt_cline_export5(), rt_cline_ifree(), rt_cline_plot(), rt_cline_prep(), rt_cline_tcladjust(), rt_cline_tclget(), and rt_cline_tess().

#define RT_BOT_UNORIENTED   1
 

unoriented triangles

Definition at line 545 of file rtgeom.h.

Referenced by rt_ars_prep(), and rt_bot_describe().

#define RT_BOT_CCW   2
 

oriented counter-clockwise

Definition at line 546 of file rtgeom.h.

Referenced by nmg_bot(), rt_bot_describe(), and rt_pg_to_bot().

#define RT_BOT_CW   3
 

oriented clockwise

Definition at line 547 of file rtgeom.h.

Referenced by rt_bot_describe(), and rt_bot_tess().

#define RT_BOT_SURFACE   1
 

triangles represent a surface (no volume)

Definition at line 550 of file rtgeom.h.

Referenced by rt_bot_describe().

#define RT_BOT_SOLID   2
 

triangles respresent the boundary of a solid object

Definition at line 551 of file rtgeom.h.

Referenced by add_solid(), nmg_bot(), rt_ars_prep(), rt_bot_describe(), and rt_pg_to_bot().

#define RT_BOT_PLATE   3
 

triangles represent plates. Thicknesses are specified in "thickness" array, and face mode is specified in "face_mode" bit vector. This is the FASTGEN "plate" mode. Orientation is ignored.

Definition at line 552 of file rtgeom.h.

Referenced by add_solid(), rt_bot_describe(), rt_bot_export(), rt_bot_export5(), rt_bot_ifree(), rt_bot_makesegs(), rt_bot_tclget(), rt_bot_tess(), and XGLUE().

#define RT_BOT_PLATE_NOCOS   4
 

same as plate mode, but LOS is set equal to face thickness, not the thickness divided by the cosine of the obliquity angle

Definition at line 555 of file rtgeom.h.

Referenced by add_solid(), rt_bot_describe(), rt_bot_export(), rt_bot_export5(), rt_bot_ifree(), rt_bot_makesegs(), rt_bot_tclget(), rt_bot_tess(), and XGLUE().

#define RT_BOT_HAS_SURFACE_NORMALS   0x1
 

This primitive may have surface normals at each face vertex.

Definition at line 559 of file rtgeom.h.

Referenced by rt_bot_plot_poly(), and XGLUE().

#define RT_BOT_USE_NORMALS   0x2
 

Use the surface normals if they exist.

Definition at line 560 of file rtgeom.h.

Referenced by rt_bot_describe(), rt_bot_plot_poly(), rt_bot_tclget(), rt_smooth_bot(), and XGLUE().

#define RT_BOT_USE_FLOATS   0x4
 

Use the single precision version of "tri_specific" during prep.

Definition at line 561 of file rtgeom.h.

Referenced by rt_bot_free(), rt_bot_makesegs(), rt_bot_norm(), rt_bot_piece_shot(), rt_bot_prep(), rt_bot_prep_pieces(), rt_bot_shot(), rt_bot_tclget(), and rt_botface_w_normals().

#define RT_BOT_INTERNAL_MAGIC   0x626F7472
 

Definition at line 563 of file rtgeom.h.

Referenced by make_bot_object(), nmg_bot(), rt_bot_import(), rt_bot_import5(), rt_bot_xform(), and rt_pg_to_bot().

#define RT_BOT_CK_MAGIC _p   )     BU_CKMAG(_p,RT_BOT_INTERNAL_MAGIC,"rt_bot_internal")
 

Definition at line 564 of file rtgeom.h.

Referenced by add_solid(), rt_bot_condense(), rt_bot_decimate(), rt_bot_describe(), rt_bot_export(), rt_bot_export5(), rt_bot_face_fuse(), rt_bot_find_e_nearest_pt2(), rt_bot_find_v_nearest_pt2(), rt_bot_ifree(), rt_bot_plot(), rt_bot_plot_poly(), rt_bot_prep(), rt_bot_sort_faces(), rt_bot_tcladjust(), rt_bot_tclget(), rt_bot_tess(), rt_bot_vertex_fuse(), rt_bot_xform(), rt_smooth_bot(), wdb_bot_decimate_cmd(), wdb_smooth_bot_cmd(), and XGLUE().

#define RT_SLOPPY_DOT_TOL   0.0087
 

Definition at line 81 of file g_arb.c.

Referenced by rt_arb_add_pt().

#define NO   0
 

Definition at line 163 of file g_arb.c.

Referenced by rt_arb_get_cgtype().

#define YES   1
 

Definition at line 164 of file g_arb.c.

Referenced by rt_arb_get_cgtype().

#define SEG_MISS SEG   )     (SEG).seg_stp=(struct soltab *) 0;
 

Definition at line 880 of file g_arb.c.

Referenced by rt_rec_vshot(), rt_sph_vshot(), and rt_vstub().

#define ARB_FACE valp,
a,
b,
c,
d   ) 
 

Value:

RT_ADD_VLIST( vhead, valp[a], BN_VLIST_LINE_MOVE ); \
        RT_ADD_VLIST( vhead, valp[b], BN_VLIST_LINE_DRAW ); \
        RT_ADD_VLIST( vhead, valp[c], BN_VLIST_LINE_DRAW ); \
        RT_ADD_VLIST( vhead, valp[d], BN_VLIST_LINE_DRAW );

Definition at line 1108 of file g_arb.c.

Referenced by rt_arb_plot().

#define RT_ARB_EDIT_EDGE   0
 

Definition at line 1988 of file g_arb.c.

Referenced by rt_arb_edit().

#define RT_ARB_EDIT_POINT   1
 

Definition at line 1989 of file g_arb.c.

Referenced by rt_arb_edit().

#define RT_ARB7_MOVE_POINT_5   11
 

Definition at line 1990 of file g_arb.c.

Referenced by rt_arb_edit().

#define RT_ARB6_MOVE_POINT_5   8
 

Definition at line 1991 of file g_arb.c.

Referenced by rt_arb_edit().

#define RT_ARB6_MOVE_POINT_6   9
 

Definition at line 1992 of file g_arb.c.

Referenced by rt_arb_edit().

#define RT_ARB5_MOVE_POINT_5   8
 

Definition at line 1993 of file g_arb.c.

Referenced by rt_arb_edit().

#define RT_ARB4_MOVE_POINT_4   3
 

Definition at line 1994 of file g_arb.c.

Referenced by rt_arb_edit().

#define LOC i,
 )     i*(aip->neqn)+j
 

Definition at line 441 of file g_arbn.c.

#define TRI_NULL   ((struct tri_specific *)0)
 

Definition at line 64 of file g_ars.c.

Referenced by rt_ars_print(), rt_pg_free(), and rt_pg_print().

#define IJ ii,
jj   )     (((i+(ii))*(arip->pts_per_curve+1))+(j+(jj)))
 

Definition at line 992 of file g_ars.c.

#define ARS_PT ii,
jj   )     (&arip->curves[i+(ii)][(j+(jj))*ELEMENTS_PER_VECT])
 

Definition at line 993 of file g_ars.c.

Referenced by rt_ars_tess().

#define FIND_IJ a,
 ) 
 

Value:

if( !(verts[IJ(a,b)]) )  { \
                verts[IJ(a,b)] = \
                nmg_find_pt_in_shell( s, ARS_PT(a,b), tol ); \
        }

Definition at line 994 of file g_ars.c.

#define ASSOC_GEOM corn,
a,
 ) 
 

Value:

if( !((*corners[corn])->vg_p) )  { \
                nmg_vertex_gv( *(corners[corn]), ARS_PT(a,b) ); \
        }

Definition at line 999 of file g_ars.c.

#define GLUE _a,
_b   )     _a ## _b
 

Definition at line 63 of file g_bot.c.

#define XGLUE _a,
_b   )     GLUE(_a,_b)
 

Definition at line 64 of file g_bot.c.

Referenced by XGLUE().

#define MAXHITS   128
 

Definition at line 70 of file g_bot.c.

Referenced by rt_hf_shot(), and rt_pg_shot().

#define BOT_MIN_DN   1.0e-9
 

Definition at line 72 of file g_bot.c.

#define RT_BOT_UNORIENTED_NORM _hitp,
_in_or_out   ) 
 

Value:

{ \
        if( _in_or_out < 0 ) {  /* this is an exit */ \
                if( (_hitp)->hit_vpriv[X] < 0.0 ) { \
                        VREVERSE( (_hitp)->hit_normal, trip->tri_N ); \
                } else { \
                        VMOVE( (_hitp)->hit_normal, trip->tri_N ); \
                } \
        } else {        /* this is an entrance */ \
                if( (_hitp)->hit_vpriv[X] > 0.0 ) { \
                        VREVERSE( (_hitp)->hit_normal, trip->tri_N ); \
                } else { \
                        VMOVE( (_hitp)->hit_normal, trip->tri_N ); \
                } \
        } \
}

Definition at line 74 of file g_bot.c.

#define TRI_TYPE   float
 

Definition at line 130 of file g_bot.c.

Referenced by XGLUE().

#define TRI_TYPE   double
 

Definition at line 130 of file g_bot.c.

#define NORM_TYPE   signed char
 

Definition at line 131 of file g_bot.c.

#define NORM_TYPE   fastf_t
 

Definition at line 131 of file g_bot.c.

#define NORMAL_SCALE   127.0
 

Definition at line 132 of file g_bot.c.

#define NORMAL_SCALE   1.0
 

Definition at line 132 of file g_bot.c.

#define ONE_OVER_SCALE   (1.0/127.0)
 

Definition at line 133 of file g_bot.c.

Referenced by XGLUE().

#define ONE_OVER_SCALE   1.0
 

Definition at line 133 of file g_bot.c.

#define RT_BOT_SEG_MISS SEG   )     (SEG).seg_stp=RT_SOLTAB_NULL
 

Definition at line 372 of file g_bot.c.

#define MAX_AFFECTED_FACES   128
 

E D G E _ C A N _ B E _ D E C I M A T E D

Routine to determine if the specified edge can be eliminated within the given constraints "faces" is the current working version of the BOT face list. "v1" and "v2" are the indices into the BOT vertex list, they define the edge. "max_chord_error" is the maximum distance allowed between the old surface and new. "max_normal_error" is actually the minimum dot product allowed between old and new surface normals (cosine). "min_edge_length_sq" is the square of the minimum allowed edge length. any constraint value of -1 means ignore this constraint returns 1 if edge can be eliminated without breaking conatraints, 0 otherwise

Definition at line 3319 of file g_bot.c.

#define RT_CLINE_O  )     bu_offsetof( struct rt_cline_internal, m )
 

Definition at line 67 of file g_cline.c.

#define RT_CLINE_SEG_MISS SEG   )     (SEG).seg_stp=RT_SOLTAB_NULL
 

Definition at line 350 of file g_cline.c.

#define ORDERED_ISECT   1
 

Definition at line 62 of file g_dsp.c.

#define DIM_BB_CHILDREN   4
 

Definition at line 65 of file g_dsp.c.

#define NUM_BB_CHILDREN   (DIM_BB_CHILDREN*DIM_BB_CHILDREN)
 

Definition at line 66 of file g_dsp.c.

#define MAGIC_dsp_bb   234
 

Definition at line 91 of file g_dsp.c.

#define DSP_BB_CK _p   )     BU_CKMAG(_p, MAGIC_dsp_bb, "dsp_bb")
 

Definition at line 92 of file g_dsp.c.

#define LAYER l,
x,
y   )     l->p[l->dim[1]*y+x]
 

Definition at line 97 of file g_dsp.c.

#define dlog   if (RT_G_DEBUG & DEBUG_HF) bu_log
 

Definition at line 112 of file g_dsp.c.

#define BBOX_PLANES   7
 

Definition at line 115 of file g_dsp.c.

#define XMIN   0
 

Definition at line 116 of file g_dsp.c.

Referenced by dsp_in_rpp(), rt_dsp_norm(), and rt_dsp_prep().

#define XMAX   1
 

Definition at line 117 of file g_dsp.c.

Referenced by dsp_in_rpp(), and rt_dsp_prep().

#define YMIN   2
 

Definition at line 118 of file g_dsp.c.

Referenced by dsp_in_rpp(), and rt_dsp_prep().

#define YMAX   3
 

Definition at line 119 of file g_dsp.c.

Referenced by dsp_in_rpp(), and rt_dsp_prep().

#define ZMIN   4
 

Definition at line 120 of file g_dsp.c.

Referenced by dsp_in_rpp(), and rt_dsp_prep().

#define ZMAX   5
 

Definition at line 121 of file g_dsp.c.

Referenced by dsp_in_rpp(), and rt_dsp_prep().

#define ZMID   6
 

Definition at line 122 of file g_dsp.c.

Referenced by rt_dsp_prep().

#define ZTOP   7
 

Definition at line 123 of file g_dsp.c.

Referenced by rt_dsp_norm().

#define DSP _p,
_x,
_y   )     dsp_val(_p, _x, _y, __FILE__, __LINE__)
 

Definition at line 146 of file g_dsp.c.

Referenced by dsp_pos(), and rt_dsp_plot().

#define XCNT _p   )     (((struct rt_dsp_internal *)_p)->dsp_xcnt)
 

Definition at line 169 of file g_dsp.c.

#define YCNT _p   )     (((struct rt_dsp_internal *)_p)->dsp_ycnt)
 

Definition at line 170 of file g_dsp.c.

#define XSIZ _p   )     (_p->dsp_i.dsp_xcnt - 1)
 

Definition at line 171 of file g_dsp.c.

Referenced by dsp_pos(), and rt_dsp_uv().

#define YSIZ _p   )     (_p->dsp_i.dsp_ycnt - 1)
 

Definition at line 172 of file g_dsp.c.

Referenced by dsp_pos(), and rt_dsp_uv().

#define DSP_O  )     bu_offsetof(struct rt_dsp_internal, m)
 

Definition at line 248 of file g_dsp.c.

#define DSP_AO  )     bu_offsetofarray(struct rt_dsp_internal, a)
 

Definition at line 249 of file g_dsp.c.

#define PLOT_LAYERS
 

Definition at line 358 of file g_dsp.c.

#define ADD_SEG isect,
in,
out,
min,
max,
r,
g,
 )     add_seg(isect, in, out, min, max, r, g, b, __LINE__)
 

A D D _ S E G

Add a segment to the list of intersections in DSP space

Return: 0 continue to intersect 1 All intersections computed, terminate intersection processing

Definition at line 1073 of file g_dsp.c.

#define RT_DSP_SEG_MISS SEG   )     (SEG).seg_stp=RT_SOLTAB_NULL
 

Definition at line 2649 of file g_dsp.c.

#define RT_EBM_NULL   ((struct rt_ebm_specific *)0)
 

Definition at line 83 of file g_ebm.c.

#define RT_EBM_O  )     bu_offsetof(struct rt_ebm_internal, m)
 

Definition at line 85 of file g_ebm.c.

#define NORM_ZPOS   3
 

Definition at line 120 of file g_ebm.c.

Referenced by rt_seg_planeclip(), and rt_vol_norm().

#define NORM_YPOS   2
 

Definition at line 121 of file g_ebm.c.

Referenced by rt_ebm_norm(), and rt_vol_norm().

#define NORM_XPOS   1
 

Definition at line 122 of file g_ebm.c.

Referenced by rt_ebm_norm(), and rt_vol_norm().

#define NORM_XNEG   (-1)
 

Definition at line 123 of file g_ebm.c.

Referenced by rt_ebm_norm(), and rt_vol_norm().

#define NORM_YNEG   (-2)
 

Definition at line 124 of file g_ebm.c.

Referenced by rt_ebm_norm(), and rt_vol_norm().

#define NORM_ZNEG   (-3)
 

Definition at line 125 of file g_ebm.c.

Referenced by rt_ebm_dda(), rt_ebm_norm(), rt_seg_planeclip(), and rt_vol_norm().

#define BIT_XWIDEN   2
 

Definition at line 133 of file g_ebm.c.

Referenced by rt_ebm_import(), and rt_ebm_import5().

#define BIT_YWIDEN   2
 

Definition at line 134 of file g_ebm.c.

Referenced by rt_ebm_import(), and rt_ebm_import5().

#define BIT _eip,
_xx,
_yy   ) 
 

Value:

((unsigned char *)((_eip)->mp->apbuf))[ \
                ((_yy)+BIT_YWIDEN)*((_eip)->xdim + \
                BIT_XWIDEN*2)+(_xx)+BIT_XWIDEN ]

Definition at line 135 of file g_ebm.c.

Referenced by rt_ebm_dda(), rt_ebm_import(), rt_ebm_import5(), rt_ebm_plot(), and rt_ebm_tess().

#define EHY_NORM_BODY   (1)
 

Definition at line 330 of file g_ehy.c.

Referenced by rt_ehy_curve(), rt_ehy_norm(), rt_ehy_shot(), and rt_ehy_uv().

#define EHY_NORM_TOP   (2)
 

Definition at line 331 of file g_ehy.c.

Referenced by rt_ehy_curve(), rt_ehy_norm(), and rt_ehy_uv().

#define RT_EHY_SEG_MISS SEG   )     (SEG).seg_stp=RT_SOLTAB_NULL
 

Definition at line 465 of file g_ehy.c.

#define ELL_NULL   ((struct ell_specific *)0)
 

Definition at line 181 of file g_ell.c.

#define RT_ELL_SEG_MISS SEG   )     (SEG).seg_stp=RT_SOLTAB_NULL
 

Definition at line 402 of file g_ell.c.

Referenced by rt_ell_vshot().

#define ELLOUT  )     ov+(n-1)*3
 

R T _ E L L _ 1 6 P T S

Also used by the TGC code

Definition at line 588 of file g_ell.c.

Referenced by rt_ell(), rt_ell_16pts(), and rt_ell_norms().

#define EPA_NORM_BODY   (1)
 

Definition at line 331 of file g_epa.c.

Referenced by rt_epa_curve(), rt_epa_norm(), rt_epa_shot(), and rt_epa_uv().

#define EPA_NORM_TOP   (2)
 

Definition at line 332 of file g_epa.c.

Referenced by rt_epa_curve(), rt_epa_norm(), rt_epa_shot(), and rt_epa_uv().

#define RT_EPA_SEG_MISS SEG   )     (SEG).seg_stp=RT_SOLTAB_NULL
 

Definition at line 459 of file g_epa.c.

#define ELLOUT  )     ov+(n-1)*3
 

Definition at line 905 of file g_epa.c.

#define SEG_MISS SEG   )     (SEG).seg_stp=(struct soltab *) 0;
 

Definition at line 551 of file g_eto.c.

#define MAX_HITS   64
 

Definition at line 86 of file g_extrude.c.

Referenced by rt_extrude_shot().

#define TOP_FACE   1
 

Definition at line 89 of file g_extrude.c.

Referenced by rt_extrude_norm(), and rt_extrude_shot().

#define BOTTOM_FACE   2
 

Definition at line 90 of file g_extrude.c.

Referenced by rt_extrude_norm(), and rt_extrude_shot().

#define LINE_SEG   3
 

Definition at line 91 of file g_extrude.c.

Referenced by rt_extrude_curve(), rt_extrude_norm(), and rt_extrude_shot().

#define CARC_SEG   4
 

Definition at line 92 of file g_extrude.c.

Referenced by rt_extrude_curve(), and rt_extrude_norm().

#define NURB_SEG   5
 

Definition at line 93 of file g_extrude.c.

#define BEZIER_SEG   6
 

Definition at line 94 of file g_extrude.c.

Referenced by rt_extrude_norm().

#define UNKNOWN   0
 

Definition at line 97 of file g_extrude.c.

Referenced by classify_sketch_loops().

#define A_IN_B   1
 

Definition at line 98 of file g_extrude.c.

Referenced by classify_sketch_loops().

#define B_IN_A   2
 

Definition at line 99 of file g_extrude.c.

Referenced by classify_sketch_loops().

#define DISJOINT   3
 

Definition at line 100 of file g_extrude.c.

Referenced by classify_sketch_loops().

#define LOOPA   1
 

Definition at line 102 of file g_extrude.c.

Referenced by classify_sketch_loops().

#define LOOPB   2
 

Definition at line 103 of file g_extrude.c.

Referenced by classify_sketch_loops().

#define RT_EXTRUDE_SEG_MISS SEG   )     (SEG).seg_stp=RT_SOLTAB_NULL
 

Definition at line 1026 of file g_extrude.c.

#define GRIP_NULL   ((struct grip_specific *)0)
 

Definition at line 48 of file g_grip.c.

Referenced by rt_grp_print().

#define RT_HALF_SEG_MISS SEG   )     (SEG).seg_stp=RT_SOLTAB_NULL
 

Definition at line 123 of file g_grip.c.

Referenced by rt_hlf_vshot().

#define HALF_NULL   ((struct half_specific *)0)
 

Definition at line 78 of file g_half.c.

#define RT_HALF_SEG_MISS SEG   )     (SEG).seg_stp=RT_SOLTAB_NULL
 

Definition at line 204 of file g_half.c.

#define HF_O  )     bu_offsetof(struct rt_hf_internal, m)
 

Definition at line 84 of file g_hf.c.

#define MAXHITS   128
 

Definition at line 669 of file g_hf.c.

#define REC_NORM_BODY   (1)
 

Definition at line 394 of file g_rec.c.

Referenced by rt_rec_curve(), rt_rec_norm(), rt_rec_shot(), rt_rec_uv(), and rt_rec_vshot().

#define REC_NORM_TOP   (2)
 

Definition at line 395 of file g_rec.c.

Referenced by rt_rec_curve(), rt_rec_norm(), rt_rec_shot(), rt_rec_uv(), and rt_rec_vshot().

#define REC_NORM_BOT   (3)
 

Definition at line 396 of file g_rec.c.

Referenced by rt_rec_curve(), rt_rec_norm(), rt_rec_shot(), rt_rec_uv(), and rt_rec_vshot().

#define SEG_MISS SEG   )     (SEG).seg_stp=(struct soltab *) 0;
 

Definition at line 572 of file g_rec.c.


Function Documentation

void rt_arb_ifree struct rt_db_internal ip  ) 
 

R T _ A R B _ I F R E E

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

Definition at line 1421 of file g_arb.c.

References bu_free(), rt_db_internal::idb_ptr, NULL, and RT_CK_DB_INTERNAL.

Here is the call graph for this function:

int rt_arb_get_cgtype int *  cgtype,
struct rt_arb_internal arb,
const struct bn_tol tol,
register int *  uvec,
register int *  svec
 

R T _ A R B _ G E T _ C G T Y P E

C G A R B S : determines COMGEOM arb types from GED general arbs

Inputs -

Returns - # Number of distinct edge vectors (Number of entries in uvec array)

Implicit returns - *cgtype Comgeom type (number range 4..8; ARB4 .. ARB8). uvec[8] svec[11] Entries [0] and [1] are special

Definition at line 184 of file g_arb.c.

References BN_CK_TOL, NO, RT_ARB_CK_MAGIC, and YES.

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:

void rt_arb_centroid point_t  center_pt,
const struct rt_arb_internal arb,
int  npoints
 

R T _ A R B _ C E N T R O I D

Find the center point for the arb whose values are in the s array, with the given number of verticies. Return the point in center_pt.

Definition at line 352 of file g_arb.c.

References rt_arb_internal::pt, RT_ARB_CK_MAGIC, VADD2, and VSETALL.

HIDDEN int rt_arb_add_pt register pointp_t  point,
const char *  title,
struct prep_arb pap,
int  ptno,
const char *  name
 

R T _ A R B _ A D D _ P T

Add another point to a struct arb_specific, checking for unique pts. The first two points are easy. The third one triggers most of the plane calculations, and forth and subsequent ones are merely checked for validity.

Returns - 0 point was accepted -1 point was rejected

Definition at line 382 of file g_arb.c.

References aface::A, oface::arb_U, oface::arb_Ulen, oface::arb_UVorig, oface::arb_V, oface::arb_Vlen, bu_log(), FAST, LOCAL, MAGNITUDE, NEAR_ZERO, prep_arb::pa_center, prep_arb::pa_clockwise, prep_arb::pa_doopt, prep_arb::pa_face, prep_arb::pa_faces, prep_arb::pa_opt, aface::peqn, RT_SLOPPY_DOT_TOL, SQRT_SMALL_FASTF, VCROSS, VDOT, VJOIN1, VMOVE, VREVERSE, VSCALE, VSUB2, and VUNITIZE.

Here is the call graph for this function:

HIDDEN int rt_arb_mk_planes register struct prep_arb pap,
struct rt_arb_internal aip,
const char *  name
 

R T _ A R B _ M K _ P L A N E S

Given an rt_arb_internal structure with 8 points in it, compute the face information.

Returns - 0 OK <0 failure

Definition at line 525 of file g_arb.c.

References LOCAL, rt_arb_internal::pt, VADD2, and VSETALL.

Referenced by rt_arb_setup(), rt_arb_tess(), and rt_arb_tnurb().

HIDDEN int rt_arb_setup struct soltab stp,
struct rt_arb_internal aip,
struct rt_i rtip,
int  uv_wanted
 

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

This is packaged as a separate function, so that it can also be called "on the fly" from the UV mapper.

Returns - 0 OK !0 failure

Definition at line 653 of file g_arb.c.

References arb_specific::arb_face, arb_specific::arb_nmfaces, arb_specific::arb_opt, bcopy, bu_malloc(), directory::d_namep, bn_tol::dist_sq, LOCAL, MAGNITUDE, prep_arb::pa_doopt, prep_arb::pa_face, prep_arb::pa_faces, prep_arb::pa_opt, prep_arb::pa_tol_sq, rt_arb_internal::pt, RT_ARB_CK_MAGIC, rt_arb_mk_planes(), rt_i::rti_tol, soltab::st_aradius, soltab::st_bradius, soltab::st_center, soltab::st_dp, soltab::st_max, soltab::st_min, soltab::st_specific, VADD2SCALE, VMINMAX, VSUB2SCALE, X, Y, and Z.

Referenced by rt_arb_prep(), and rt_arb_uv().

Here is the call graph for this function:

int rt_arb_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ A R B _ P R E P

This is the actual LIBRT "prep" interface.

Returns - 0 OK !0 failure

Definition at line 740 of file g_arb.c.

References rt_db_internal::idb_ptr, RT_ARB_CK_MAGIC, and rt_arb_setup().

Here is the call graph for this function:

void rt_arb_print register const struct soltab stp  ) 
 

R T _ A R B _ P R I N T

Definition at line 754 of file g_arb.c.

References arb_specific::arb_face, arb_specific::arb_nmfaces, arb_specific::arb_opt, bu_log(), HPRINT, and VPRINT.

Here is the call graph for this function:

int rt_arb_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ A R B _ S H O T

Function - Shoot a ray at an ARB8.

Algorithm - The intersection distance is computed for each face. The largest IN distance and the smallest OUT distance are used as the entry and exit points.

Returns - 0 MISS >0 HIT

Definition at line 798 of file g_arb.c.

References application::a_resource, arb_specific::arb_face, arb_specific::arb_nmfaces, BU_LIST_INSERT, bu_log(), FAST, hit::hit_dist, hit::hit_surfno, HPRINT, INFINITY, seg::l, LOCAL, RT_G_DEBUG, RT_GET_SEG, seg::seg_in, seg::seg_out, seg::seg_stp, SQRT_SMALL_FASTF, soltab::st_specific, V3ARGS, and VDOT.

Here is the call graph for this function:

void rt_arb_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ A R B _ V S H O T

This is the Becker vector version

segp[i].seg_next = SEG_NULL;

Definition at line 887 of file g_arb.c.

References FAST, hit::hit_dist, hit::hit_surfno, INFINITY, seg::seg_in, and seg::seg_out.

void rt_arb_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ A R B _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 978 of file g_arb.c.

References arb_specific::arb_face, aface::peqn, soltab::st_specific, VJOIN1, and VMOVE.

void rt_arb_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ A R B _ C U R V E

Return the "curvature" of the ARB face. Pick a principle direction orthogonal to normal, and indicate no curvature.

Definition at line 997 of file g_arb.c.

References bn_vec_ortho().

Here is the call graph for this function:

void rt_arb_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ A R B _ U V

For a hit on a face of an ARB, return the (u,v) coordinates of the hit point. 0 <= u,v <= 1. u extends along the arb_U direction defined by B-A, v extends along the arb_V direction defined by Nx(B-A).

Definition at line 1013 of file g_arb.c.

References application::a_diverge, application::a_ray, application::a_rbeam, application::a_resource, application::a_rt_i, arb_specific::arb_face, arb_specific::arb_opt, bu_log(), bu_semaphore_acquire(), bu_semaphore_release(), DEBUG_SOLIDS, rt_db_internal::idb_ptr, LOCAL, aface::peqn, xray::r_dir, RT_ARB_CK_MAGIC, rt_arb_setup(), RT_CK_DB_INTERNAL, rt_db_free_internal(), rt_db_get_internal(), RT_G_DEBUG, rt_pr_soltab(), RT_SEM_MODEL, rt_i::rti_dbip, soltab::st_dp, soltab::st_matp, soltab::st_specific, VDOT, VJOIN1, VREVERSE, VSUB2, and VUNITIZE.

Here is the call graph for this function:

void rt_arb_free register struct soltab stp  ) 
 

R T _ A R B _ F R E E

Definition at line 1098 of file g_arb.c.

References arb_specific::arb_opt, and bu_free().

Here is the call graph for this function:

int rt_arb_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ A R B _ P L O T

Plot an ARB by tracing out four "U" shaped contours This draws each edge only once. XXX No checking for degenerate faces is done, but probably should be.

Definition at line 1122 of file g_arb.c.

References ARB_FACE, rt_db_internal::idb_ptr, rt_arb_internal::pt, RT_ARB_CK_MAGIC, and RT_CK_DB_INTERNAL.

int rt_arb_class const struct soltab stp,
const fastf_t min,
const fastf_t max,
const struct bn_tol tol
 

R T _ A R B _ C L A S S

Definition at line 1141 of file g_arb.c.

References arb_specific::arb_face, arb_specific::arb_nmfaces, BN_CLASSIFY_OUTSIDE, bn_hlf_class(), bu_log(), aface::peqn, RT_CLASSIFY_OUTSIDE, RT_CLASSIFY_UNIMPLEMENTED, and soltab::st_specific.

Here is the call graph for this function:

int rt_arb_import struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ A R B _ I M P O R T

Import an ARB8 from the database format to the internal format. There are two parts to this: First, the database is presently single precision binary floating point. Second, the ARB in the database is represented as a vector from the origin to the first point, and 7 vectors from the first point to the remaining points. In 1979 it seemed like a good idea...

Convert from vector to point notation by rotating each vector and adding in the base vector.

Definition at line 1178 of file g_arb.c.

References BU_CK_EXTERNAL, bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, bu_external::ext_buf, record::i, ID_ARB8, ID_SOLID, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, LOCAL, rt_arb_internal::magic, MAT4X3PNT, rt_arb_internal::pt, RT_ARB_INTERNAL_MAGIC, RT_CK_DB_INTERNAL, rt_fastf_float(), record::s, record::solidrec::s_values, record::u_id, and VADD2.

Here is the call graph for this function:

int rt_arb_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ A R B _ E X P O R T

Definition at line 1222 of file g_arb.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_external::ext_buf, bu_external::ext_nbytes, GENARB8, record::i, ID_ARB8, ID_SOLID, rt_db_internal::idb_ptr, rt_arb_internal::pt, RT_ARB_CK_MAGIC, RT_CK_DB_INTERNAL, record::s, record::solidrec::s_id, record::solidrec::s_type, record::solidrec::s_values, VSCALE, and VSUB2SCALE.

Here is the call graph for this function:

int rt_arb_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

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

Import an arb from the db5 format and convert to the internal structure. Code duplicated from rt_arb_import() with db5 help from g_ell.c

Definition at line 1257 of file g_arb.c.

References BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_malloc(), DB5_MAJORTYPE_BRLCAD, bu_external::ext_buf, bu_external::ext_nbytes, ID_ARB8, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_arb_internal::magic, MAT4X3PNT, ntohd(), rt_arb_internal::pt, RT_ARB_INTERNAL_MAGIC, RT_CK_DB_INTERNAL, and SIZEOF_NETWORK_DOUBLE.

Here is the call graph for this function:

int rt_arb_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ A R B _ E X P O R T 5

Definition at line 1285 of file g_arb.c.

References BU_CK_EXTERNAL, bu_malloc(), bu_external::ext_buf, bu_external::ext_nbytes, ID_ARB8, rt_db_internal::idb_ptr, rt_arb_internal::pt, RT_ARB_CK_MAGIC, RT_CK_DB_INTERNAL, SIZEOF_NETWORK_DOUBLE, and VSCALE.

Here is the call graph for this function:

int rt_arb_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 1313 of file g_arb.c.

References BN_TOL_MAGIC, bu_vls_strcat(), rt_db_internal::idb_ptr, INTCLAMP, RT_ARB_CK_MAGIC, rt_arb_std_type(), X, Y, and Z.

Here is the call graph for this function:

int rt_arb_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ A R B _ T E S S

"Tessellate" an ARB into an NMG data structure. Purely a mechanical transformation of one faceted object into another.

Returns - -1 failure 0 OK. *r points to nmgregion that holds this tessellation.

Definition at line 1440 of file g_arb.c.

References BU_LIST_FIRST, bzero, bn_tol::dist_sq, rt_db_internal::idb_ptr, LOCAL, nmg_mrsv(), RT_ARB_CK_MAGIC, rt_arb_mk_planes(), and RT_CK_DB_INTERNAL.

Here is the call graph for this function:

int rt_arb_tnurb struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct bn_tol tol
 

R T _ A R B _ T N U R B

"Tessellate" an ARB into a trimmed-NURB-NMG data structure. Purely a mechanical transformation of one faceted object into another.

Depending on the application, it might be beneficial to keep ARBs as planar-NMG objects; there is no real benefit to using B-splines here, other than uniformity of the conversion for all solids.

Returns - -1 failure 0 OK. *r points to nmgregion that holds this tessellation.

Definition at line 1549 of file g_arb.c.

References BU_LIST_FIRST, bzero, bn_tol::dist_sq, rt_db_internal::idb_ptr, LOCAL, nmg_mrsv(), RT_ARB_CK_MAGIC, rt_arb_mk_planes(), and RT_CK_DB_INTERNAL.

Here is the call graph for this function:

int rt_arb_calc_points struct rt_arb_internal arb,
int  cgtype,
const plane_t  planes[6],
const struct bn_tol tol
 

R T _ A R B _ C A L C _ P O I N T S

Takes the planes[] array and intersects the planes to find the vertices of a GENARB8. The vertices are stored into arb->pt[]. This is an analog of rt_arb_calc_planes().

Definition at line 1709 of file g_arb.c.

References bu_log(), rt_arb_3face_intersect(), and RT_ARB_CK_MAGIC.

Here is the call graph for this function:

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:

int rt_arb_calc_planes Tcl_Interp interp,
struct rt_arb_internal arb,
int  type,
plane_t  planes[6],
const struct bn_tol tol
 

R T _ A R B _ C A L C _ P L A N E S

Calculate the plane (face) equations for an arb output previously went to es_peqn[i].

Returns - -1 Failure 0 OK

Note - This function migrated from mged/edsol.c.

Definition at line 1787 of file g_arb.c.

References BN_CK_TOL, bn_mk_plane_3pts(), bu_vls_addr(), bu_vls_init(), bu_vls_printf(), interp, NULL, rt_arb_internal::pt, and RT_ARB_CK_MAGIC.

Referenced by rt_arb_edit(), wdb_move_arb_edge_cmd(), wdb_move_arb_face_cmd(), and wdb_rotate_arb_face_cmd().

Here is the call graph for this function:

int rt_arb_move_edge Tcl_Interp interp,
struct rt_arb_internal arb,
vect_t  thru,
int  bp1,
int  bp2,
int  end1,
int  end2,
const vect_t  dir,
plane_t  planes[6],
const struct bn_tol tol
 

MV_EDGE: Moves an arb edge (end1,end2) with bounding planes bp1 and bp2 through point "thru". The edge has (non-unit) slope "dir". Note that the fact that the normals here point in rather than out makes no difference for computing the correct intercepts. After the intercepts are found, they should be checked against the other faces to make sure that they are always "inside".

Definition at line 1837 of file g_arb.c.

References bn_isect_line3_plane(), interp, NULL, rt_arb_internal::pt, RT_ARB_CK_MAGIC, and VJOIN1.

Referenced by rt_arb_edit().

Here is the call graph for this function:

int rt_arb_edit Tcl_Interp interp,
struct rt_arb_internal arb,
int  arb_type,
int  edit_type,
vect_t  pos_model,
plane_t  planes[6],
const struct bn_tol tol
 

Definition at line 1997 of file g_arb.c.

References ARB4, ARB5, ARB6, ARB7, ARB8, bn_mk_plane_3pts(), interp, MAGNITUDE, NULL, rt_arb_internal::pt, RT_ARB4_MOVE_POINT_4, RT_ARB5_MOVE_POINT_5, RT_ARB6_MOVE_POINT_5, RT_ARB6_MOVE_POINT_6, RT_ARB7_MOVE_POINT_5, rt_arb_calc_planes(), RT_ARB_CK_MAGIC, RT_ARB_EDIT_EDGE, RT_ARB_EDIT_POINT, rt_arb_move_edge(), VMOVE, and VSUB2.

Referenced by wdb_move_arb_edge_cmd().

Here is the call graph for this function:

void rt_arbn_print const struct soltab stp  ) 
 

void rt_arbn_ifree struct rt_db_internal ip  ) 
 

R T _ A R B N _ I F R E E

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

Definition at line 1043 of file g_arbn.c.

References bu_free(), rt_arbn_internal::eqn, rt_db_internal::idb_ptr, rt_arbn_internal::neqn, RT_ARBN_CK_MAGIC, and RT_CK_DB_INTERNAL.

Here is the call graph for this function:

int rt_arbn_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ A R B N _ P R E P

Returns - 0 OK !0 failure

Definition at line 74 of file g_arbn.c.

References bu_malloc(), rt_db_internal::idb_ptr, rt_arbn_internal::neqn, RT_ARBN_CK_MAGIC, RT_CK_DB_INTERNAL, and rt_i::rti_tol.

Here is the call graph for this function:

void rt_arbn_print register const struct soltab stp  ) 
 

R T _ A R B N _ P R I N T

Definition at line 168 of file g_arbn.c.

int rt_arbn_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ A R B N _ S H O T

Intersect a ray with an ARBN. Find the largest "in" distance and the smallest "out" distance. Cyrus & Beck algorithm for convex polyhedra.

Returns - 0 MISS >0 HIT

Definition at line 184 of file g_arbn.c.

References application::a_resource, BU_LIST_INSERT, bu_log(), rt_arbn_internal::eqn, FAST, hit::hit_dist, hit::hit_surfno, INFINITY, seg::l, LOCAL, rt_arbn_internal::neqn, RT_GET_SEG, seg::seg_in, seg::seg_out, seg::seg_stp, SQRT_SMALL_FASTF, soltab::st_specific, and VDOT.

Here is the call graph for this function:

void rt_arbn_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ A R B N _ V S H O T

Definition at line 255 of file g_arbn.c.

References rt_vstub().

Here is the call graph for this function:

void rt_arbn_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ A R B N _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 271 of file g_arbn.c.

References bu_log(), rt_arbn_internal::eqn, rt_arbn_internal::neqn, soltab::st_specific, VJOIN1, VMOVE, and VSETALL.

Here is the call graph for this function:

void rt_arbn_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ A R B N _ C U R V E

Return the "curvature" of the ARB face. Pick a principle direction orthogonal to normal, and indicate no curvature.

Definition at line 295 of file g_arbn.c.

References bn_vec_ortho().

Here is the call graph for this function:

void rt_arbn_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ A R B N _ U V

For a hit on a face of an ARB, return the (u,v) coordinates of the hit point. 0 <= u,v <= 1. u extends along the arb_U direction defined by B-A, v extends along the arb_V direction defined by Nx(B-A).

Definition at line 311 of file g_arbn.c.

void rt_arbn_free register struct soltab stp  ) 
 

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

Definition at line 321 of file g_arbn.c.

References bu_free(), and rt_arbn_internal::eqn.

Here is the call graph for this function:

int rt_arbn_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ A R B N _ P L O T

Brute force through all possible plane intersections. Generate all edge lines, then intersect the line with all the other faces to find the vertices on that line. If the geometry is correct, there will be no more than two. While not the fastest strategy, this will produce an accurate plot without requiring extra bookkeeping. Note that the vectors will be drawn in no special order.

Definition at line 342 of file g_arbn.c.

References bn_mkpoint_3planes(), BN_VECT_ARE_PARALLEL, bn_tol::dist, rt_arbn_internal::eqn, rt_db_internal::idb_ptr, rt_arbn_internal::neqn, RT_ARBN_CK_MAGIC, RT_CK_DB_INTERNAL, and VDOT.

Here is the call graph for this function:

int rt_arbn_class void   ) 
 

R T _ A R B N _ C L A S S

Definition at line 423 of file g_arbn.c.

int rt_arbn_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

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

"Tessellate" an ARB into an NMG data structure. Purely a mechanical transformation of one faceted object into another.

Returns - -1 failure 0 OK. *r points to nmgregion that holds this tessellation.

Definition at line 518 of file g_arbn.c.

References bn_mkpoint_3planes(), bu_calloc(), bn_tol::dist, DIST_PT_PLANE, rt_arbn_internal::eqn, rt_db_internal::idb_ptr, faceuse::l, LOCAL, rt_arbn_internal::neqn, RT_ARBN_CK_MAGIC, and RT_CK_DB_INTERNAL.

Here is the call graph for this function:

int rt_arbn_import struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ A R B N _ I M P O R T

Convert from "network" doubles to machine specific. Transform

Definition at line 791 of file g_arbn.c.

References BU_CK_EXTERNAL, bu_glong(), bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, DBID_ARBN, rt_arbn_internal::eqn, bu_external::ext_buf, ID_ARBN, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_arbn_internal::magic, MAT4X3PNT, MAT4X3VEC, record::n, record::arbn_rec::n_neqn, rt_arbn_internal::neqn, ntohd(), RT_ARBN_INTERNAL_MAGIC, RT_CK_DB_INTERNAL, record::u_id, VDOT, VMOVE, VSCALE, and VUNITIZE.

Here is the call graph for this function:

int rt_arbn_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ A R B N _ E X P O R T

Definition at line 844 of file g_arbn.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_malloc(), bu_plong(), DBID_ARBN, rt_arbn_internal::eqn, bu_external::ext_buf, bu_external::ext_nbytes, ID_ARBN, rt_db_internal::idb_ptr, record::n, record::arbn_rec::n_grans, record::arbn_rec::n_id, record::arbn_rec::n_neqn, rt_arbn_internal::neqn, RT_ARBN_CK_MAGIC, RT_CK_DB_INTERNAL, X, Y, and Z.

Here is the call graph for this function:

int rt_arbn_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ A R B N _ I M P O R T 5

Convert from "network" doubles to machine specific. Transform

Definition at line 901 of file g_arbn.c.

References bn_mat_is_identity(), BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_glong(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, ELEMENTS_PER_PLANE, rt_arbn_internal::eqn, bu_external::ext_buf, bu_external::ext_nbytes, ID_ARBN, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_arbn_internal::magic, MAT4X3PNT, MAT4X3VEC, rt_arbn_internal::neqn, ntohd(), RT_ARBN_INTERNAL_MAGIC, RT_CK_DB_INTERNAL, SIZEOF_NETWORK_DOUBLE, VDOT, VMOVE, VSCALE, and VUNITIZE.

Here is the call graph for this function:

int rt_arbn_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ A R B N _ E X P O R T 5

Definition at line 960 of file g_arbn.c.

References BU_CK_EXTERNAL, bu_malloc(), bu_plong(), ELEMENTS_PER_PLANE, rt_arbn_internal::eqn, bu_external::ext_buf, bu_external::ext_nbytes, ID_ARBN, rt_db_internal::idb_ptr, rt_arbn_internal::neqn, RT_ARBN_CK_MAGIC, RT_CK_DB_INTERNAL, SIZEOF_NETWORK_DOUBLE, void(), X, Y, and Z.

Here is the call graph for this function:

int rt_arbn_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 1011 of file g_arbn.c.

References bu_vls_strcat(), rt_db_internal::idb_ptr, INTCLAMP, RT_ARBN_CK_MAGIC, X, Y, and Z.

Here is the call graph for this function:

int rt_arbn_tclget Tcl_Interp interp,
const struct rt_db_internal intern,
const char *  attr
 

R T _ A R B N _ T C L G E T

Routine to format the parameters of an ARBN primitive for "db get"

Legal requested parameters include: "N" - number of equations "P" - list of all the planes "P#" - the specified plane number (0 based) no arguments returns everything

Definition at line 1071 of file g_arbn.c.

References bu_vls_init(), bu_vls_printf(), bu_vls_strcpy(), rt_db_internal::idb_ptr, NULL, RT_ARBN_CK_MAGIC, and V4ARGS.

Here is the call graph for this function:

int rt_arbn_tcladjust Tcl_Interp interp,
struct rt_db_internal intern,
int  argc,
char **  argv
 

R T _ A R B N _ T C L A D J U S T

Routine to modify an arbn via the "db adjust" command

Legal parameters are: "N" - adjust the number of planes (new ones will be zeroed) "P" - adjust the entire list of planes "P#" - adjust a specific plane (0 based) "P+" - add a new plane to the list of planes

Definition at line 1144 of file g_arbn.c.

References bu_free(), bu_realloc(), rt_arbn_internal::eqn, rt_db_internal::idb_ptr, interp, rt_arbn_internal::neqn, RT_ARBN_CK_MAGIC, RT_CK_DB_INTERNAL, TCL_ERROR, tcl_list_to_fastf_array(), TCL_STATIC, void(), VSETALLN, and VUNITIZE.

Here is the call graph for this function:

int rt_bot_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ B O T _ P R E P

Given a pointer to a GED database record, and a transformation matrix, determine if this is a valid BOT, and if so, precompute various terms of the formula.

Returns - 0 BOT is OK !0 Error in description

Implicit return - A struct bot_specific is created, and it's address is stored in stp->st_specific for use by bot_shot().

Definition at line 217 of file g_bot.c.

References rt_bot_internal::bot_flags, rt_db_internal::idb_ptr, RT_BOT_CK_MAGIC, RT_BOT_USE_FLOATS, and RT_CK_DB_INTERNAL.

Referenced by rt_ars_prep().

void rt_bot_ifree struct rt_db_internal ip  ) 
 

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

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

Definition at line 1181 of file g_bot.c.

References bu_free(), rt_bot_internal::face_mode, rt_bot_internal::faces, GENPTR_NULL, rt_db_internal::idb_ptr, rt_bot_internal::magic, rt_bot_internal::mode, RT_BOT_CK_MAGIC, RT_BOT_PLATE, RT_BOT_PLATE_NOCOS, RT_CK_DB_INTERNAL, rt_bot_internal::thickness, and rt_bot_internal::vertices.

Referenced by rt_ars_prep().

Here is the call graph for this function:

int rt_ars_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ A R S _ T E S S

Definition at line 1007 of file g_ars.c.

References ARS_PT, bn_dist_pt3_lseg3(), bu_log(), bn_tol::dist, rt_db_internal::idb_ptr, rt_ars_internal::ncurves, rt_ars_internal::pts_per_curve, RT_ARS_CK_MAGIC, RT_CK_DB_INTERNAL, V3ARGS, and VAPPROXEQUAL.

Referenced by rt_ars_prep().

Here is the call graph for this function:

void rt_ars_free register struct soltab stp  ) 
 

Definition at line 78 of file g_ars.c.

References bu_bomb().

Here is the call graph for this function:

int rt_ars_class const struct soltab stp,
const vect_t  min,
const vect_t  max,
const struct bn_tol tol
 

Definition at line 83 of file g_ars.c.

References bu_bomb().

Here is the call graph for this function:

fastf_t* rt_ars_rd_curve union record rp,
int  npts
 

R T _ A R S _ R D _ C U R V E

rt_ars_rd_curve() reads a set of ARS B records and returns a pointer to a malloc()'ed memory area of fastf_t's to hold the curve.

Definition at line 100 of file g_ars.c.

References record::b, record::ars_ext::b_id, bu_log(), bu_malloc(), ELEMENTS_PER_VECT, fp, ID_ARS_B, and LOCAL.

Referenced by rt_ars_import().

Here is the call graph for this function:

int rt_ars_import struct rt_db_internal ip,
const struct bu_external ep,
const fastf_t mat,
const struct db_i dbip
 

R T _ A R S _ I M P O R T

Read all the curves in as a two dimensional array. The caller is responsible for freeing the dynamic memory.

Note that in each curve array, the first point is replicated as the last point, to make processing the data easier.

Definition at line 144 of file g_ars.c.

References record::a, record::ars_rec::a_m, record::ars_rec::a_n, BU_CK_EXTERNAL, bu_log(), bu_malloc(), rt_ars_internal::curves, DB5_MAJORTYPE_BRLCAD, bu_external::ext_buf, record::i, ID_ARS, ID_ARS_A, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, LOCAL, rt_ars_internal::magic, rt_ars_internal::ncurves, rt_ars_internal::pts_per_curve, RT_ARS_INTERNAL_MAGIC, rt_ars_rd_curve(), RT_CK_DB_INTERNAL, and record::u_id.

Here is the call graph for this function:

int rt_ars_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ A R S _ E X P O R T

The name will be added by the caller. Generally, only libwdb will set conv2mm != 1.0

Definition at line 216 of file g_ars.c.

References record::a, record::ars_rec::a_curlen, record::ars_rec::a_id, record::ars_rec::a_m, record::ars_rec::a_n, record::ars_rec::a_totlen, record::ars_rec::a_type, ARS, ARSCONT, record::b, record::ars_ext::b_id, bu_calloc(), BU_CK_EXTERNAL, rt_ars_internal::curves, ELEMENTS_PER_VECT, bu_external::ext_buf, bu_external::ext_nbytes, fp, ID_ARS, ID_ARS_A, ID_ARS_B, rt_db_internal::idb_ptr, rt_ars_internal::ncurves, rt_ars_internal::pts_per_curve, RT_ARS_CK_MAGIC, RT_CK_DB_INTERNAL, VMOVE, VSCALE, and VSUB2SCALE.

Here is the call graph for this function:

int rt_ars_import5 struct rt_db_internal ip,
const struct bu_external ep,
const fastf_t mat,
const struct db_i dbip
 

R T _ A R S _ I M P O R T 5

Read all the curves in as a two dimensional array. The caller is responsible for freeing the dynamic memory.

Note that in each curve array, the first point is replicated as the last point, to make processing the data easier.

Definition at line 292 of file g_ars.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_glong(), bu_malloc(), rt_ars_internal::curves, DB5_MAJORTYPE_BRLCAD, ELEMENTS_PER_VECT, bu_external::ext_buf, fp, ID_ARS, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_ars_internal::magic, MAT4X3PNT, rt_ars_internal::ncurves, ntohd(), rt_ars_internal::pts_per_curve, RT_ARS_INTERNAL_MAGIC, RT_CK_DB_INTERNAL, SIZEOF_NETWORK_DOUBLE, and SIZEOF_NETWORK_LONG.

Here is the call graph for this function:

int rt_ars_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ A R S _ E X P O R T 5

The name will be added by the caller. Generally, only libwdb will set conv2mm != 1.0

Definition at line 344 of file g_ars.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_plong(), rt_ars_internal::curves, ELEMENTS_PER_VECT, bu_external::ext_buf, bu_external::ext_nbytes, fp, ID_ARS, rt_db_internal::idb_ptr, rt_ars_internal::ncurves, ntohd(), rt_ars_internal::pts_per_curve, RT_ARS_CK_MAGIC, RT_CK_DB_INTERNAL, SIZEOF_NETWORK_DOUBLE, SIZEOF_NETWORK_LONG, void(), and VSCALE.

Here is the call graph for this function:

int rt_ars_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 390 of file g_ars.c.

References bu_vls_strcat(), ELEMENTS_PER_VECT, rt_db_internal::idb_ptr, INTCLAMP, RT_ARS_CK_MAGIC, X, Y, and Z.

Here is the call graph for this function:

void rt_ars_ifree struct rt_db_internal ip  ) 
 

R T _ A R S _ I F R E E

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

Definition at line 440 of file g_ars.c.

References bu_free(), rt_ars_internal::curves, rt_db_internal::idb_ptr, rt_ars_internal::ncurves, RT_ARS_CK_MAGIC, and RT_CK_DB_INTERNAL.

Referenced by rt_ars_prep().

Here is the call graph for this function:

int rt_ars_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ A R S _ P R E P

This routine is used to prepare a list of planar faces for being shot at by the ars routines.

Process an ARS, which is represented as a vector from the origin to the first point, and many vectors from the first point to the remaining points.

This routine is unusual in that it has to read additional database records to obtain all the necessary information.

Definition at line 476 of file g_ars.c.

References bot_specific::bot_facelist, bot_specific::bot_facemode, bot_specific::bot_mode, bot_specific::bot_orientation, bot_specific::bot_thickness, bu_avs_init(), BU_GETSTRUCT, BU_LIST_FIRST, bu_log(), rt_ars_internal::curves, directory::d_namep, DB5_MAJORTYPE_BRLCAD, ELEMENTS_PER_VECT, ID_BOT, rt_db_internal::idb_avs, rt_db_internal::idb_magic, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_minor_type, rt_db_internal::idb_ptr, INFINITY, LOCAL, rt_ars_internal::ncurves, nmg_bot(), nmg_km(), nmg_mm(), NULL, rt_ars_internal::pts_per_curve, model::r_hd, RT_ARS_CK_MAGIC, rt_ars_ifree(), rt_ars_tess(), rt_bot_ifree(), rt_bot_prep(), RT_BOT_SOLID, RT_BOT_UNORIENTED, RT_DB_INTERNAL_MAGIC, rt_i::rti_tol, rt_i::rti_ttol, nmgregion::s_hd, soltab::st_dp, soltab::st_max, soltab::st_min, soltab::st_specific, VMINMAX, and VSETALL.

Here is the call graph for this function:

void rt_ars_print register const struct soltab stp  ) 
 

R T _ A R S _ P R I N T

Definition at line 641 of file g_ars.c.

References bu_log(), tri_specific::tri_A, tri_specific::tri_BA, tri_specific::tri_CA, tri_specific::tri_forw, tri_specific::tri_N, TRI_NULL, tri_specific::tri_wn, and VPRINT.

Here is the call graph for this function:

int rt_ars_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ A R S _ S H O T

Function - Shoot a ray at an ARS.

Returns - 0 MISS !0 HIT

Definition at line 671 of file g_ars.c.

References application::a_rt_i, bu_log(), DEBUG_ARB8, bn_tol::dist, FAST, LOCAL, NEAR_ZERO, RT_ARS_MAXHITS, RT_G_DEBUG, RT_HIT_MAGIC, RT_HIT_NORM, rt_hitsort(), rt_i::rti_tol, soltab::st_specific, tri_specific::tri_A, tri_specific::tri_BA, tri_specific::tri_CA, tri_specific::tri_forw, tri_specific::tri_wn, VCROSS, VDOT, VSUB2, and X.

Here is the call graph for this function:

void rt_hitsort register struct hit h,
register int  nh
 

R T _ H I T S O R T

Sort an array of hits into ascending order.

Definition at line 867 of file g_ars.c.

References LOCAL.

void rt_ars_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ A R S _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 889 of file g_ars.c.

References tri_specific::tri_N, VJOIN1, and VMOVE.

void rt_ars_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ A R S _ C U R V E

Return the "curvature" of the ARB face. Pick a principle direction orthogonal to normal, and indicate no curvature.

Definition at line 906 of file g_ars.c.

References bn_vec_ortho().

Here is the call graph for this function:

void rt_ars_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ A R S _ U V

For a hit on a face of an ARB, return the (u,v) coordinates of the hit point. 0 <= u,v <= 1. u extends along the Xbasis direction defined by B-A, v extends along the "Ybasis" direction defined by (B-A)xN.

Definition at line 924 of file g_ars.c.

References application::a_diverge, application::a_rbeam, bu_log(), LOCAL, MAGNITUDE, RT_G_DEBUG, tri_specific::tri_A, tri_specific::tri_BA, tri_specific::tri_CA, VDOT, and VSUB2.

Here is the call graph for this function:

int rt_ars_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ A R S _ P L O T

Definition at line 956 of file g_ars.c.

References BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, rt_ars_internal::curves, rt_db_internal::idb_ptr, rt_ars_internal::ncurves, rt_ars_internal::pts_per_curve, RT_ADD_VLIST, RT_ARS_CK_MAGIC, and RT_CK_DB_INTERNAL.

int rt_ars_tclget Tcl_Interp interp,
const struct rt_db_internal intern,
const char *  attr
 

Definition at line 1184 of file g_ars.c.

References bu_vls_init(), bu_vls_printf(), bu_vls_strcpy(), rt_db_internal::idb_ptr, NULL, RT_ARS_CK_MAGIC, and V3ARGS.

Here is the call graph for this function:

int rt_ars_tcladjust Tcl_Interp interp,
struct rt_db_internal intern,
int  argc,
char **  argv
 

Definition at line 1266 of file g_ars.c.

References bu_free(), bu_malloc(), bu_realloc(), rt_ars_internal::curves, rt_db_internal::idb_ptr, rt_ars_internal::ncurves, rt_ars_internal::pts_per_curve, RT_ARS_CK_MAGIC, RT_CK_DB_INTERNAL, VMOVE, and VSETALL.

Here is the call graph for this function:

HIDDEN int rt_bot_makesegs struct hit hits,
int  nhits,
struct soltab stp,
struct xray rp,
struct application ap,
struct seg seghead,
struct rt_piecestate psp
 

R T _ B O T _ M A K E S E G S

Given an array of hits, make segments out of them. Exactly how this is to be done depends on the mode of the BoT.

Definition at line 282 of file g_bot.c.

References bot_specific::bot_flags, bot_specific::bot_mode, RT_BOT_PLATE, RT_BOT_PLATE_NOCOS, RT_BOT_USE_FLOATS, and soltab::st_specific.

Referenced by rt_bot_piece_hitsegs().

int rt_botface_w_normals struct soltab stp,
struct bot_specific bot,
fastf_t ap,
fastf_t bp,
fastf_t cp,
fastf_t vertex_normals,
int  face_no,
const struct bn_tol tol
 

R T _ B O T F A C E

This function is called with pointers to 3 points, and is used to prepare BOT faces. ap, bp, cp point to vect_t points.

Return - 0 if the 3 points didn't form a plane (eg, colinear, etc). # pts (3) if a valid plane resulted.

Definition at line 153 of file g_bot.c.

References bot_specific::bot_flags, and RT_BOT_USE_FLOATS.

Referenced by rt_botface().

int rt_botface struct soltab stp,
struct bot_specific bot,
fastf_t ap,
fastf_t bp,
fastf_t cp,
int  face_no,
const struct bn_tol tol
 

Definition at line 173 of file g_bot.c.

References NULL, and rt_botface_w_normals().

Here is the call graph for this function:

void rt_bot_prep_pieces struct bot_specific bot,
struct soltab stp,
int  ntri,
const struct bn_tol tol
 

Definition at line 189 of file g_bot.c.

References bot_specific::bot_flags, and RT_BOT_USE_FLOATS.

void rt_bot_print register const struct soltab stp  ) 
 

R T _ B O T _ P R I N T

Definition at line 237 of file g_bot.c.

int rt_bot_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ B O T _ S H O T

Intersect a ray with a bot. If an intersection occurs, a struct seg will be acquired and filled in.

Notes for rt_bot_norm(): hit_private contains pointer to the tri_specific structure hit_vpriv[X] contains dot product of ray direction and unit normal from tri_specific

Returns - 0 MISS >0 HIT

Definition at line 314 of file g_bot.c.

References bot_specific::bot_flags, RT_BOT_USE_FLOATS, and soltab::st_specific.

int rt_bot_piece_shot struct rt_piecestate psp,
struct rt_piecelist plp,
double  dist_corr,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ B O T _ P I E C E _ S H O T

Intersect a ray with a list of "pieces" of a BoT.

This routine may be invoked many times for a single ray, as the ray traverses from one space partitioning cell to the next.

Plate-mode (2 hit) segments will be returned immediately in seghead.

Generally the hits are stashed between invocations in psp.

Definition at line 338 of file g_bot.c.

References bot_specific::bot_flags, RT_BOT_USE_FLOATS, RT_CK_PIECELIST, RT_CK_SOLTAB, soltab::st_specific, and rt_piecelist::stp.

void rt_bot_piece_hitsegs struct rt_piecestate psp,
struct seg seghead,
struct application ap
 

R T _ B O T _ P I E C E _ H I T S E G S

Definition at line 359 of file g_bot.c.

References application::a_ray, rt_htbl::end, rt_htbl::hits, rt_piecestate::htab, rt_bot_makesegs(), RT_CK_AP, RT_CK_HTBL, RT_CK_PIECESTATE, rt_hitsort(), rt_piecestate::stp, and void().

Here is the call graph for this function:

void rt_bot_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ B O T _ V S H O T

Vectorized version.

Definition at line 380 of file g_bot.c.

References rt_vstub().

Here is the call graph for this function:

void rt_bot_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ B O T _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 396 of file g_bot.c.

References bot_specific::bot_flags, RT_BOT_USE_FLOATS, and soltab::st_specific.

void rt_bot_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ B O T _ C U R V E

Return the curvature of the bot.

Definition at line 413 of file g_bot.c.

References bn_vec_ortho().

Here is the call graph for this function:

void rt_bot_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ B O T _ U V

For a hit on the surface of an bot, return the (u,v) coordinates of the hit point, 0 <= u,v <= 1. u = azimuth v = elevation

Definition at line 431 of file g_bot.c.

void rt_bot_free register struct soltab stp  ) 
 

R T _ B O T _ F R E E

Definition at line 439 of file g_bot.c.

References bot_specific::bot_flags, and RT_BOT_USE_FLOATS.

int rt_bot_class const struct soltab stp,
const fastf_t min,
const fastf_t max,
const struct bn_tol tol
 

R T _ B O T _ C L A S S

Definition at line 455 of file g_bot.c.

References RT_CLASSIFY_UNIMPLEMENTED.

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.

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.

int rt_bot_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ B O T _ T E S S

Returns - -1 failure 0 OK. *r points to nmgregion that holds this tessellation.

Definition at line 547 of file g_bot.c.

References bu_calloc(), BU_LIST_FIRST, rt_bot_internal::faces, rt_db_internal::idb_ptr, LOCAL, rt_bot_internal::mode, nmg_mrsv(), rt_bot_internal::num_faces, rt_bot_internal::num_vertices, rt_bot_internal::orientation, RT_BOT_CK_MAGIC, RT_BOT_CW, RT_BOT_PLATE, RT_BOT_PLATE_NOCOS, RT_CK_DB_INTERNAL, rt_bot_internal::vertices, and VMOVE.

Here is the call graph for this function:

int rt_bot_import struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

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

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

Definition at line 644 of file g_bot.c.

References record::bot, record::bot_rec::bot_data, rt_bot_internal::bot_flags, record::bot_rec::bot_mode, record::bot_rec::bot_num_triangles, record::bot_rec::bot_num_verts, record::bot_rec::bot_orientation, bu_calloc(), BU_CK_EXTERNAL, bu_glong(), bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, DBID_BOT, bu_external::ext_buf, rt_bot_internal::faces, record::i, ID_BOT, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, LOCAL, rt_bot_internal::magic, MAT4X3PNT, rt_bot_internal::mode, ntohd(), rt_bot_internal::num_faces, rt_bot_internal::num_vertices, rt_bot_internal::orientation, RT_BOT_INTERNAL_MAGIC, RT_CK_DB_INTERNAL, record::u_id, and rt_bot_internal::vertices.

Here is the call graph for this function:

int rt_bot_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ B O T _ E X P O R T

The name is added by the caller, in the usual place.

Definition at line 720 of file g_bot.c.

References record::bot, record::bot_rec::bot_data, record::bot_rec::bot_err_mode, record::bot_rec::bot_id, record::bot_rec::bot_mode, record::bot_rec::bot_nrec, record::bot_rec::bot_num_triangles, record::bot_rec::bot_num_verts, record::bot_rec::bot_orientation, bu_bitv_clear(), bu_bitv_new(), bu_bitv_to_hex(), bu_calloc(), BU_CK_EXTERNAL, bu_log(), bu_plong(), bu_vls_init(), bu_vls_strlen(), DBID_BOT, bu_external::ext_buf, bu_external::ext_nbytes, htond(), ID_BOT, rt_db_internal::idb_ptr, rt_bot_internal::num_normals, RT_BOT_CK_MAGIC, RT_BOT_PLATE, RT_BOT_PLATE_NOCOS, RT_CK_DB_INTERNAL, and VSCALE.

Here is the call graph for this function:

int rt_bot_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

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

Definition at line 826 of file g_bot.c.

References rt_bot_internal::bot_flags, bu_calloc(), BU_CK_EXTERNAL, bu_glong(), DB5_MAJORTYPE_BRLCAD, bu_external::ext_buf, rt_bot_internal::faces, ID_BOT, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_bot_internal::magic, MAT4X3PNT, rt_bot_internal::mode, ntohd(), rt_bot_internal::num_faces, rt_bot_internal::num_vertices, rt_bot_internal::orientation, RT_BOT_INTERNAL_MAGIC, RT_CK_DB_INTERNAL, SIZEOF_NETWORK_DOUBLE, SIZEOF_NETWORK_LONG, and rt_bot_internal::vertices.

Here is the call graph for this function:

int rt_bot_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ B O T _ E X P O R T 5

Definition at line 939 of file g_bot.c.

References rt_bot_internal::bot_flags, bu_bitv_to_hex(), BU_CK_EXTERNAL, bu_malloc(), bu_plong(), bu_vls_init(), bu_vls_strlen(), bu_external::ext_buf, bu_external::ext_nbytes, rt_bot_internal::face_mode, htond(), ID_BOT, rt_db_internal::idb_ptr, rt_bot_internal::mode, rt_bot_internal::num_face_normals, rt_bot_internal::num_faces, rt_bot_internal::num_normals, rt_bot_internal::num_vertices, rt_bot_internal::orientation, RT_BOT_CK_MAGIC, RT_BOT_PLATE, RT_BOT_PLATE_NOCOS, RT_CK_DB_INTERNAL, SIZEOF_NETWORK_DOUBLE, SIZEOF_NETWORK_LONG, rt_bot_internal::vertices, void(), and VSCALE.

Here is the call graph for this function:

int rt_bot_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

Definition at line 1065 of file g_bot.c.

References bu_vls_strcat(), rt_db_internal::idb_ptr, index, rt_bot_internal::orientation, RT_BOT_CCW, RT_BOT_CK_MAGIC, RT_BOT_CW, RT_BOT_PLATE, RT_BOT_PLATE_NOCOS, RT_BOT_SOLID, RT_BOT_SURFACE, RT_BOT_UNORIENTED, RT_BOT_USE_NORMALS, V3INTCLAMPARGS, and VSCALE.

Here is the call graph for this function:

int rt_bot_tnurb struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct bn_tol tol
 

Definition at line 1204 of file g_bot.c.

int rt_bot_xform struct rt_db_internal op,
const fastf_t mat,
struct rt_db_internal ip,
const int  free,
struct db_i dbip
 

Definition at line 1210 of file g_bot.c.

References rt_bot_internal::bot_flags, bu_bitv_dup(), bu_calloc(), BU_GETSTRUCT, bu_malloc(), DB5_MAJORTYPE_BRLCAD, rt_bot_internal::face_mode, rt_bot_internal::face_normals, rt_bot_internal::faces, ID_BOT, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_bot_internal::magic, rt_bot_internal::mode, rt_bot_internal::normals, rt_bot_internal::num_faces, rt_bot_internal::num_normals, rt_bot_internal::num_vertices, rt_bot_internal::orientation, RT_BOT_CK_MAGIC, RT_BOT_INTERNAL_MAGIC, RT_CK_DB_INTERNAL, RT_INIT_DB_INTERNAL, rt_bot_internal::thickness, and rt_bot_internal::vertices.

Here is the call graph for this function:

int rt_bot_find_v_nearest_pt2 const struct rt_bot_internal bot,
const point_t  pt2,
const mat_t  mat
 

Definition at line 1290 of file g_bot.c.

References index, MAT4X3PNT, MAX_FASTF, rt_bot_internal::num_vertices, RT_BOT_CK_MAGIC, rt_bot_internal::vertices, X, and Y.

int rt_bot_edge_in_list const int  v1,
const int  v2,
const int  edge_list[],
const int  edge_count
 

Definition at line 1322 of file g_bot.c.

Referenced by rt_bot_find_e_nearest_pt2().

int rt_bot_find_e_nearest_pt2 int *  vert1,
int *  vert2,
const struct rt_bot_internal bot,
const point_t  pt2,
const mat_t  mat
 

This routine finds the edge closest to the 2D point "pt2", and returns the edge as two vertex indices (vert1 and vert2). These vertices are ordered (closest to pt2 is first)

Definition at line 1346 of file g_bot.c.

References bu_calloc(), rt_bot_internal::faces, MAX_FASTF, rt_bot_internal::num_faces, RT_BOT_CK_MAGIC, and rt_bot_edge_in_list().

Here is the call graph for this function:

int rt_bot_tclget Tcl_Interp interp,
const struct rt_db_internal intern,
const char *  attr
 

R T _ B O T _ T C L G E T

Examples - db get name fm get los facemode bit vector db get name fm# get los face mode of face # (center, append) db get name V get coords for all vertices db get name V# get coords for vertex # db get name F get vertex indices for all faces db get name F# get vertex indices for face # db get name f get list of coords for all faces db get name f# get list of 3 3tuple coords for face # db get name T get thickness for all faces db get name T# get thickness for face # db get name N get list of normals db get name N# get coords for normal # db get name fn get list indices into normal vectors for all faces db get name fn# get list indices into normal vectors for face # db get name nv get num_vertices db get name nt get num_faces db get name nn get num_normals db get name nfn get num_face_normals db get name mode get mode (surf, volume, plate, plane_nocos) db get name orient get orientation (no, rh, lh) db get name flags get BOT flags

Definition at line 1520 of file g_bot.c.

References bu_bitv_to_hex(), bu_vls_init(), bu_vls_printf(), bu_vls_strcat(), bu_vls_strcpy(), rt_db_internal::idb_ptr, NULL, RT_BOT_CK_MAGIC, RT_BOT_PLATE, RT_BOT_PLATE_NOCOS, RT_BOT_USE_FLOATS, RT_BOT_USE_NORMALS, status, and V3ARGS.

Here is the call graph for this function:

int rt_bot_tcladjust Tcl_Interp interp,
struct rt_db_internal intern,
int  argc,
char **  argv
 

R T _ B O T _ T C L A D J U S T

Examples - db adjust name fm set los facemode bit vector db adjust name fm# set los face mode of face # (center, append) db adjust name V set coords for all vertices db adjust name V# set coords for vertex # db adjust name F set vertex indices for all faces db adjust name F# set vertex indices for face # db adjust name T set thickness for all faces db adjust name T# set thickness for face # db adjust name N set list of normals db adjust name N# set coords for normal # db adjust name fn set list indices into normal vectors for all faces db adjust name fn# set list indices into normal vectors for face # db adjust name nn set num_normals db adjust name mode set mode (surf, volume, plate, plane_nocos) db adjust name orient set orientation (no, rh, lh) db adjust name flags set flags

Definition at line 1877 of file g_bot.c.

References BU_BITCLR, BU_BITSET, bu_calloc(), bu_free(), bu_hex_to_bitv(), bu_realloc(), rt_bot_internal::face_mode, rt_db_internal::idb_ptr, interp, rt_bot_internal::normals, NULL, rt_bot_internal::num_faces, rt_bot_internal::num_normals, RT_BOT_CK_MAGIC, RT_CK_DB_INTERNAL, Tcl_DecrRefCount, TCL_ERROR, TCL_STATIC, and VSET.

Here is the call graph for this function:

int rt_bot_tclform const struct rt_functab ftp,
Tcl_Interp interp
 

Definition at line 2458 of file g_bot.c.

References interp, NULL, RT_CK_FUNCTAB, and TCL_OK.

int rt_bot_vertex_fuse struct rt_bot_internal bot  ) 
 

This routine adjusts the vertex pointers in each face so that pointers to duplicate vertices end up pointing to the same vertex. The unused vertices are removed. Returns the number of vertices fused.

Definition at line 2480 of file g_bot.c.

References rt_bot_internal::faces, rt_bot_internal::num_faces, rt_bot_internal::num_vertices, RT_BOT_CK_MAGIC, VEQUAL, rt_bot_internal::vertices, and VMOVE.

int rt_bot_same_orientation const int *  a,
const int *  b
 

Definition at line 2517 of file g_bot.c.

int rt_bot_face_fuse struct rt_bot_internal bot  ) 
 

Definition at line 2539 of file g_bot.c.

References rt_bot_internal::faces, rt_bot_internal::num_faces, and RT_BOT_CK_MAGIC.

int rt_bot_condense struct rt_bot_internal bot  ) 
 

Get rid of unused verticies

Definition at line 2660 of file g_bot.c.

References bu_bomb(), bu_calloc(), bu_log(), rt_bot_internal::faces, rt_bot_internal::num_faces, rt_bot_internal::num_vertices, and RT_BOT_CK_MAGIC.

Here is the call graph for this function:

int find_closest_face fastf_t **  centers,
int *  piece,
int *  old_faces,
int  num_faces,
fastf_t vertices
 

Definition at line 2722 of file g_bot.c.

References bu_malloc(), NULL, VADD3, and VSCALE.

Here is the call graph for this function:

void Add_unique_verts int *  piece_verts,
int *  v
 

Definition at line 2778 of file g_bot.c.

References ptr.

int rt_bot_sort_faces struct rt_bot_internal bot,
int  tris_per_piece
 

This routine sorts the faces of the BOT such that when they are taken in groups of "tris_per_piece", each group (piece) will consist of adjacent faces

Definition at line 2803 of file g_bot.c.

References rt_bot_internal::bot_flags, bu_calloc(), bu_malloc(), rt_bot_internal::faces, NULL, rt_bot_internal::num_faces, and RT_BOT_CK_MAGIC.

Here is the call graph for this function:

int rt_bot_decimate struct rt_bot_internal bot,
fastf_t  max_chord_error,
fastf_t  max_normal_error,
fastf_t  min_edge_length
 

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

routine to reduce the number of triangles in a BOT by edges decimation max_chord_error is the maximum error distance allowed max_normal_error is the maximum change in surface normal allowed

This and associated routines maintain a list of edges and their "use counts" A "free edge" is one with a use count of 1, most edges have a use count of 2 When a use count reaches zero, the edge is removed from the list. The list is used to direct the edge decimation process and to avoid deforming the shape of a non-volume enclosing BOT by keeping track of use counts (and thereby free edges) If a free edge would be moved, that deciamtion is not performed.

Definition at line 3491 of file g_bot.c.

References bu_malloc(), rt_bot_internal::faces, M_PI, rt_bot_internal::num_faces, RT_BOT_CK_MAGIC, and SMALL_FASTF.

Referenced by wdb_bot_decimate_cmd().

Here is the call graph for this function:

int rt_smooth_bot struct rt_bot_internal bot,
char *  bot_name,
struct db_i dbip,
fastf_t  norm_tol_angle
 

Definition at line 3723 of file g_bot.c.

References application::a_ray, application::a_rt_i, application::a_uptr, application::a_user, rt_bot_internal::bot_flags, bu_calloc(), bu_free(), bu_log(), rt_bot_internal::face_normals, rt_bot_internal::faces, INFINITY, M_PI, rt_bot_internal::mode, rt_bot_internal::normals, NULL, rt_bot_internal::num_face_normals, rt_bot_internal::num_faces, rt_bot_internal::num_normals, rt_bot_internal::orientation, xray::r_dir, xray::r_min, xray::r_pt, RT_APPLICATION_INIT, RT_BOT_CK_MAGIC, RT_BOT_USE_NORMALS, rt_free_rti(), rt_gettree(), rt_in_rpp(), rt_new_rti(), rt_prep(), rt_shootray(), SQRT_SMALL_FASTF, VADD3, VCROSS, rt_bot_internal::vertices, VJOIN1, VSCALE, VSUB2, VUNITIZE, X, Y, and Z.

Referenced by wdb_smooth_bot_cmd().

Here is the call graph for this function:

int XGLUE rt_botface_w_normals_  ,
TRI_TYPE 
 

R T _ B O T F A C E

This function is called with pointers to 3 points, and is used to prepare BOT faces. ap, bp, cp point to vect_t points.

Return - 0 if the 3 points didn't form a plane (eg, colinear, etc). # pts (3) if a valid plane resulted.

Definition at line 58 of file g_bot_include.c.

void XGLUE rt_bot_prep_pieces_  ,
TRI_TYPE 
 

Definition at line 131 of file g_bot_include.c.

int XGLUE rt_bot_prep_  ,
TRI_TYPE 
 

R T _ B O T _ P R E P

Given a pointer to a GED database record, and a transformation matrix, determine if this is a valid BOT, and if so, precompute various terms of the formula.

Returns - 0 BOT is OK !0 Error in description

Implicit return - A struct bot_specific is created, and it's address is stored in stp->st_specific for use by bot_shot().

Definition at line 246 of file g_bot_include.c.

References bot_specific::bot_facelist, bot_specific::bot_facemode, rt_bot_internal::bot_flags, bot_specific::bot_flags, bot_specific::bot_mode, bot_specific::bot_orientation, bot_specific::bot_thickness, bu_bitv_dup(), bu_calloc(), BU_GETSTRUCT, rt_bot_internal::face_mode, rt_bot_internal::face_normals, rt_bot_internal::faces, index, LOCAL, MAX_FASTF, rt_bot_internal::mode, NULL, rt_bot_internal::num_face_normals, rt_bot_internal::num_faces, rt_bot_internal::num_normals, rt_bot_internal::orientation, RT_BOT_CK_MAGIC, RT_BOT_HAS_SURFACE_NORMALS, rt_bot_minpieces, RT_BOT_USE_NORMALS, rt_i::rti_tol, soltab::st_max, soltab::st_min, soltab::st_specific, rt_bot_internal::thickness, TRI_TYPE, rt_bot_internal::vertices, VMINMAX, VMOVE, VREVERSE, VSETALL, and XGLUE.

Here is the call graph for this function:

HIDDEN int XGLUE rt_bot_makesegs_  ,
TRI_TYPE 
 

R T _ B O T _ M A K E S E G S

Given an array of hits, make segments out of them. Exactly how this is to be done depends on the mode of the BoT.

Definition at line 566 of file g_bot_include.c.

int XGLUE rt_bot_shot_  ,
TRI_TYPE 
 

R T _ B O T _ S H O T

Intersect a ray with a bot. If an intersection occurs, a struct seg will be acquired and filled in.

Notes for rt_bot_norm(): hit_private contains pointer to the tri_specific structure hit_vpriv[X] contains dot product of ray direction and unit normal from tri_specific

Returns - 0 MISS >0 HIT

Definition at line 953 of file g_bot_include.c.

int XGLUE rt_bot_piece_shot_  ,
TRI_TYPE 
 

R T _ B O T _ P I E C E _ S H O T

Intersect a ray with a list of "pieces" of a BoT.

This routine may be invoked many times for a single ray, as the ray traverses from one space partitioning cell to the next.

Plate-mode (2 hit) segments will be returned immediately in seghead.

Generally the hits are stashed between invocations in psp.

Definition at line 1053 of file g_bot_include.c.

void XGLUE rt_bot_norm_  ,
TRI_TYPE 
 

R T _ B O T _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 1207 of file g_bot_include.c.

References bot_specific::bot_flags, bot_specific::bot_mode, hit::hit_dist, hit::hit_normal, hit::hit_point, hit::hit_private, hit::hit_vpriv, ONE_OVER_SCALE, xray::r_dir, xray::r_pt, RT_BOT_HAS_SURFACE_NORMALS, RT_BOT_PLATE, RT_BOT_PLATE_NOCOS, RT_BOT_USE_NORMALS, TRI_TYPE, VCROSS, VDOT, VJOIN1, VMOVE, VREVERSE, VSETALL, VUNITIZE, X, XGLUE, Y, and Z.

void XGLUE rt_bot_free_  ,
TRI_TYPE 
 

R T _ B O T _ F R E E

Definition at line 1271 of file g_bot_include.c.

References bot_specific::bot_facearray, bot_specific::bot_facelist, bot_specific::bot_facemode, bot_specific::bot_thickness, bu_free(), NULL, ptr, TRI_TYPE, and XGLUE.

Here is the call graph for this function:

int rt_cline_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ C L I N E _ P R E P

Given a pointer to a GED database record, determine if this is a valid cline solid, and if so, precompute various terms of the formula.

Returns - 0 cline is OK !0 Error in description

Implicit return - A struct cline_specific is created, and it's address is stored in stp->st_specific for use by rt_cline_shot().

Definition at line 96 of file g_cline.c.

References BU_GETSTRUCT, cline_specific::h, rt_cline_internal::h, cline_specific::height, rt_db_internal::idb_ptr, MAGNITUDE, MAX_FASTF, rt_cline_internal::radius, cline_specific::radius, RT_CK_DB_INTERNAL, RT_CLINE_CK_MAGIC, soltab::st_aradius, soltab::st_bradius, soltab::st_max, soltab::st_min, soltab::st_specific, rt_cline_internal::thickness, cline_specific::thickness, top(), rt_cline_internal::v, cline_specific::V, VADD2, VMINMAX, VMOVE, VREVERSE, VSETALL, VSUB2, and VUNITIZE.

Here is the call graph for this function:

void rt_cline_print register const struct soltab stp  ) 
 

R T _ C L I N E _ P R I N T

Definition at line 147 of file g_cline.c.

References bu_log(), cline_specific::h, cline_specific::height, cline_specific::radius, cline_specific::thickness, cline_specific::V, and VPRINT.

Here is the call graph for this function:

int rt_cline_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ C L I N E _ S H O T

Intersect a ray with a cline mode solid. If an intersection occurs, at least one struct seg will be acquired and filled in.

Returns - 0 MISS >0 HIT

Definition at line 174 of file g_cline.c.

References application::a_resource, bn_distsq_line3_line3(), BU_LIST_INIT, BU_LIST_INSERT, cline_specific::h, cline_specific::height, seg::l, NEAR_ZERO, cline_specific::radius, RT_DOT_TOL, RT_GET_SEG, soltab::st_specific, cline_specific::thickness, cline_specific::V, VADD2, VDOT, VJOIN2, VMOVE, void(), VREVERSE, and VSUB2.

Here is the call graph for this function:

void rt_cline_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ C L I N E _ V S H O T

Vectorized version.

Definition at line 358 of file g_cline.c.

References rt_vstub().

Here is the call graph for this function:

void rt_cline_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ C L I N E _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 374 of file g_cline.c.

References bu_bomb(), bu_log(), MAGNITUDE, V3ARGS, VCROSS, VDOT, VJOIN1, VREVERSE, and VUNITIZE.

Here is the call graph for this function:

void rt_cline_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ C L I N E _ C U R V E

Return the curvature of the cline.

Definition at line 408 of file g_cline.c.

References bn_vec_ortho().

Here is the call graph for this function:

void rt_cline_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ C L I N E_ U V

For a hit on the surface of an cline, return the (u,v) coordinates of the hit point, 0 <= u,v <= 1.

Definition at line 425 of file g_cline.c.

void rt_cline_free register struct soltab stp  ) 
 

R T _ C L I N E _ F R E E

Definition at line 437 of file g_cline.c.

References bu_free().

Here is the call graph for this function:

int rt_cline_class const struct soltab stp,
const fastf_t min,
const fastf_t max,
const struct bn_tol tol
 

R T _ C L I N E _ C L A S S

Definition at line 449 of file g_cline.c.

int rt_cline_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ C L I N E _ P L O T

Definition at line 459 of file g_cline.c.

References bn_vec_ortho(), BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, ELEMENTS_PER_VECT, rt_cline_internal::h, rt_db_internal::idb_ptr, LOCAL, rt_cline_internal::radius, RT_ADD_VLIST, RT_CK_DB_INTERNAL, RT_CLINE_CK_MAGIC, rt_ell_16pts(), top(), rt_cline_internal::v, VADD2, VCROSS, VSCALE, and VUNITIZE.

Here is the call graph for this function:

int rt_cline_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ C L I N E _ T E S S

Returns - -1 failure 0 OK. *r points to nmgregion that holds this tessellation.

Definition at line 550 of file g_cline.c.

References rt_tess_tol::abs, bn_halfpi, bn_vec_ortho(), bu_calloc(), BU_LIST_FIRST, rt_cline_internal::h, rt_db_internal::idb_ptr, int, nmg_mrsv(), rt_tess_tol::norm, NULL, cline_vert::pt, rt_cline_internal::radius, rt_tess_tol::rel, RT_CK_DB_INTERNAL, RT_CLINE_CK_MAGIC, rt_cline_internal::thickness, top(), rt_cline_internal::v, VADD2, VCROSS, VJOIN2, and VUNITIZE.

Here is the call graph for this function:

int rt_cline_import struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ C L I N E _ I M P O R T

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

Definition at line 842 of file g_cline.c.

References BU_CK_EXTERNAL, bu_log(), bu_malloc(), record::cli, record::cline_rec::cli_h, record::cline_rec::cli_radius, record::cline_rec::cli_thick, record::cline_rec::cli_V, DB5_MAJORTYPE_BRLCAD, DBID_CLINE, bu_external::ext_buf, rt_cline_internal::h, ID_CLINE, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, LOCAL, rt_cline_internal::magic, MAT4X3PNT, MAT4X3VEC, ntohd(), rt_cline_internal::radius, RT_CK_DB_INTERNAL, RT_CLINE_INTERNAL_MAGIC, rt_cline_internal::thickness, record::u_id, and rt_cline_internal::v.

Here is the call graph for this function:

int rt_cline_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ C L I N E _ E X P O R T

The name is added by the caller, in the usual place.

Definition at line 882 of file g_cline.c.

References bu_calloc(), BU_CK_EXTERNAL, record::cli, record::cline_rec::cli_h, record::cline_rec::cli_id, record::cline_rec::cli_radius, record::cline_rec::cli_thick, record::cline_rec::cli_V, DBID_CLINE, bu_external::ext_buf, bu_external::ext_nbytes, rt_cline_internal::h, htond(), ID_CLINE, ID_SOLID, rt_db_internal::idb_ptr, rt_cline_internal::radius, RT_CK_DB_INTERNAL, RT_CLINE_CK_MAGIC, record::s, record::solidrec::s_id, rt_cline_internal::thickness, rt_cline_internal::v, and VSCALE.

Here is the call graph for this function:

int rt_cline_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ C L I N E _ I M P O R T 5

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

Definition at line 921 of file g_cline.c.

References BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_malloc(), DB5_MAJORTYPE_BRLCAD, bu_external::ext_buf, bu_external::ext_nbytes, rt_cline_internal::h, ID_CLINE, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_cline_internal::magic, MAT4X3PNT, MAT4X3VEC, ntohd(), rt_cline_internal::radius, RT_CK_DB_INTERNAL, RT_CLINE_INTERNAL_MAGIC, SIZEOF_NETWORK_DOUBLE, rt_cline_internal::thickness, and rt_cline_internal::v.

Here is the call graph for this function:

int rt_cline_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ C L I N E _ E X P O R T 5

The name is added by the caller, in the usual place.

Definition at line 956 of file g_cline.c.

References BU_CK_EXTERNAL, bu_malloc(), bu_external::ext_buf, bu_external::ext_nbytes, rt_cline_internal::h, htond(), ID_CLINE, rt_db_internal::idb_ptr, rt_cline_internal::radius, RT_CK_DB_INTERNAL, RT_CLINE_CK_MAGIC, SIZEOF_NETWORK_DOUBLE, rt_cline_internal::thickness, rt_cline_internal::v, and VSCALE.

Here is the call graph for this function:

int rt_cline_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 989 of file g_cline.c.

References bu_vls_strcat(), rt_db_internal::idb_ptr, INTCLAMP, RT_CLINE_CK_MAGIC, V3INTCLAMPARGS, and VSCALE.

Here is the call graph for this function:

void rt_cline_ifree struct rt_db_internal ip  ) 
 

R T _ C L I N E _ I F R E E

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

Definition at line 1024 of file g_cline.c.

References bu_free(), GENPTR_NULL, rt_db_internal::idb_ptr, rt_cline_internal::magic, RT_CK_DB_INTERNAL, and RT_CLINE_CK_MAGIC.

Here is the call graph for this function:

int rt_cline_tnurb struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct bn_tol tol
 

Definition at line 1038 of file g_cline.c.

int rt_cline_tclget Tcl_Interp interp,
const struct rt_db_internal intern,
const char *  attr
 

Definition at line 1044 of file g_cline.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bu_vls_strcat(), bu_vls_strcpy(), rt_db_internal::idb_ptr, interp, NULL, RT_CLINE_CK_MAGIC, TCL_ERROR, TCL_OK, and V3ARGS.

Here is the call graph for this function:

int rt_cline_tcladjust Tcl_Interp interp,
struct rt_db_internal intern,
int  argc,
char **  argv
 

Definition at line 1086 of file g_cline.c.

References atof(), rt_cline_internal::h, rt_db_internal::idb_ptr, interp, rt_cline_internal::radius, RT_CK_DB_INTERNAL, RT_CLINE_CK_MAGIC, TCL_ERROR, tcl_list_to_fastf_array(), TCL_OK, TCL_STATIC, rt_cline_internal::thickness, and rt_cline_internal::v.

Here is the call graph for this function:

int rt_cline_tclform const struct rt_functab ftp,
Tcl_Interp interp
 

Definition at line 1134 of file g_cline.c.

References interp, NULL, RT_CK_FUNCTAB, and TCL_OK.

int rt_retrieve_binunif struct rt_db_internal intern,
const struct db_i dbip,
const char *  name
 

void rt_binunif_ifree struct rt_db_internal ip  ) 
 

R T _ B I N U N I F _ I F R E E

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

Definition at line 530 of file db5_bin.c.

References bu_free(), GENPTR_NULL, rt_db_internal::idb_ptr, RT_CK_BINUNIF, RT_CK_DB_INTERNAL, rt_binunif_internal::u, and rt_binunif_internal::uint8.

Here is the call graph for this function:

unsigned short dsp_val struct rt_dsp_internal dsp_i,
unsigned  x,
unsigned  y,
char *  file,
int  line
 

Definition at line 148 of file g_dsp.c.

References bu_bomb(), bu_log(), rt_dsp_internal::dsp_buf, rt_dsp_internal::dsp_xcnt, rt_dsp_internal::dsp_ycnt, and RT_DSP_CK_MAGIC.

Here is the call graph for this function:

void rt_dsp_print register const struct soltab stp  ) 
 

R T _ D S P _ P R I N T

Definition at line 619 of file g_dsp.c.

References BU_CK_VLS, bu_log(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), BU_VLS_IS_INITIALIZED, bu_vls_printf(), and RT_DSP_CK_MAGIC.

Here is the call graph for this function:

int rt_dsp_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ D S P _ P R E P

Given a pointer to a GED database record, and a transformation matrix, determine if this is a valid DSP, and if so, precompute various terms of the formula.

Returns - 0 DSP is OK !0 Error in description

Implicit return - A struct dsp_specific is created, and it's address is stored in stp->st_specific for use by dsp_shot().

Definition at line 911 of file g_dsp.c.

References BBOX_PT, BU_CK_MAPPED_FILE, BU_CK_VLS, BU_GETSTRUCT, bu_log(), bu_semaphore_acquire(), bu_semaphore_release(), rt_dsp_internal::dsp_bip, rt_dsp_internal::dsp_datasrc, dsp_specific::dsp_i, rt_dsp_internal::dsp_mp, rt_dsp_internal::dsp_name, dsp_specific::dsp_pl_dist, rt_dsp_internal::dsp_xcnt, rt_dsp_internal::dsp_ycnt, rt_db_internal::idb_ptr, MAGNITUDE, RT_CK_BINUNIF, RT_CK_DB_INTERNAL, RT_DSP_CK_MAGIC, RT_DSP_SRC_FILE, RT_DSP_SRC_OBJ, RT_DSP_SRC_V4_FILE, RT_G_DEBUG, RT_SEM_MODEL, soltab::st_aradius, soltab::st_bradius, soltab::st_center, soltab::st_max, soltab::st_min, soltab::st_specific, bu_mapped_file::uses, V3ARGS, VADD2SCALE, VSUB2SCALE, X, XMAX, XMIN, dsp_specific::xsiz, Y, YMAX, YMIN, dsp_specific::ysiz, Z, ZMAX, ZMID, and ZMIN.

Here is the call graph for this function:

int dsp_in_rpp struct isect_stuff isect,
register const fastf_t min,
register const fastf_t max
 

D S P _ I N _ R P P

Compute the intersections of a ray with a rectangular parallelpiped (RPP) that has faces parallel to the coordinate planes

The algorithm here was developed by Gary Kuehl for GIFT. A good description of the approach used can be found in "??" by XYZZY and Barsky, ACM Transactions on Graphics, Vol 3 No 1, January 1984.

Note - The computation of entry and exit distance is mandatory, as the final test catches the majority of misses.

Note - A hit is returned if the intersect is behind the start point.

Returns - 0 if ray does not hit RPP, !0 if ray hits RPP.

Implicit return - rp->r_min = dist from start of ray to point at which ray ENTERS solid rp->r_max = dist from start of ray to point at which ray LEAVES solid isect->dmin isect->dmax

Definition at line 2012 of file g_dsp.c.

References isect_stuff::dmax, isect_stuff::dmin, INFINITY, isect_stuff::inv_dir, isect_stuff::r, xray::r_max, xray::r_min, xray::r_pt, XMAX, XMIN, YMAX, YMIN, ZMAX, and ZMIN.

int rt_dsp_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ D S P _ S H O T

Intersect a ray with a dsp. If an intersection occurs, a struct seg will be acquired and filled in.

Returns - 0 MISS >0 HIT

Definition at line 2506 of file g_dsp.c.

References application::a_rt_i, application::a_x, application::a_y, isect_stuff::ap, bn_mat_print(), bu_bomb(), BU_CK_MAPPED_FILE, BU_CK_VLS, BU_LIST_APPEND_LIST, BU_LIST_FOR, BU_LIST_INIT, BU_LIST_IS_EMPTY, bu_log(), bn_tol::dist, isect_stuff::dsp, H, isect_stuff::inv_dir, seg::l, dsp_specific::layer, dsp_specific::layers, MAGNITUDE, MAT4X3PNT, MAT4X3VEC, NEAR_ZERO, isect_stuff::num_segs, isect_stuff::r, xray::r_dir, xray::r_pt, RT_CK_BINUNIF, RT_CK_DB_INTERNAL, RT_DSP_CK_MAGIC, RT_DSP_SRC_FILE, RT_DSP_SRC_OBJ, RT_DSP_SRC_V4_FILE, RT_G_DEBUG, rt_i::rti_tol, isect_stuff::seglist, soltab::st_specific, isect_stuff::stp, isect_stuff::tol, V3ARGS, VDOT, VINVDIR, VMOVE, void(), VSCALE, VUNITIZE, X, and Y.

Here is the call graph for this function:

void rt_dsp_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ D S P _ V S H O T

Vectorized version.

Definition at line 2657 of file g_dsp.c.

References bu_log(), RT_G_DEBUG, rt_vstub(), and void().

Here is the call graph for this function:

void rt_dsp_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ D S P _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 2777 of file g_dsp.c.

References bu_bomb(), BU_CK_MAPPED_FILE, BU_CK_VLS, bu_fopen_uniq(), bu_log(), BU_SEM_SYSCALL, bu_semaphore_acquire(), bu_semaphore_release(), rt_dsp_internal::dsp_bip, rt_dsp_internal::dsp_datasrc, dsp_specific::dsp_i, rt_dsp_internal::dsp_mp, rt_dsp_internal::dsp_mtos, rt_dsp_internal::dsp_name, rt_dsp_internal::dsp_smooth, rt_dsp_internal::dsp_stom, rt_db_internal::idb_ptr, MAGNITUDE, MAT4X3PNT, MAT4X3VEC, pdv_3line(), pl_color(), RT_CK_BINUNIF, RT_CK_DB_INTERNAL, RT_DSP_CK_MAGIC, RT_DSP_SRC_FILE, RT_DSP_SRC_OBJ, RT_DSP_SRC_V4_FILE, RT_G_DEBUG, SMOOTHSTEP, soltab::st_specific, V3ARGS, VADD2, VCROSS, VDOT, VJOIN1, VMOVE, VPRINT, VSCALE, VSET, VUNITIZE, X, XMIN, Y, Z, and ZTOP.

Here is the call graph for this function:

void rt_dsp_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ D S P _ C U R V E

Return the curvature of the dsp.

Definition at line 2957 of file g_dsp.c.

References bn_vec_ortho(), bu_log(), and RT_G_DEBUG.

Here is the call graph for this function:

void rt_dsp_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ D S P _ U V

For a hit on the surface of a dsp, return the (u,v) coordinates of the hit point, 0 <= u,v <= 1. u = azimuth v = elevation

Definition at line 2978 of file g_dsp.c.

References application::a_diverge, application::a_ray, application::a_rbeam, bu_log(), CLAMP, dsp_specific::dsp_i, rt_dsp_internal::dsp_mtos, rt_dsp_internal::dsp_stom, MAGNITUDE, MAT4X3PNT, MAT4X3VEC, NEAR_ZERO, xray::r_dir, RT_G_DEBUG, SMALL_FASTF, soltab::st_specific, VDOT, VJOIN1, VMOVE, VREVERSE, VSCALE, VSET, VUNITIZE, X, XSIZ, Y, and YSIZ.

Here is the call graph for this function:

void rt_dsp_free register struct soltab stp  ) 
 

R T _ D S P _ F R E E

Definition at line 3070 of file g_dsp.c.

References BU_CK_MAPPED_FILE, bu_close_mapped_file(), bu_free(), bu_log(), rt_dsp_internal::dsp_buf, rt_dsp_internal::dsp_datasrc, dsp_specific::dsp_i, rt_dsp_internal::dsp_mp, RT_DSP_SRC_FILE, RT_DSP_SRC_OBJ, RT_DSP_SRC_V4_FILE, and RT_G_DEBUG.

Here is the call graph for this function:

int rt_dsp_class void   ) 
 

R T _ D S P _ C L A S S

Definition at line 3099 of file g_dsp.c.

References bu_log(), and RT_G_DEBUG.

Here is the call graph for this function:

int rt_dsp_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ D S P _ P L O T

Definition at line 3111 of file g_dsp.c.

References BU_CK_MAPPED_FILE, bu_log(), DRAW, DSP, rt_dsp_internal::dsp_bip, rt_dsp_internal::dsp_datasrc, rt_dsp_internal::dsp_mp, rt_dsp_internal::dsp_xcnt, rt_dsp_internal::dsp_ycnt, rt_db_internal::idb_ptr, MOVE, RT_CK_BINUNIF, RT_CK_DB_INTERNAL, RT_DSP_CK_MAGIC, RT_DSP_SRC_FILE, RT_DSP_SRC_OBJ, RT_DSP_SRC_V4_FILE, RT_G_DEBUG, VSET, VSETALL, X, Y, and Z.

Here is the call graph for this function:

int rt_dsp_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ D S P _ T E S S

Returns - -1 failure 0 OK. *r points to nmgregion that holds this tessellation.

Definition at line 3366 of file g_dsp.c.

References bu_log(), rt_db_internal::idb_ptr, LOCAL, RT_CK_DB_INTERNAL, RT_DSP_CK_MAGIC, and RT_G_DEBUG.

Here is the call graph for this function:

int rt_dsp_import struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ D S P _ I M P O R T

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

Definition at line 3579 of file g_dsp.c.

References BU_CK_EXTERNAL, bu_log(), bu_malloc(), bu_struct_parse(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), BU_VLS_IS_INITIALIZED, bu_vls_strcpy(), bu_vls_struct_print(), bu_vls_trunc(), DB5_MAJORTYPE_BRLCAD, DBID_STRSOL, DSP_CUT_DIR_ADAPT, rt_dsp_internal::dsp_cuttype, rt_dsp_internal::dsp_mtos, rt_dsp_internal::dsp_smooth, rt_dsp_internal::dsp_stom, rt_dsp_internal::dsp_xcnt, rt_dsp_internal::dsp_ycnt, bu_external::ext_buf, ID_DSP, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, IMPORT_FAIL, LOCAL, rt_dsp_internal::magic, MAT_IDN, RT_CK_BINUNIF, RT_CK_DB_INTERNAL, RT_DSP_INTERNAL_MAGIC, rt_dsp_parse, rt_dsp_ptab, RT_G_DEBUG, record::ss, record::strsol::ss_args, and record::u_id.

Here is the call graph for this function:

int rt_dsp_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ D S P _ E X P O R T

The name is added by the caller, in the usual place.

Definition at line 3673 of file g_dsp.c.

References bu_calloc(), BU_CK_EXTERNAL, BU_CK_VLS, bu_log(), bu_vls_addr(), bu_vls_free(), bu_vls_init(), BU_VLS_IS_INITIALIZED, bu_vls_struct_print(), DB_SS_LEN, DB_SS_NGRAN, DBID_STRSOL, rt_dsp_internal::dsp_name, rt_dsp_internal::dsp_stom, bu_external::ext_buf, bu_external::ext_nbytes, ID_DSP, rt_db_internal::idb_ptr, NAMESIZE, RT_CK_DB_INTERNAL, RT_DSP_CK_MAGIC, rt_dsp_ptab, RT_G_DEBUG, record::ss, record::strsol::ss_args, record::strsol::ss_id, and record::strsol::ss_keyword.

Here is the call graph for this function:

int rt_dsp_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip,
struct resource resp,
const int  minor_type
 

R T _ D S P _ I M P O R T 5

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

Definition at line 3726 of file g_dsp.c.

References bn_mat_inv(), BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_glong(), bu_gshort(), bu_log(), bu_malloc(), bu_vls_init(), bu_vls_strncpy(), DB5_MAJORTYPE_BRLCAD, DSP_CUT_DIR_ADAPT, DSP_CUT_DIR_llUR, DSP_CUT_DIR_ULlr, bu_external::ext_buf, bu_external::ext_nbytes, ID_DSP, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, IMPORT_FAIL, ntohd(), RT_CK_DB_INTERNAL, RT_DSP_INTERNAL_MAGIC, RT_DSP_SRC_FILE, RT_DSP_SRC_OBJ, RT_DSP_SRC_V4_FILE, RT_G_DEBUG, SIZEOF_NETWORK_DOUBLE, SIZEOF_NETWORK_LONG, and SIZEOF_NETWORK_SHORT.

Here is the call graph for this function:

int rt_dsp_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip,
struct resource resp,
const int  minor_type
 

R T _ D S P _ E X P O R T 5

The name is added by the caller, in the usual place.

Definition at line 3827 of file g_dsp.c.

References BU_CK_EXTERNAL, bu_log(), bu_malloc(), bu_plong(), bu_pshort(), bu_vls_addr(), bu_vls_strlen(), DSP_CUT_DIR_ADAPT, DSP_CUT_DIR_llUR, DSP_CUT_DIR_ULlr, rt_dsp_internal::dsp_cuttype, rt_dsp_internal::dsp_datasrc, rt_dsp_internal::dsp_name, rt_dsp_internal::dsp_smooth, rt_dsp_internal::dsp_stom, rt_dsp_internal::dsp_xcnt, rt_dsp_internal::dsp_ycnt, ELEMENTS_PER_MAT, bu_external::ext_buf, bu_external::ext_nbytes, htond(), ID_DSP, rt_db_internal::idb_ptr, RT_CK_DB_INTERNAL, RT_DSP_CK_MAGIC, RT_DSP_SRC_FILE, RT_DSP_SRC_OBJ, RT_DSP_SRC_V4_FILE, RT_G_DEBUG, SIZEOF_NETWORK_DOUBLE, SIZEOF_NETWORK_LONG, and SIZEOF_NETWORK_SHORT.

Here is the call graph for this function:

int rt_dsp_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local,
struct resource resp,
struct db_i db_ip
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 3918 of file g_dsp.c.

References bu_log(), bu_vls_free(), bu_vls_init(), BU_VLS_IS_INITIALIZED, bu_vls_vlscat(), rt_db_internal::idb_ptr, RT_CK_DBI, RT_DSP_CK_MAGIC, and RT_G_DEBUG.

Here is the call graph for this function:

void rt_dsp_ifree struct rt_db_internal ip  ) 
 

R T _ D S P _ I F R E E

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

Definition at line 3960 of file g_dsp.c.

References BU_CK_MAPPED_FILE, bu_close_mapped_file(), bu_free(), bu_log(), bu_vls_free(), BU_VLS_IS_INITIALIZED, rt_dsp_internal::dsp_bip, rt_dsp_internal::dsp_mp, rt_dsp_internal::dsp_name, GENPTR_NULL, rt_db_internal::idb_ptr, rt_dsp_internal::magic, rt_binunif_ifree(), RT_CK_DB_INTERNAL, RT_DSP_CK_MAGIC, and RT_G_DEBUG.

Here is the call graph for this function:

int rt_dsp_tclget Tcl_Interp interp,
const struct rt_db_internal intern,
const char *  attr
 

R T _ P A R S E T A B _ T C L G E T

This is the generic routine to be listed in rt_functab[].ft_tclget for those solid types which are fully described by their ft_parsetab entry.

'attr' is specified to retrieve only one attribute, rather than all. Example: "db get ell.s B" to get only the B vector.

Definition at line 4063 of file g_dsp.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bu_vls_struct_item(), bu_vls_struct_item_named(), bu_vls_trunc(), rt_dsp_internal::dsp_datasrc, fake_dsp_printab, rt_db_internal::idb_ptr, interp, RT_CK_DB_INTERNAL, rt_dsp_ptab, RT_DSP_SRC_FILE, RT_DSP_SRC_OBJ, RT_DSP_SRC_V4_FILE, bu_structparse::sp_name, status, TCL_ERROR, and TCL_OK.

Here is the call graph for this function:

int rt_dsp_tcladjust Tcl_Interp interp,
struct rt_db_internal intern,
int  argc,
char **  argv
 

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

For those solids entirely defined by their parsetab. Invoked via rt_functab[].ft_tcladjust()

Definition at line 4145 of file g_dsp.c.

References BU_CK_VLS, bu_structparse_argv(), rt_dsp_internal::dsp_datasrc, rt_dsp_internal::dsp_name, fake_dsp_printab, rt_db_internal::idb_ptr, interp, RT_CK_DB_INTERNAL, RT_DSP_CK_MAGIC, rt_dsp_ptab, RT_DSP_SRC_FILE, RT_DSP_SRC_OBJ, RT_DSP_SRC_V4_FILE, and TCL_ERROR.

Here is the call graph for this function:

void rt_dsp_make const struct rt_functab ftp,
struct rt_db_internal intern,
double  diameter
 

Definition at line 4172 of file g_dsp.c.

References BU_ASSERT, bu_calloc(), bu_vls_init(), bu_vls_strcpy(), DB5_MAJORTYPE_BRLCAD, DSP_CUT_DIR_ADAPT, rt_dsp_internal::dsp_cuttype, rt_dsp_internal::dsp_datasrc, rt_dsp_internal::dsp_mtos, rt_dsp_internal::dsp_name, rt_dsp_internal::dsp_stom, ID_DSP, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_dsp_internal::magic, MAT_IDN, RT_DSP_INTERNAL_MAGIC, and RT_DSP_SRC_FILE.

Here is the call graph for this function:

int project_pt point_t  out,
int  A[3],
int  B[3],
int  C[3],
point_t  pt
 

Definition at line 4316 of file g_dsp.c.

References bu_log(), CLAMP, RT_G_DEBUG, SMALL_FASTF, V3ARGS, VJOIN2, VSUB2, X, and Y.

Referenced by dsp_pos().

Here is the call graph for this function:

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:

int rt_ebm_dda struct xray rp,
struct soltab stp,
struct application ap,
struct seg seghead
 

Referenced by rt_ebm_shot().

int rt_seg_planeclip struct seg out_hd,
struct seg in_hd,
vect_t  out_norm,
fastf_t  in,
fastf_t  out,
struct xray rp,
struct application ap
 

Referenced by rt_ebm_shot().

void rt_ebm_plate int  x1,
int  y1,
int  x2,
int  y2,
double  t,
mat_t  mat,
struct bu_list vhead
 

Referenced by rt_ebm_plot().

int rt_seg_planeclip struct seg out_hd,
struct seg in_hd,
fastf_t out_norm,
fastf_t  in,
fastf_t  out,
struct xray rp,
struct application ap
 

R T _ S E G _ P L A N E C L I P

Take a segment chain, in sorted order (ascending hit_dist), and clip to the range (in, out) along the normal "out_norm". For the particular ray "rp", find the parametric distances: kmin is the minimum permissible parameter, "in" units away kmax is the maximum permissible parameter, "out" units away

Returns - 1 OK: trimmed segment chain, still in sorted order 0 ERROR

Definition at line 154 of file g_ebm.c.

References application::a_resource, BU_LIST_DEQUEUE, BU_LIST_INSERT, BU_LIST_WHILE, bu_log(), DEBUG_EBM, hit::hit_dist, hit::hit_surfno, INFINITY, seg::l, NEAR_ZERO, NORM_ZNEG, NORM_ZPOS, xray::r_dir, xray::r_pt, RT_FREE_SEG, RT_G_DEBUG, seg::seg_in, seg::seg_out, SQRT_SMALL_FASTF, VDOT, and VREVERSE.

Here is the call graph for this function:

int rt_ebm_dda register struct xray rp,
struct soltab stp,
struct application ap,
struct seg seghead
 

R T _ E B M _ D D A

Step through the 2-D array, in local coordinates ("ideal space").

Definition at line 239 of file g_ebm.c.

References application::a_resource, BIT, BU_LIST_INSERT, BU_LIST_IS_EMPTY, BU_LIST_LAST, bu_log(), DEBUG_EBM, rt_ebm_specific::ebm_cellsize, rt_ebm_specific::ebm_i, rt_ebm_specific::ebm_large, rt_ebm_specific::ebm_origin, hit::hit_dist, hit::hit_surfno, hit::hit_vpriv, INFINITY, seg::l, NEAR_ZERO, NORM_ZNEG, RT_G_DEBUG, RT_GET_SEG, rt_in_rpp(), seg::seg_in, seg::seg_out, seg::seg_stp, SQRT_SMALL_FASTF, soltab::st_specific, tail, val, VJOIN1, VPRINT, VSETALL, X, rt_ebm_internal::xdim, Y, rt_ebm_internal::ydim, and Z.

Here is the call graph for this function:

int rt_ebm_import struct rt_db_internal ip,
const struct bu_external ep,
const fastf_t mat,
const struct db_i dbip
 

R T _ E B M _ I M P O R T

Read in the information from the string solid record. Then, as a service to the application, read in the bitmap and set up some of the associated internal variables.

Definition at line 546 of file g_ebm.c.

References bu_mapped_file::apbuf, bu_mapped_file::apbuflen, bcopy, BIT, BIT_XWIDEN, BIT_YWIDEN, bn_mat_mul(), bu_calloc(), BU_CK_EXTERNAL, bu_free(), bu_log(), bu_open_mapped_file_with_path(), bu_semaphore_acquire(), bu_semaphore_release(), bu_struct_parse(), bu_struct_print(), bu_vls_free(), bu_vls_init(), bu_vls_strcpy(), bu_mapped_file::buf, bu_mapped_file::buflen, DB5_MAJORTYPE_BRLCAD, db_i::dbi_filepath, DBID_STRSOL, bu_external::ext_buf, ID_EBM, ID_NULL, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_ebm_internal::magic, rt_ebm_internal::mat, MAT_COPY, MAT_IDN, rt_ebm_internal::mp, NULL, RT_CK_DB_INTERNAL, RT_EBM_INTERNAL_MAGIC, rt_ebm_parse, RT_SEM_MODEL, record::ss, record::strsol::ss_args, record::u_id, and rt_ebm_internal::ydim.

Here is the call graph for this function:

int rt_ebm_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

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

The name will be added by the caller.

Definition at line 653 of file g_ebm.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_struct_print(), DB_SS_LEN, DB_SS_NGRAN, DBID_STRSOL, bu_external::ext_buf, bu_external::ext_nbytes, ID_EBM, rt_db_internal::idb_ptr, rt_ebm_internal::mat, NAMESIZE, RT_CK_DB_INTERNAL, RT_EBM_CK_MAGIC, rt_ebm_parse, record::ss, record::strsol::ss_args, record::strsol::ss_id, and record::strsol::ss_keyword.

Here is the call graph for this function:

int rt_ebm_import5 struct rt_db_internal ip,
const struct bu_external ep,
const fastf_t mat,
const struct db_i dbip
 

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

Read in the information from the string solid record. Then, as a service to the application, read in the bitmap and set up some of the associated internal variables.

Definition at line 694 of file g_ebm.c.

References bu_mapped_file::apbuf, bu_mapped_file::apbuflen, bcopy, BIT, BIT_XWIDEN, BIT_YWIDEN, bn_mat_mul(), bu_calloc(), BU_CK_EXTERNAL, bu_free(), bu_log(), bu_open_mapped_file_with_path(), bu_semaphore_acquire(), bu_semaphore_release(), bu_struct_parse(), bu_struct_print(), bu_vls_free(), bu_vls_init(), bu_vls_strcpy(), bu_mapped_file::buf, bu_mapped_file::buflen, DB5_MAJORTYPE_BRLCAD, db_i::dbi_filepath, bu_external::ext_buf, ID_EBM, ID_NULL, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_ebm_internal::magic, rt_ebm_internal::mat, MAT_COPY, MAT_IDN, rt_ebm_internal::mp, NULL, RT_CK_DB_INTERNAL, RT_EBM_INTERNAL_MAGIC, rt_ebm_parse, RT_SEM_MODEL, and rt_ebm_internal::ydim.

Here is the call graph for this function:

int rt_ebm_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ E B M _ E X P O R T 5

The name will be added by the caller.

Definition at line 795 of file g_ebm.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_strlen(), bu_vls_struct_print(), bu_external::ext_buf, bu_external::ext_nbytes, ID_EBM, rt_db_internal::idb_ptr, rt_ebm_internal::mat, RT_CK_DB_INTERNAL, RT_EBM_CK_MAGIC, and rt_ebm_parse.

Here is the call graph for this function:

int rt_ebm_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 832 of file g_ebm.c.

References bu_vls_init(), bu_vls_printf(), bu_vls_strcat(), bu_vls_trunc2(), bu_vls_vlscat(), rt_db_internal::idb_ptr, INTCLAMP, and RT_EBM_CK_MAGIC.

Here is the call graph for this function:

void rt_ebm_ifree struct rt_db_internal ip  ) 
 

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

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

Definition at line 871 of file g_ebm.c.

References BU_CK_MAPPED_FILE, bu_close_mapped_file(), bu_free(), GENPTR_NULL, ID_NULL, rt_db_internal::idb_ptr, rt_ebm_internal::magic, rt_ebm_internal::mp, RT_CK_DB_INTERNAL, and RT_EBM_CK_MAGIC.

Here is the call graph for this function:

int rt_ebm_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ E B M _ P R E P

Returns - 0 OK !0 Failure

Implicit return - A struct rt_ebm_specific is created, and it's address is stored in stp->st_specific for use by rt_ebm_shot().

Definition at line 903 of file g_ebm.c.

References bn_mat_inv(), bn_rotate_bbox(), BU_GETSTRUCT, rt_ebm_specific::ebm_cellsize, rt_ebm_specific::ebm_i, rt_ebm_specific::ebm_large, rt_ebm_specific::ebm_mat, rt_ebm_specific::ebm_origin, rt_ebm_specific::ebm_xnorm, rt_ebm_specific::ebm_ynorm, rt_ebm_specific::ebm_znorm, rt_db_internal::idb_ptr, MAGNITUDE, rt_ebm_internal::mat, MAT3X3VEC, rt_ebm_internal::mp, RT_EBM_CK_MAGIC, soltab::st_aradius, soltab::st_bradius, soltab::st_center, soltab::st_max, soltab::st_min, soltab::st_specific, rt_ebm_internal::tallness, VADD2, VADD2SCALE, VSCALE, VSET, VSETALL, VSUB2, rt_ebm_internal::xdim, and rt_ebm_internal::ydim.

Here is the call graph for this function:

void rt_ebm_print register const struct soltab stp  ) 
 

R T _ E B M _ P R I N T

Definition at line 959 of file g_ebm.c.

References bu_log(), rt_ebm_specific::ebm_cellsize, rt_ebm_specific::ebm_i, rt_ebm_specific::ebm_origin, rt_ebm_internal::file, rt_ebm_internal::tallness, VPRINT, rt_ebm_internal::xdim, and rt_ebm_internal::ydim.

Here is the call graph for this function:

int rt_ebm_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ E B M _ S H O T

Intersect a ray with an extruded bitmap. If intersection occurs, a pointer to a sorted linked list of "struct seg"s will be returned.

Returns - 0 MISS >0 HIT

Definition at line 984 of file g_ebm.c.

References BU_LIST_INIT, bu_log(), rt_ebm_specific::ebm_i, rt_ebm_specific::ebm_mat, MAT4X3PNT, MAT4X3VEC, pdv_3line(), pl_color(), rt_ebm_dda(), rt_seg_planeclip(), soltab::st_specific, rt_ebm_internal::tallness, VJOIN1, VSET, X, Y, and Z.

Here is the call graph for this function:

void rt_ebm_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ E B M _ N O R M

Given one ray distance, return the normal and entry/exit point. This is mostly a matter of translating the stored code into the proper normal.

Definition at line 1032 of file g_ebm.c.

References bu_log(), rt_ebm_specific::ebm_xnorm, rt_ebm_specific::ebm_ynorm, rt_ebm_specific::ebm_znorm, NORM_XNEG, NORM_XPOS, NORM_YNEG, NORM_YPOS, NORM_ZNEG, soltab::st_specific, VJOIN1, VMOVE, VREVERSE, and VSETALL.

Here is the call graph for this function:

void rt_ebm_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ E B M _ C U R V E

Everything has sharp edges. This makes things easy.

Definition at line 1075 of file g_ebm.c.

References bn_vec_ortho().

Here is the call graph for this function:

void rt_ebm_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ E B M _ U V

Map the hit point in 2-D into the range 0..1 untransformed X becomes U, and Y becomes V.

Definition at line 1091 of file g_ebm.c.

References X, and Y.

void rt_ebm_free struct soltab stp  ) 
 

R T _ E B M _ F R E E

Definition at line 1105 of file g_ebm.c.

References BU_CK_MAPPED_FILE, bu_close_mapped_file(), bu_free(), rt_ebm_specific::ebm_i, rt_ebm_internal::mp, and soltab::st_specific.

Here is the call graph for this function:

int rt_ebm_class void   ) 
 

Definition at line 1117 of file g_ebm.c.

int rt_ebm_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ E B M _ P L O T

Definition at line 1126 of file g_ebm.c.

References BIT, rt_db_internal::idb_ptr, RT_CK_DB_INTERNAL, RT_EBM_CK_MAGIC, rt_ebm_plate(), rt_ebm_internal::xdim, and rt_ebm_internal::ydim.

Here is the call graph for this function:

void rt_ebm_plate int  x1,
int  y1,
int  x2,
int  y2,
double  t,
register fastf_t mat,
register struct bu_list vhead
 

Definition at line 1181 of file g_ebm.c.

References BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, LOCAL, MAT4X3PNT, RT_ADD_VLIST, VSET, and Z.

int rt_ebm_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ E B M _ T E S S

Definition at line 1404 of file g_ebm.c.

References BIT, BN_CK_TOL, bu_calloc(), BU_LIST_FIRST, BU_LIST_INIT, BU_LIST_NOT_HEAD, BU_LIST_PNEXT, height, rt_db_internal::idb_ptr, ebm_edge::l, ebm_edge::left, rt_ebm_internal::mat, MAT4X3PNT, nmg_add_loop_to_face(), NMG_CK_FACEUSE, NMG_CK_MODEL, nmg_cmface(), nmg_fu_planeeqn(), nmg_mrsv(), nmg_vertex_gv(), NULL, OT_OPPOSITE, RT_CK_DB_INTERNAL, RT_EBM_CK_MAGIC, start, ebm_edge::v, vertex::vg_p, void(), VSET, ebm_edge::x1, ebm_edge::x2, rt_ebm_internal::xdim, ebm_edge::y1, ebm_edge::y2, and rt_ebm_internal::ydim.

Here is the call graph for this function:

int rt_ebm_tclget Tcl_Interp interp,
const struct rt_db_internal intern,
const char *  attr
 

R T _ E B M _ T C L G E T

Routine to format the parameters of an EBM for "db get"

Legal requested parameters are: "F" - bitmap file to extrude "W" - number of cells in X direction "N" - number of cells in Y direction "H" - height of each cell (mm) "M" - matrix to transform EBM solid into model coordinates

no paramaters requested returns all

Definition at line 1928 of file g_ebm.c.

References bu_vls_init(), bu_vls_printf(), bu_vls_strcpy(), rt_db_internal::idb_ptr, NULL, and RT_EBM_CK_MAGIC.

Here is the call graph for this function:

int rt_ebm_tcladjust Tcl_Interp interp,
struct rt_db_internal intern,
int  argc,
char **  argv
 

R T _ E B M _ T C L A D J U S T

Routine to adjust the parameters of an EBM

Legal parameters are: "F" - bitmap file to extrude "W" - number of cells in X direction "N" - number of cells in Y direction "H" - height of each cell (mm) "M" - matrix to transform EBM solid into model coordinates

Definition at line 1990 of file g_ebm.c.

References atof(), rt_ebm_internal::file, rt_db_internal::idb_ptr, interp, rt_ebm_internal::mat, MAT_COPY, RT_CK_DB_INTERNAL, RT_EBM_CK_MAGIC, RT_EBM_NAME_LEN, rt_ebm_internal::tallness, TCL_ERROR, tcl_list_to_fastf_array(), TCL_OK, TCL_STATIC, rt_ebm_internal::xdim, and rt_ebm_internal::ydim.

Here is the call graph for this function:

int rt_ebm_tclform const struct rt_functab ftp,
Tcl_Interp interp
 

Definition at line 2047 of file g_ebm.c.

References interp, NULL, RT_CK_FUNCTAB, and TCL_OK.

void rt_ebm_make const struct rt_functab ftp,
struct rt_db_internal intern,
double  diameter
 

R T _ E B M _ M A K E

Routine to make a new EBM solid. The only purpose of this routine is to initialize the matrix and height to legal values.

Definition at line 2066 of file g_ebm.c.

References BU_ASSERT, bu_calloc(), DB5_MAJORTYPE_BRLCAD, ID_EBM, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_ebm_internal::magic, rt_ebm_internal::mat, MAT_IDN, RT_EBM_INTERNAL_MAGIC, and rt_ebm_internal::tallness.

Here is the call graph for this function:

int rt_ehy_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ E H Y _ P R E P

Given a pointer to a GED database record, and a transformation matrix, determine if this is a valid EHY, and if so, precompute various terms of the formula.

Returns - 0 EHY is OK !0 Error in description

Implicit return - A struct ehy_specific is created, and it's address is stored in stp->st_specific for use by ehy_shot().

Definition at line 217 of file g_ehy.c.

References BN_CK_TOL, bn_mat_mul(), bn_mat_trn(), BU_GETSTRUCT, rt_ehy_internal::ehy_Au, ehy_specific::ehy_Aunit, ehy_specific::ehy_Bunit, rt_ehy_internal::ehy_c, ehy_specific::ehy_cprime, rt_ehy_internal::ehy_H, ehy_specific::ehy_Hunit, ehy_specific::ehy_invRoS, rt_ehy_internal::ehy_r1, rt_ehy_internal::ehy_r2, ehy_specific::ehy_SoR, rt_ehy_internal::ehy_V, ehy_specific::ehy_V, ID_EHY, rt_db_internal::idb_ptr, LOCAL, MAGSQ, MAT_IDN, NEAR_ZERO, R, RT_CK_DB_INTERNAL, RT_DOT_TOL, RT_EHY_CK_MAGIC, RT_LEN_TOL, rt_i::rti_tol, soltab::st_aradius, soltab::st_bradius, soltab::st_center, soltab::st_id, soltab::st_max, soltab::st_meth, soltab::st_min, soltab::st_specific, VCROSS, VDOT, VJOIN1, VMOVE, VREVERSE, VUNITIZE, X, Y, and Z.

Here is the call graph for this function:

void rt_ehy_print register const struct soltab stp  ) 
 

R T _ E H Y _ P R I N T

Definition at line 315 of file g_ehy.c.

References bn_mat_print(), ehy_specific::ehy_Aunit, ehy_specific::ehy_Bunit, ehy_specific::ehy_cprime, ehy_specific::ehy_Hunit, ehy_specific::ehy_invRoS, ehy_specific::ehy_SoR, ehy_specific::ehy_V, and VPRINT.

Here is the call graph for this function:

int rt_ehy_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ E H Y _ S H O T

Intersect a ray with a ehy. If an intersection occurs, a struct seg will be acquired and filled in.

Returns - 0 MISS >0 HIT

Definition at line 345 of file g_ehy.c.

References ehy_specific::ehy_cprime, EHY_NORM_BODY, ehy_specific::ehy_SoR, ehy_specific::ehy_V, FAST, LOCAL, MAT4X3VEC, NEAR_ZERO, RT_HIT_MAGIC, RT_PCOEF_TOL, soltab::st_specific, VJOIN1, VSUB2, X, Y, and Z.

void rt_ehy_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ E H Y _ V S H O T

Vectorized version.

Definition at line 473 of file g_ehy.c.

References rt_vstub().

Here is the call graph for this function:

void rt_ehy_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ E H Y _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 489 of file g_ehy.c.

References bu_log(), ehy_specific::ehy_cprime, ehy_specific::ehy_Hunit, ehy_specific::ehy_invRoS, EHY_NORM_BODY, EHY_NORM_TOP, MAGNITUDE, MAT4X3VEC, soltab::st_specific, VJOIN1, VREVERSE, VSCALE, VSET, X, and Y.

Here is the call graph for this function:

void rt_ehy_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ E H Y _ C U R V E

Return the curvature of the ehy.

Definition at line 526 of file g_ehy.c.

References bn_mat_mul(), bn_vec_ortho(), ehy_specific::ehy_cprime, ehy_specific::ehy_invRoS, EHY_NORM_BODY, EHY_NORM_TOP, ehy_specific::ehy_SoR, eigen2x2, MAT4X3VEC, MAT_IDN, soltab::st_specific, VCOMB2, VCROSS, VDOT, VUNITIZE, X, and Y.

Here is the call graph for this function:

void rt_ehy_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ E H Y _ U V

For a hit on the surface of an ehy, return the (u,v) coordinates of the hit point, 0 <= u,v <= 1. u = azimuth v = elevation

Definition at line 589 of file g_ehy.c.

References bn_inv2pi, EHY_NORM_BODY, EHY_NORM_TOP, ehy_specific::ehy_SoR, ehy_specific::ehy_V, FAST, LOCAL, MAT4X3VEC, soltab::st_specific, VSUB2, X, and Y.

void rt_ehy_free register struct soltab stp  ) 
 

R T _ E H Y _ F R E E

Definition at line 634 of file g_ehy.c.

References bu_free().

Here is the call graph for this function:

int rt_ehy_class void   ) 
 

R T _ E H Y _ C L A S S

Definition at line 647 of file g_ehy.c.

int rt_ehy_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ E H Y _ P L O T

Definition at line 656 of file g_ehy.c.

References A, rt_tess_tol::abs, bn_mat_trn(), bn_pi, bn_twopi, BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, bu_free(), bu_malloc(), rt_ehy_internal::ehy_Au, rt_ehy_internal::ehy_c, rt_ehy_internal::ehy_H, rt_ehy_internal::ehy_r1, rt_ehy_internal::ehy_r2, rt_ehy_internal::ehy_V, ELEMENTS_PER_VECT, rt_db_internal::idb_ptr, LOCAL, MAGNITUDE, MAGSQ, MAT_IDN, NEAR_ZERO, rt_pt_node::next, rt_tess_tol::norm, NULL, rt_pt_node::p, R, rt_tess_tol::rel, RT_ADD_VLIST, RT_CK_DB_INTERNAL, RT_DOT_TOL, RT_EHY_CK_MAGIC, rt_ell(), rt_ell_ang(), RT_LEN_TOL, rt_mk_hyperbola(), rt_ptalloc(), VCROSS, VDOT, VJOIN1, VMOVE, VREVERSE, VSCALE, VSET, VUNITIZE, X, and Y.

Here is the call graph for this function:

int rt_ehy_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ E H Y _ T E S S

Returns - -1 failure 0 OK. *r points to nmgregion that holds this tessellation.

Definition at line 935 of file g_ehy.c.

References A, rt_tess_tol::abs, bn_mat_mul(), bn_mat_trn(), bn_pi, bn_twopi, bu_free(), BU_LIST_FIRST, bu_malloc(), rt_ehy_internal::ehy_Au, rt_ehy_internal::ehy_c, rt_ehy_internal::ehy_H, rt_ehy_internal::ehy_r1, rt_ehy_internal::ehy_r2, rt_ehy_internal::ehy_V, rt_db_internal::idb_ptr, LOCAL, MAGNITUDE, MAGSQ, MAT_IDN, NEAR_ZERO, rt_pt_node::next, nmg_mrsv(), rt_tess_tol::norm, NULL, rt_pt_node::p, R, rt_tess_tol::rel, RT_CK_DB_INTERNAL, RT_DOT_TOL, RT_EHY_CK_MAGIC, rt_ell(), rt_ell_ang(), RT_LEN_TOL, rt_mk_hyperbola(), rt_ptalloc(), VCROSS, VDOT, VJOIN1, VMOVE, VREVERSE, VSCALE, VSET, VUNITIZE, X, and Y.

Here is the call graph for this function:

int rt_ehy_import struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ E H Y _ I M P O R T

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

Definition at line 1422 of file g_ehy.c.

References BU_CK_EXTERNAL, bu_free(), bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, rt_ehy_internal::ehy_Au, rt_ehy_internal::ehy_c, rt_ehy_internal::ehy_H, rt_ehy_internal::ehy_magic, rt_ehy_internal::ehy_r1, rt_ehy_internal::ehy_r2, rt_ehy_internal::ehy_V, bu_external::ext_buf, ID_EHY, ID_SOLID, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, LOCAL, MAT4X3PNT, MAT4X3VEC, RT_CK_DB_INTERNAL, RT_EHY_INTERNAL_MAGIC, record::s, record::solidrec::s_values, SMALL_FASTF, record::u_id, and VUNITIZE.

Here is the call graph for this function:

int rt_ehy_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ E H Y _ E X P O R T

The name is added by the caller, in the usual place.

Definition at line 1468 of file g_ehy.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_log(), EHY, rt_ehy_internal::ehy_Au, rt_ehy_internal::ehy_c, rt_ehy_internal::ehy_H, rt_ehy_internal::ehy_r1, rt_ehy_internal::ehy_r2, rt_ehy_internal::ehy_V, bu_external::ext_buf, bu_external::ext_nbytes, ID_EHY, ID_SOLID, rt_db_internal::idb_ptr, MAGNITUDE, NEAR_ZERO, RT_CK_DB_INTERNAL, RT_DOT_TOL, RT_EHY_CK_MAGIC, RT_LEN_TOL, record::s, record::solidrec::s_id, record::solidrec::s_type, record::solidrec::s_values, VDOT, VMOVE, and VSCALE.

Here is the call graph for this function:

int rt_ehy_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ E H Y _ I M P O R T 5

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

Definition at line 1528 of file g_ehy.c.

References BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_free(), bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, rt_ehy_internal::ehy_Au, rt_ehy_internal::ehy_c, rt_ehy_internal::ehy_H, rt_ehy_internal::ehy_magic, rt_ehy_internal::ehy_r1, rt_ehy_internal::ehy_r2, rt_ehy_internal::ehy_V, bu_external::ext_buf, bu_external::ext_nbytes, ID_EHY, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, LOCAL, MAT4X3PNT, MAT4X3VEC, ntohd(), RT_CK_DB_INTERNAL, RT_EHY_INTERNAL_MAGIC, SIZEOF_NETWORK_DOUBLE, SMALL_FASTF, and VUNITIZE.

Here is the call graph for this function:

int rt_ehy_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ E H Y _ E X P O R T 5

The name is added by the caller, in the usual place.

Definition at line 1574 of file g_ehy.c.

References BU_CK_EXTERNAL, bu_log(), bu_malloc(), rt_ehy_internal::ehy_Au, rt_ehy_internal::ehy_c, rt_ehy_internal::ehy_H, rt_ehy_internal::ehy_r1, rt_ehy_internal::ehy_r2, rt_ehy_internal::ehy_V, bu_external::ext_buf, bu_external::ext_nbytes, htond(), ID_EHY, rt_db_internal::idb_ptr, MAGNITUDE, NEAR_ZERO, RT_CK_DB_INTERNAL, RT_DOT_TOL, RT_EHY_CK_MAGIC, RT_LEN_TOL, SIZEOF_NETWORK_DOUBLE, VDOT, VMOVE, and VSCALE.

Here is the call graph for this function:

int rt_ehy_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 1634 of file g_ehy.c.

References bu_vls_strcat(), rt_db_internal::idb_ptr, INTCLAMP, MAGNITUDE, RT_EHY_CK_MAGIC, X, and Y.

Here is the call graph for this function:

void rt_ehy_ifree struct rt_db_internal ip  ) 
 

R T _ E H Y _ I F R E E

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

Definition at line 1674 of file g_ehy.c.

References bu_free(), rt_ehy_internal::ehy_magic, GENPTR_NULL, rt_db_internal::idb_ptr, RT_CK_DB_INTERNAL, and RT_EHY_CK_MAGIC.

Here is the call graph for this function:

int rt_sph_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ S P H _ P R E P

Given a pointer to a GED database record, and a transformation matrix, determine if this is a valid sphere, and if so, precompute various terms of the formula.

Returns - 0 SPH is OK !0 Error in description

Implicit return - A struct sph_specific is created, and it's address is stored in stp->st_specific for use by rt_sph_shot(). If the ELL is really a SPH, stp->st_id is modified to ID_SPH.

Definition at line 104 of file g_sph.c.

References rt_ell_internal::a, rt_ell_internal::b, BU_GETSTRUCT, bu_log(), rt_ell_internal::c, bn_tol::dist, ID_SPH, rt_db_internal::idb_ptr, LOCAL, MAGSQ, MAT_IDN, NEAR_ZERO, RT_ELL_CK_MAGIC, rt_i::rti_tol, sph_specific::sph_invrad, sph_specific::sph_rad, sph_specific::sph_radsq, sph_specific::sph_SoR, sph_specific::sph_V, soltab::st_aradius, soltab::st_bradius, soltab::st_center, soltab::st_id, soltab::st_max, soltab::st_meth, soltab::st_min, soltab::st_specific, rt_ell_internal::v, VDOT, VMOVE, VSCALE, X, Y, and Z.

Referenced by rt_ell_prep().

Here is the call graph for this function:

int rt_ell_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ E L L _ P R E P

Given a pointer to a GED database record, and a transformation matrix, determine if this is a valid ellipsoid, and if so, precompute various terms of the formula.

Returns - 0 ELL is OK !0 Error in description

Implicit return - A struct ell_specific is created, and it's address is stored in stp->st_specific for use by rt_ell_shot().

Definition at line 199 of file g_ell.c.

References rt_ell_internal::a, rt_ell_internal::b, bn_mat_mul(), bn_mat_trn(), BU_GETSTRUCT, bu_log(), rt_ell_internal::c, bn_tol::dist, ell_specific::ell_Au, ell_specific::ell_Bu, ell_specific::ell_Cu, ell_specific::ell_invRSSR, ell_specific::ell_invsq, ell_specific::ell_SoR, ell_specific::ell_V, rt_db_internal::idb_ptr, LOCAL, MAGSQ, MAT3X3VEC, MAT_IDN, NEAR_ZERO, R, RT_ELL_CK_MAGIC, rt_sph_prep(), rt_i::rti_tol, soltab::st_aradius, soltab::st_bradius, soltab::st_center, soltab::st_max, soltab::st_min, soltab::st_specific, rt_ell_internal::v, VDOT, VELMUL, VMOVE, VSCALE, VSET, X, Y, and Z.

Here is the call graph for this function:

void rt_ell_print register const struct soltab stp  ) 
 

R T _ E L L _ P R I N T

Definition at line 341 of file g_ell.c.

References bn_mat_print(), ell_specific::ell_invRSSR, ell_specific::ell_SoR, ell_specific::ell_V, and VPRINT.

Here is the call graph for this function:

int rt_ell_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ E L L _ S H O T

Intersect a ray with an ellipsoid, where all constant terms have been precomputed by rt_ell_prep(). If an intersection occurs, a struct seg will be acquired and filled in.

Returns - 0 MISS >0 HIT

Definition at line 363 of file g_ell.c.

References application::a_resource, BU_LIST_INSERT, ell_specific::ell_SoR, ell_specific::ell_V, FAST, seg::l, LOCAL, MAT4X3VEC, RT_GET_SEG, soltab::st_specific, VDOT, and VSUB2.

void rt_ell_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ E L L _ V S H O T

This is the Becker vector version.

Definition at line 410 of file g_ell.c.

References ell_specific::ell_SoR, ell_specific::ell_V, FAST, hit::hit_dist, LOCAL, MAT4X3VEC, xray::r_dir, RT_ELL_SEG_MISS, seg::seg_in, seg::seg_out, seg::seg_stp, VDOT, and VSUB2.

void rt_ell_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ E L L _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 468 of file g_ell.c.

References ell_specific::ell_invRSSR, ell_specific::ell_V, LOCAL, MAGNITUDE, MAT4X3VEC, soltab::st_specific, VJOIN1, VSCALE, VSUB2, and X.

void rt_ell_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ E L L _ C U R V E

Return the curvature of the ellipsoid.

Definition at line 491 of file g_ell.c.

References bn_eigen2x2(), bn_vec_ortho(), ell_specific::ell_invRSSR, MAT4X3VEC, soltab::st_specific, VCOMB2, VCROSS, VDOT, VUNITIZE, X, and Y.

Here is the call graph for this function:

void rt_ell_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ E L L _ U V

For a hit on the surface of an ELL, return the (u,v) coordinates of the hit point, 0 <= u,v <= 1. u = azimuth v = elevation

Definition at line 531 of file g_ell.c.

References application::a_diverge, application::a_rbeam, bn_atan2(), bn_inv2pi, bn_invpi, ell_specific::ell_SoR, ell_specific::ell_V, LOCAL, MAT4X3VEC, soltab::st_aradius, soltab::st_specific, VSUB2, X, Y, and Z.

Here is the call graph for this function:

void rt_ell_free register struct soltab stp  ) 
 

R T _ E L L _ F R E E

Definition at line 569 of file g_ell.c.

References bu_free().

Here is the call graph for this function:

int rt_ell_class void   ) 
 

Definition at line 578 of file g_ell.c.

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().

int rt_ell_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ E L L _ P L O T

Definition at line 631 of file g_ell.c.

References rt_ell_internal::a, rt_ell_internal::b, BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, rt_ell_internal::c, ELEMENTS_PER_VECT, rt_db_internal::idb_ptr, RT_ADD_VLIST, RT_CK_DB_INTERNAL, rt_ell_16pts(), RT_ELL_CK_MAGIC, top(), and rt_ell_internal::v.

Here is the call graph for this function:

int rt_ell_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ E L L _ T E S S

Tessellate an ellipsoid.

The strategy is based upon the approach of Jon Leech 3/24/89, from program "sphere", which generates a polygon mesh approximating a sphere by recursive subdivision. First approximation is an octahedron; each level of refinement increases the number of polygons by a factor of 4. Level 3 (128 polygons) is a good tradeoff if gouraud shading is used to render the database.

At the start, points ABC lie on surface of the unit sphere. Pick DEF as the midpoints of the three edges of ABC. Normalize the new points to lie on surface of the unit sphere.

1 B /\ 3 / \ 4 D/____/\ /\ / \ / \ /____\/____\ A F C 0 5 2

Returns - -1 failure 0 OK. *r points to nmgregion that holds this tessellation.

Definition at line 750 of file g_ell.c.

References rt_tess_tol::abs, bn_halfpi, bn_mat_inv(), bn_mat_mul(), bn_mat_trn(), bu_calloc(), BU_LIST_FIRST, bu_log(), bn_tol::dist, rt_db_internal::idb_ptr, int, LOCAL, MAGSQ, MAT_IDN, NEAR_ZERO, ell_vert_strip::nfaces, nmg_mrsv(), rt_tess_tol::norm, ell_vert_strip::nverts, ell_vert_strip::nverts_per_strip, R, rt_tess_tol::rel, RT_CK_DB_INTERNAL, RT_ELL_CK_MAGIC, state, VCROSS, VDOT, VMOVE, VREVERSE, and VSCALE.

Here is the call graph for this function:

int rt_ell_import struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ E L L _ I M P O R T

Import an ellipsoid/sphere from the database format to the internal structure. Apply modeling transformations as well.

Definition at line 1121 of file g_ell.c.

References rt_ell_internal::a, rt_ell_internal::b, BU_CK_EXTERNAL, bu_log(), bu_malloc(), rt_ell_internal::c, DB5_MAJORTYPE_BRLCAD, bu_external::ext_buf, ID_ELL, ID_SOLID, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, LOCAL, rt_ell_internal::magic, MAT4X3PNT, MAT4X3VEC, RT_CK_DB_INTERNAL, RT_ELL_INTERNAL_MAGIC, rt_fastf_float(), record::s, record::solidrec::s_values, record::u_id, and rt_ell_internal::v.

Here is the call graph for this function:

int rt_ell_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ E L L _ E X P O R T

Definition at line 1159 of file g_ell.c.

References rt_ell_internal::a, rt_ell_internal::b, bu_calloc(), BU_CK_EXTERNAL, rt_ell_internal::c, bu_external::ext_buf, bu_external::ext_nbytes, GENELL, ID_ELL, ID_SOLID, ID_SPH, rt_db_internal::idb_ptr, RT_CK_DB_INTERNAL, RT_ELL_CK_MAGIC, record::s, record::solidrec::s_id, record::solidrec::s_type, record::solidrec::s_values, rt_ell_internal::v, and VSCALE.

Here is the call graph for this function:

int rt_ell_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ E L L _ I M P O R T 5

Import an ellipsoid/sphere from the database format to the internal structure. Apply modeling transformations as well.

Definition at line 1194 of file g_ell.c.

References rt_ell_internal::a, rt_ell_internal::b, BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_malloc(), rt_ell_internal::c, DB5_MAJORTYPE_BRLCAD, ELEMENTS_PER_VECT, bu_external::ext_buf, bu_external::ext_nbytes, ID_ELL, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_ell_internal::magic, MAT4X3PNT, MAT4X3VEC, ntohd(), RT_CK_DB_INTERNAL, RT_ELL_INTERNAL_MAGIC, SIZEOF_NETWORK_DOUBLE, and rt_ell_internal::v.

Here is the call graph for this function:

int rt_ell_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ E L L _ E X P O R T 5

The external format is: V point A vector B vector C vector

Definition at line 1234 of file g_ell.c.

References rt_ell_internal::a, rt_ell_internal::b, BU_CK_EXTERNAL, bu_malloc(), rt_ell_internal::c, ELEMENTS_PER_VECT, bu_external::ext_buf, bu_external::ext_nbytes, htond(), ID_ELL, ID_SPH, rt_db_internal::idb_ptr, RT_CK_DB_INTERNAL, RT_ELL_CK_MAGIC, SIZEOF_NETWORK_DOUBLE, rt_ell_internal::v, and VSCALE.

Here is the call graph for this function:

int rt_ell_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 1268 of file g_ell.c.

References bu_vls_strcat(), rt_db_internal::idb_ptr, INTCLAMP, MAGNITUDE, RT_ELL_CK_MAGIC, rt_find_fallback_angle(), rt_pr_fallback_angle(), VSCALE, X, Y, and Z.

Here is the call graph for this function:

void rt_ell_ifree struct rt_db_internal ip  ) 
 

R T _ E L L _ I F R E E

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

Definition at line 1334 of file g_ell.c.

References bu_free(), GENPTR_NULL, rt_db_internal::idb_ptr, and RT_CK_DB_INTERNAL.

Here is the call graph for this function:

int rt_ell_tnurb struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct bn_tol tol
 

R T _ E L L _ T N U R B

Definition at line 1357 of file g_ell.c.

References rt_ell_internal::a, rt_ell_internal::b, bn_mat_inv(), bn_mat_mul(), bn_mat_trn(), BU_LIST_FIRST, BU_LIST_NEXT, bu_log(), rt_ell_internal::c, bn_tol::dist, loopuse::down_hd, ELEMENTS_PER_VECT, edgeuse::eumate_p, rt_db_internal::idb_ptr, edgeuse::l, LOCAL, faceuse::lu_hd, MAGSQ, MAT_DELTAS_VEC, MAT_IDN, NEAR_ZERO, NMG_CK_EDGEUSE, NMG_CK_LOOPUSE, nmg_cmface(), nmg_mrsv(), nmg_vertexuse_a_cnurb(), R, RT_CK_DB_INTERNAL, RT_ELL_CK_MAGIC, rt_ell_internal::v, VCROSS, VDOT, VMOVE, VREVERSE, VSCALE, and edgeuse::vu_p.

Here is the call graph for this function:

int rt_epa_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ E P A _ P R E P

Given a pointer to a GED database record, and a transformation matrix, determine if this is a valid EPA, and if so, precompute various terms of the formula.

Returns - 0 EPA is OK !0 Error in description

Implicit return - A struct epa_specific is created, and it's address is stored in stp->st_specific for use by epa_shot().

Definition at line 217 of file g_epa.c.

References BN_CK_TOL, bn_mat_mul(), bn_mat_trn(), BU_GETSTRUCT, rt_epa_internal::epa_Au, epa_specific::epa_Aunit, epa_specific::epa_Bunit, epa_specific::epa_h, rt_epa_internal::epa_H, epa_specific::epa_Hunit, epa_specific::epa_inv_r1sq, epa_specific::epa_inv_r2sq, epa_specific::epa_invRoS, rt_epa_internal::epa_r1, rt_epa_internal::epa_r2, epa_specific::epa_SoR, rt_epa_internal::epa_V, epa_specific::epa_V, ID_EPA, rt_db_internal::idb_ptr, LOCAL, MAGSQ, MAT_IDN, NEAR_ZERO, R, RT_CK_DB_INTERNAL, RT_DOT_TOL, RT_EPA_CK_MAGIC, RT_LEN_TOL, rt_i::rti_tol, soltab::st_aradius, soltab::st_bradius, soltab::st_center, soltab::st_id, soltab::st_max, soltab::st_meth, soltab::st_min, soltab::st_specific, VCROSS, VDOT, VJOIN1, VMOVE, VREVERSE, VUNITIZE, X, Y, and Z.

Here is the call graph for this function:

void rt_epa_print register const struct soltab stp  ) 
 

R T _ E P A _ P R I N T

Definition at line 317 of file g_epa.c.

References bn_mat_print(), epa_specific::epa_Aunit, epa_specific::epa_Bunit, epa_specific::epa_Hunit, epa_specific::epa_invRoS, epa_specific::epa_SoR, epa_specific::epa_V, and VPRINT.

Here is the call graph for this function:

int rt_epa_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ E P A _ S H O T

Intersect a ray with a epa. If an intersection occurs, a struct seg will be acquired and filled in.

Returns - 0 MISS >0 HIT

Definition at line 346 of file g_epa.c.

References application::a_resource, BU_LIST_INSERT, EPA_NORM_BODY, EPA_NORM_TOP, epa_specific::epa_SoR, epa_specific::epa_V, FAST, seg::l, LOCAL, MAT4X3VEC, NEAR_ZERO, RT_GET_SEG, RT_HIT_MAGIC, RT_PCOEF_TOL, seg::seg_in, seg::seg_out, seg::seg_stp, SMALL, soltab::st_specific, VJOIN1, VSUB2, X, Y, and Z.

void rt_epa_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ E P A _ V S H O T

Vectorized version.

Definition at line 467 of file g_epa.c.

References rt_vstub().

Here is the call graph for this function:

void rt_epa_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ E P A _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 483 of file g_epa.c.

References bu_log(), epa_specific::epa_Hunit, epa_specific::epa_invRoS, EPA_NORM_BODY, EPA_NORM_TOP, MAGNITUDE, MAT4X3VEC, soltab::st_specific, VJOIN1, VREVERSE, VSCALE, VSET, X, and Y.

Here is the call graph for this function:

void rt_epa_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ E P A _ C U R V E

Return the curvature of the epa.

Definition at line 519 of file g_epa.c.

References bn_mat_mul(), bn_vec_ortho(), eigen2x2, epa_specific::epa_invRoS, EPA_NORM_BODY, EPA_NORM_TOP, epa_specific::epa_SoR, MAT4X3VEC, MAT_IDN, soltab::st_specific, VCOMB2, VCROSS, VDOT, VUNITIZE, X, and Y.

Here is the call graph for this function:

void rt_epa_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ E P A _ U V

For a hit on the surface of an epa, return the (u,v) coordinates of the hit point, 0 <= u,v <= 1. u = azimuth v = elevation

Definition at line 575 of file g_epa.c.

References bn_inv2pi, EPA_NORM_BODY, EPA_NORM_TOP, epa_specific::epa_SoR, epa_specific::epa_V, FAST, LOCAL, MAT4X3VEC, soltab::st_specific, VSUB2, X, Y, and Z.

void rt_epa_free register struct soltab stp  ) 
 

R T _ E P A _ F R E E

Definition at line 620 of file g_epa.c.

References bu_free().

Here is the call graph for this function:

int rt_epa_class void   ) 
 

R T _ E P A _ C L A S S

Definition at line 633 of file g_epa.c.

int rt_epa_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ E P A _ P L O T

Definition at line 642 of file g_epa.c.

References A, rt_tess_tol::abs, bn_mat_trn(), bn_pi, bn_twopi, BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, bu_free(), bu_malloc(), ELEMENTS_PER_VECT, rt_epa_internal::epa_Au, rt_epa_internal::epa_H, rt_epa_internal::epa_r1, rt_epa_internal::epa_r2, rt_epa_internal::epa_V, rt_db_internal::idb_ptr, LOCAL, MAGNITUDE, MAGSQ, MAT_IDN, NEAR_ZERO, rt_pt_node::next, rt_tess_tol::norm, NULL, rt_pt_node::p, R, rt_tess_tol::rel, RT_ADD_VLIST, RT_CK_DB_INTERNAL, RT_DOT_TOL, rt_ell(), rt_ell_ang(), RT_EPA_CK_MAGIC, RT_LEN_TOL, rt_mk_parabola(), rt_ptalloc(), VCROSS, VDOT, VJOIN1, VMOVE, VREVERSE, VSCALE, VSET, VUNITIZE, X, Y, and Z.

Here is the call graph for this function:

void rt_ell_norms register fastf_t ov,
fastf_t A,
fastf_t B,
fastf_t h_vec,
fastf_t  t,
int  sides
 

Definition at line 908 of file g_epa.c.

References bn_pi, ELLOUT, rt_bomb(), SMALL_FASTF, VBLEND2, VCROSS, VJOIN2, and VUNITIZE.

Referenced by rt_epa_tess().

Here is the call graph for this function:

void rt_ell register fastf_t ov,
register const fastf_t V,
const fastf_t A,
const fastf_t B,
int  sides
 

R T _ E L L

Generate an ellipsoid with the specified number of sides approximating it.

Definition at line 938 of file g_epa.c.

References bn_pi, ELLOUT, and VJOIN2.

fastf_t rt_ell_ang fastf_t p1,
fastf_t  a,
fastf_t  b,
fastf_t  dtol,
fastf_t  ntol
 

R T _ E L L _ A N G

Return angle required for smallest side to fall within tolerances for ellipse. Smallest side is a side with an endpoint at (a, 0, 0) where a is the semi-major axis.

Definition at line 962 of file g_epa.c.

References MAGNITUDE, VDOT, VSET, VUNITIZE, X, Y, and Z.

Referenced by rt_ehy_plot(), rt_ehy_tess(), rt_epa_plot(), and rt_epa_tess().

int rt_epa_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ E P A _ T E S S

Returns - -1 failure 0 OK. *r points to nmgregion that holds this tessellation.

Definition at line 1004 of file g_epa.c.

References A, rt_tess_tol::abs, bn_mat_trn(), bn_pi, bn_twopi, bu_calloc(), bu_free(), BU_LIST_FIRST, bu_malloc(), rt_epa_internal::epa_Au, rt_epa_internal::epa_H, rt_epa_internal::epa_r1, rt_epa_internal::epa_r2, rt_epa_internal::epa_V, rt_db_internal::idb_ptr, LOCAL, MAGNITUDE, MAGSQ, MAT_IDN, NEAR_ZERO, rt_pt_node::next, nmg_mrsv(), rt_tess_tol::norm, NULL, rt_pt_node::p, R, rt_tess_tol::rel, RT_CK_DB_INTERNAL, RT_DOT_TOL, rt_ell(), rt_ell_ang(), rt_ell_norms(), RT_EPA_CK_MAGIC, RT_LEN_TOL, rt_mk_parabola(), rt_ptalloc(), VCROSS, VDOT, VJOIN1, VMOVE, VREVERSE, VSCALE, VSET, VUNITIZE, X, Y, and Z.

Here is the call graph for this function:

int rt_epa_import struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ E P A _ I M P O R T

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

Definition at line 1463 of file g_epa.c.

References BU_CK_EXTERNAL, bu_free(), bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, rt_epa_internal::epa_Au, rt_epa_internal::epa_H, rt_epa_internal::epa_magic, rt_epa_internal::epa_r1, rt_epa_internal::epa_r2, rt_epa_internal::epa_V, bu_external::ext_buf, ID_EPA, ID_SOLID, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, LOCAL, MAT4X3PNT, MAT4X3VEC, RT_CK_DB_INTERNAL, RT_EPA_INTERNAL_MAGIC, record::s, record::solidrec::s_values, SMALL_FASTF, record::u_id, and VUNITIZE.

Here is the call graph for this function:

int rt_epa_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ E P A _ E X P O R T

The name is added by the caller, in the usual place.

Definition at line 1508 of file g_epa.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_log(), EPA, rt_epa_internal::epa_Au, rt_epa_internal::epa_H, rt_epa_internal::epa_r1, rt_epa_internal::epa_r2, rt_epa_internal::epa_V, bu_external::ext_buf, bu_external::ext_nbytes, ID_EPA, ID_SOLID, rt_db_internal::idb_ptr, MAGNITUDE, NEAR_ZERO, RT_CK_DB_INTERNAL, RT_DOT_TOL, RT_EPA_CK_MAGIC, RT_LEN_TOL, record::s, record::solidrec::s_id, record::solidrec::s_type, record::solidrec::s_values, VDOT, VMOVE, and VSCALE.

Here is the call graph for this function:

int rt_epa_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ E P A _ I M P O R T 5

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

Definition at line 1568 of file g_epa.c.

References BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_free(), bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, rt_epa_internal::epa_Au, rt_epa_internal::epa_H, rt_epa_internal::epa_magic, rt_epa_internal::epa_r1, rt_epa_internal::epa_r2, rt_epa_internal::epa_V, bu_external::ext_buf, bu_external::ext_nbytes, ID_EPA, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, LOCAL, MAT4X3PNT, MAT4X3VEC, ntohd(), RT_CK_DB_INTERNAL, RT_EPA_INTERNAL_MAGIC, SIZEOF_NETWORK_DOUBLE, SMALL_FASTF, and VUNITIZE.

Here is the call graph for this function:

int rt_epa_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ E P A _ E X P O R T 5

The name is added by the caller, in the usual place.

Definition at line 1613 of file g_epa.c.

References BU_CK_EXTERNAL, bu_log(), bu_malloc(), rt_epa_internal::epa_Au, rt_epa_internal::epa_H, rt_epa_internal::epa_r1, rt_epa_internal::epa_r2, rt_epa_internal::epa_V, bu_external::ext_buf, bu_external::ext_nbytes, htond(), ID_EPA, rt_db_internal::idb_ptr, MAGNITUDE, NEAR_ZERO, RT_CK_DB_INTERNAL, RT_DOT_TOL, RT_EPA_CK_MAGIC, RT_LEN_TOL, SIZEOF_NETWORK_DOUBLE, VDOT, VMOVE, and VSCALE.

Here is the call graph for this function:

int rt_epa_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 1673 of file g_epa.c.

References bu_vls_strcat(), rt_db_internal::idb_ptr, INTCLAMP, MAGNITUDE, RT_EPA_CK_MAGIC, X, Y, and Z.

Here is the call graph for this function:

void rt_epa_ifree struct rt_db_internal ip  ) 
 

R T _ E P A _ I F R E E

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

Definition at line 1710 of file g_epa.c.

References bu_free(), rt_epa_internal::epa_magic, GENPTR_NULL, rt_db_internal::idb_ptr, RT_CK_DB_INTERNAL, and RT_EPA_CK_MAGIC.

Here is the call graph for this function:

int rt_eto_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ E T O _ P R E P

Given a pointer to a GED database record, and a transformation matrix, determine if this is a valid eto, and if so, precompute various terms of the formula.

Returns - 0 ETO is OK !0 Error in description

Implicit return - A struct eto_specific is created, and it's address is stored in stp->st_specific for use by rt_eto_shot().

Definition at line 182 of file g_eto.c.

References bn_mat_inv(), bn_vec_ortho(), BU_GETSTRUCT, bu_log(), cv(), eto_specific::eto_C, rt_eto_internal::eto_C, eto_specific::eto_invR, rt_eto_internal::eto_N, eto_specific::eto_N, eto_specific::eto_R, rt_eto_internal::eto_r, eto_specific::eto_r, eto_specific::eto_rc, rt_eto_internal::eto_rd, eto_specific::eto_rd, rt_eto_internal::eto_V, eto_specific::eto_V, eto_specific::eu, eto_specific::ev, FAST, eto_specific::fu, eto_specific::fv, rt_db_internal::idb_ptr, LOCAL, MAGNITUDE, MAT_IDN, NEAR_ZERO, RT_ETO_CK_MAGIC, soltab::st_aradius, soltab::st_bradius, soltab::st_max, soltab::st_min, soltab::st_specific, VCROSS, VDOT, VMOVE, VSCALE, VSET, VUNITIZE, X, Y, and Z.

Here is the call graph for this function:

void rt_eto_print register const struct soltab stp  ) 
 

R T _ E T O _ P R I N T

Definition at line 287 of file g_eto.c.

References bn_mat_print(), bu_log(), eto_specific::eto_C, eto_specific::eto_invR, eto_specific::eto_N, eto_specific::eto_R, eto_specific::eto_r, eto_specific::eto_rc, eto_specific::eto_rd, eto_specific::eto_V, VPRINT, X, Y, and Z.

Here is the call graph for this function:

int rt_eto_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ E T O _ S H O T

Intersect a ray with an eto, where all constant terms have been precomputed by rt_eto_prep(). If an intersection occurs, one or two struct seg(s) will be acquired and filled in.

NOTE: All lines in this function are represented parametrically by a point, P( x0, y0, z0 ) and a direction normal, D = ax + by + cz. Any point on a line can be expressed by one variable 't', where

X = a*t + x0, eg, X = Dx*t + Px Y = b*t + y0, Z = c*t + z0.

First, convert the line to the coordinate system of a "stan- dard" eto. This is a eto which lies in the X-Y plane and circles the origin. The semimajor axis is C.

Then find the equation of that line and the standard eto, which turns out to be a quartic equation in 't'. Solve the equation using a general polynomial root finder. Use those values of 't' to compute the points of intersection in the original coordinate system.

Returns - 0 MISS >0 HIT

Definition at line 336 of file g_eto.c.

References bn_pr_roots(), bu_log(), directory::d_namep, eto_specific::eto_r, eto_specific::eto_R, eto_specific::eto_rc, eto_specific::eto_rd, eto_specific::eto_V, eto_specific::eu, eto_specific::ev, eto_specific::fu, eto_specific::fv, LOCAL, MAT4X3VEC, NEAR_ZERO, rt_poly_roots(), soltab::st_dp, soltab::st_specific, val, VDOT, VPRINT, VSCALE, VSUB2, VUNITIZE, X, Y, and Z.

Here is the call graph for this function:

void rt_eto_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ E T O _ V S H O T

This is the Becker vector version

Definition at line 558 of file g_eto.c.

void rt_eto_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ E T O _ N O R M

Compute the normal to the eto, given a point on the eto centered at the origin on the X-Y plane. The gradient of the eto at that point is in fact the normal vector, which will have to be given unit length. To make this useful for the original eto, it will have to be rotated back to the orientation of the original eto. The equation for the eto is:

_______ ________ / 2 2 2 / 2 2 2 [Eu(+- \/ x + y - R) + Ev z] + [Fu(+-\/ x + y - R) + Fv z ] -------------------------------- ------------------------------- = 1 2 2 Rc Rd

The normal is the gradient of f(x,y,z) = 0 or

(df/dx, df/dy, df/dz)

Definition at line 590 of file g_eto.c.

References eto_specific::eto_invR, eto_specific::eto_r, eto_specific::eto_rc, eto_specific::eto_rd, eto_specific::eu, eto_specific::ev, FAST, eto_specific::fu, eto_specific::fv, LOCAL, MAT3X3VEC, soltab::st_specific, VJOIN1, VSET, VUNITIZE, X, Y, and Z.

void rt_eto_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ E T O _ C U R V E

Return the curvature of the eto.

Definition at line 625 of file g_eto.c.

References cv(), eto_specific::eto_C, eto_specific::eto_N, eto_specific::eto_r, eto_specific::eto_rc, eto_specific::eto_rd, MAGNITUDE, soltab::st_specific, VCOMB2, VCROSS, VDOT, VMOVE, VSCALE, VSET, VSUB2, VUNITIZE, X, and Y.

Here is the call graph for this function:

void rt_eto_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ E T O _ U V

Definition at line 690 of file g_eto.c.

References bn_twopi, eto_specific::eto_N, eto_specific::eto_r, soltab::st_specific, VDOT, VMOVE, VSCALE, VSET, VSUB2, VUNITIZE, X, and Y.

void rt_eto_free struct soltab stp  ) 
 

R T _ E T O _ F R E E

Definition at line 732 of file g_eto.c.

References bu_free(), and soltab::st_specific.

Here is the call graph for this function:

int rt_eto_class void   ) 
 

Definition at line 741 of file g_eto.c.

int rt_eto_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ E T O _ P L O T

The ETO has the following input fields: eto_V V from origin to center eto_r Radius scalar eto_N Normal to plane of eto eto_C Semimajor axis (vector) of eto cross section eto_rd Semiminor axis length (scalar) of eto cross section

Definition at line 758 of file g_eto.c.

References rt_tess_tol::abs, bn_pi, bn_twopi, bn_vec_ortho(), bu_log(), bu_malloc(), cv(), rt_eto_internal::eto_C, rt_eto_internal::eto_N, ETO_PTA, rt_eto_internal::eto_r, rt_eto_internal::eto_rd, rt_eto_internal::eto_V, rt_db_internal::idb_ptr, MAGNITUDE, NEAR_ZERO, rt_tess_tol::norm, rt_tess_tol::rel, RT_CK_DB_INTERNAL, RT_ETO_CK_MAGIC, rt_mk_ell(), rt_num_circular_segments(), VCOMB2, VCROSS, VDOT, VJOIN1, VJOIN2, VMOVE, VUNITIZE, X, and Y.

Here is the call graph for this function:

int rt_ell4 struct rt_pt_node pts,
fastf_t  a,
fastf_t  b,
fastf_t  dtol,
fastf_t  ntol
 

R T _ E L L 4

Approximate one fourth (1st quadrant) of an ellipse with line segments. The initial single segment is broken at the point farthest from the ellipse 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 901 of file g_eto.c.

References rt_pt_node::next, rt_pt_node::p, rt_ptalloc(), VDOT, VMOVE, VSET, VUNITIZE, X, Y, and Z.

Referenced by rt_mk_ell().

Here is the call graph for this function:

point_t* rt_mk_ell int *  n,
fastf_t  a,
fastf_t  b,
fastf_t  dtol,
fastf_t  ntol
 

R T _ M K _ E L L

Return pointer an array of points approximating an ellipse with semi-major and semi-minor axes a and b. The line segments fall within the normal and distance tolerances of ntol and dtol.

Definition at line 957 of file g_eto.c.

References bu_free(), bu_malloc(), rt_pt_node::next, NULL, rt_pt_node::p, pos, rt_ell4(), rt_ptalloc(), VMOVE, and VSET.

Referenced by rt_eto_plot(), and rt_eto_tess().

Here is the call graph for this function:

int rt_eto_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ E T O _ T E S S

Definition at line 1007 of file g_eto.c.

References rt_tess_tol::abs, bn_pi, bn_twopi, bn_vec_ortho(), bu_calloc(), bu_log(), bu_malloc(), cv(), rt_eto_internal::eto_C, rt_eto_internal::eto_N, ETO_NMA, ETO_PTA, rt_eto_internal::eto_r, rt_eto_internal::eto_rd, rt_eto_internal::eto_V, rt_db_internal::idb_ptr, MAGNITUDE, NEAR_ZERO, rt_tess_tol::norm, NULL, rt_tess_tol::rel, RT_CK_DB_INTERNAL, RT_ETO_CK_MAGIC, rt_mk_ell(), rt_num_circular_segments(), VBLEND2, VCOMB2, VCROSS, VDOT, VJOIN1, VJOIN2, VMOVE, VUNITIZE, X, and Y.

Here is the call graph for this function:

int rt_eto_import struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ E T O _ I M P O R T

Import a eto from the database format to the internal format. Apply modeling transformations at the same time.

Definition at line 1216 of file g_eto.c.

References BU_CK_EXTERNAL, bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, rt_eto_internal::eto_C, rt_eto_internal::eto_magic, rt_eto_internal::eto_N, rt_eto_internal::eto_r, rt_eto_internal::eto_rd, rt_eto_internal::eto_V, bu_external::ext_buf, ID_ETO, ID_SOLID, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, MAT4X3PNT, MAT4X3VEC, RT_CK_DB_INTERNAL, RT_ETO_INTERNAL_MAGIC, record::s, record::solidrec::s_values, SMALL, and record::u_id.

Here is the call graph for this function:

int rt_eto_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ E T O _ E X P O R T

The name will be added by the caller.

Definition at line 1258 of file g_eto.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_log(), ETO, rt_eto_internal::eto_C, rt_eto_internal::eto_N, rt_eto_internal::eto_r, rt_eto_internal::eto_rd, rt_eto_internal::eto_V, bu_external::ext_buf, bu_external::ext_nbytes, ID_ETO, ID_SOLID, rt_db_internal::idb_ptr, MAGNITUDE, RT_CK_DB_INTERNAL, RT_ETO_CK_MAGIC, RT_LEN_TOL, record::s, record::solidrec::s_id, record::solidrec::s_type, record::solidrec::s_values, and VSCALE.

Here is the call graph for this function:

int rt_eto_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ E T O _ I M P O R T 5

Import a eto from the database format to the internal format. Apply modeling transformations at the same time.

Definition at line 1306 of file g_eto.c.

References BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, rt_eto_internal::eto_C, rt_eto_internal::eto_magic, rt_eto_internal::eto_N, rt_eto_internal::eto_r, rt_eto_internal::eto_rd, rt_eto_internal::eto_V, bu_external::ext_buf, bu_external::ext_nbytes, ID_ETO, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, MAT4X3PNT, MAT4X3VEC, ntohd(), RT_CK_DB_INTERNAL, RT_ETO_INTERNAL_MAGIC, SIZEOF_NETWORK_DOUBLE, and SMALL.

Here is the call graph for this function:

int rt_eto_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ E T O _ E X P O R T 5

The name will be added by the caller.

Definition at line 1348 of file g_eto.c.

References BU_CK_EXTERNAL, bu_log(), bu_malloc(), rt_eto_internal::eto_C, rt_eto_internal::eto_N, rt_eto_internal::eto_r, rt_eto_internal::eto_rd, rt_eto_internal::eto_V, bu_external::ext_buf, bu_external::ext_nbytes, htond(), ID_ETO, rt_db_internal::idb_ptr, MAGNITUDE, RT_CK_DB_INTERNAL, RT_ETO_CK_MAGIC, RT_LEN_TOL, SIZEOF_NETWORK_DOUBLE, and VSCALE.

Here is the call graph for this function:

int rt_eto_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 1396 of file g_eto.c.

References bu_vls_strcat(), rt_db_internal::idb_ptr, INTCLAMP, MAGNITUDE, RT_ETO_CK_MAGIC, X, Y, and Z.

Here is the call graph for this function:

void rt_eto_ifree struct rt_db_internal ip  ) 
 

R T _ E T O _ I F R E E

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

Definition at line 1439 of file g_eto.c.

References bu_free(), GENPTR_NULL, rt_db_internal::idb_ptr, RT_CK_DB_INTERNAL, and RT_ETO_CK_MAGIC.

Here is the call graph for this function:

int seg_to_vlist struct bu_list vhead,
const struct rt_tess_tol ttol,
point_t  V,
vect_t  u_vec,
vect_t  v_vec,
struct rt_sketch_internal sketch_ip,
genptr_t  seg
 

Referenced by curve_to_vlist().

int rt_extrude_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ E X T R U D E _ P R E P

Given a pointer to a GED database record, and a transformation matrix, determine if this is a valid EXTRUDE, and if so, precompute various terms of the formula.

Returns - 0 EXTRUDE is OK !0 Error in description

Implicit return - A struct extrude_specific is created, and it's address is stored in stp->st_specific for use by extrude_shot().

Definition at line 121 of file g_extrude.c.

References bn_mat_fromto(), bn_mat_inv(), BU_GETSTRUCT, bu_log(), CURVE_CARC_MAGIC, rt_extrude_internal::h, rt_db_internal::idb_ptr, extrude_specific::irot, LOCAL, MAGNITUDE, MDX, MDY, MDZ, extrude_specific::pl1, extrude_specific::pl2, extrude_specific::rot, rt_check_curve(), RT_EXTRUDE_CK_MAGIC, RT_SKETCH_CK_MAGIC, rt_sketch_internal::curve::seg_count, rt_sketch_internal::curve::segments, rt_extrude_internal::sketch_name, rt_extrude_internal::skt, rt_sketch_internal::skt_curve, soltab::st_specific, rt_extrude_internal::u_vec, extrude_specific::unit_h, extrude_specific::uv_scale, rt_extrude_internal::V, rt_extrude_internal::v_vec, VADD2, VCROSS, VDOT, rt_sketch_internal::vert_count, VMOVE, VSET, and VUNITIZE.

Here is the call graph for this function:

void rt_extrude_print register const struct soltab stp  ) 
 

R T _ E X T R U D E _ P R I N T

Definition at line 357 of file g_extrude.c.

int get_quadrant fastf_t v,
fastf_t local_x,
fastf_t local_y,
fastf_t vx,
fastf_t vy
 

Definition at line 362 of file g_extrude.c.

References V2DOT.

Referenced by isect_line_earc().

int isect_line2_ellipse fastf_t dist,
fastf_t ray_start,
fastf_t ray_dir,
fastf_t center,
fastf_t ra,
fastf_t rb
 

Definition at line 385 of file g_extrude.c.

References bu_bomb(), bu_log(), SMALL_FASTF, V2DOT, V2SUB2, and V3ARGS.

Referenced by isect_2D_loop_ray(), isect_line_earc(), and rt_extrude_shot().

Here is the call graph for this function:

int isect_line_earc fastf_t dist,
fastf_t ray_start,
fastf_t ray_dir,
fastf_t center,
fastf_t ra,
fastf_t rb,
fastf_t norm,
fastf_t start,
fastf_t end,
int  orientation
 

Definition at line 433 of file g_extrude.c.

References get_quadrant(), isect_line2_ellipse(), V2JOIN1, V2SUB2, VCROSS, VMOVE, and VREVERSE.

Referenced by rt_extrude_shot().

Here is the call graph for this function:

int rt_extrude_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ E X T R U D E _ S H O T

Intersect a ray with a extrude. If an intersection occurs, a struct seg will be acquired and filled in.

Returns - 0 MISS >0 HIT

Definition at line 603 of file g_extrude.c.

References bn_isect_line2_line2(), BOTTOM_FACE, extrude_specific::crv, CURVE_CARC_MAGIC, CURVE_LSEG_MAGIC, DIST_PT_PLANE, extrude_specific::irot, isect_line2_ellipse(), isect_line_earc(), LINE_SEG, MAT4X3PNT, MAT4X3VEC, MAX_FASTF, MAX_HITS, NEAR_ZERO, NULL, extrude_specific::perp, extrude_specific::pl1, extrude_specific::pl1_rot, extrude_specific::pl2, carc_seg::radius, extrude_specific::rot, extrude_specific::rot_axis, SMALL_FASTF, soltab::st_specific, TOP_FACE, extrude_specific::u_vec, VDOT, extrude_specific::verts, VJOIN1, VMOVE, VSCALE, VSUB2, and Z.

Here is the call graph for this function:

void rt_extrude_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ E X T R U D E _ V S H O T

Vectorized version.

Definition at line 1034 of file g_extrude.c.

References rt_vstub().

Here is the call graph for this function:

void rt_extrude_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ E X T R U D E _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 1050 of file g_extrude.c.

References BEZIER_SEG, BOTTOM_FACE, bu_bomb(), CARC_SEG, DIST_PT_PLANE, extrude_specific::irot, LINE_SEG, MAT4X3VEC, extrude_specific::pl1, soltab::st_specific, TOP_FACE, extrude_specific::unit_h, VCROSS, VDOT, VJOIN1, VREVERSE, VSUB2, and VUNITIZE.

Here is the call graph for this function:

void rt_extrude_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ E X T R U D E _ C U R V E

Return the curvature of the extrude.

Definition at line 1113 of file g_extrude.c.

References CARC_SEG, LINE_SEG, MAG2SQ, extrude_specific::perp, extrude_specific::rot_axis, soltab::st_specific, extrude_specific::unit_h, VCROSS, VDOT, VMOVE, VSCALE, VSUB2, and VUNITIZE.

void rt_extrude_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ E X T R U D E _ U V

For a hit on the surface of an extrude, return the (u,v) coordinates of the hit point, 0 <= u,v <= 1. u = azimuth v = elevation

Definition at line 1173 of file g_extrude.c.

void rt_extrude_free register struct soltab stp  ) 
 

R T _ E X T R U D E _ F R E E

Definition at line 1181 of file g_extrude.c.

References bu_free(), extrude_specific::crv, rt_curve_free(), and extrude_specific::verts.

Here is the call graph for this function:

int rt_extrude_class void   ) 
 

R T _ E X T R U D E _ C L A S S

Definition at line 1196 of file g_extrude.c.

int rt_extrude_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ E X T R U D E _ P L O T

Definition at line 1205 of file g_extrude.c.

References BN_VLIST_CHUNK, BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, BU_LIST_LAST, BU_LIST_NEXT, bu_log(), curve_to_vlist(), rt_extrude_internal::h, rt_db_internal::idb_ptr, bn_vlist::l, LOCAL, NULL, bn_vlist::nused, bn_vlist::pt, RT_ADD_VLIST, RT_CK_DB_INTERNAL, RT_EXTRUDE_CK_MAGIC, RT_SKETCH_CK_MAGIC, rt_extrude_internal::sketch_name, rt_extrude_internal::skt, rt_sketch_internal::skt_curve, rt_extrude_internal::u_vec, rt_extrude_internal::V, rt_extrude_internal::v_vec, and VADD2.

Here is the call graph for this function:

void get_indices genptr_t  seg,
int *  start,
int *  end
 

Definition at line 1296 of file g_extrude.c.

References nurb_seg::c_size, nurb_seg::ctl_points, bezier_seg::ctl_points, CURVE_BEZIER_MAGIC, CURVE_CARC_MAGIC, CURVE_LSEG_MAGIC, CURVE_NURB_MAGIC, bezier_seg::degree, line_seg::end, carc_seg::end, line_seg::magic, carc_seg::radius, line_seg::start, and carc_seg::start.

Referenced by rt_curve_order_segments(), and rt_extrude_tess().

void get_seg_midpoint genptr_t  seg,
struct rt_sketch_internal skt,
point2d_t  pt
 

Definition at line 1332 of file g_extrude.c.

References bu_log(), bu_malloc(), nurb_seg::c_size, edge_g_cnurb::c_size, carc_seg::center_is_left, nurb_seg::ctl_points, edge_g_cnurb::ctl_points, CURVE_CARC_MAGIC, CURVE_LSEG_MAGIC, CURVE_NURB_MAGIC, carc_seg::end, line_seg::end, nurb_seg::k, edge_g_cnurb::k, knot_vector::k_size, knot_vector::knots, edge_g_cnurb::l, M_PI, bu_list::magic, NMG_EDGE_G_CNURB_MAGIC, nurb_seg::order, edge_g_cnurb::order, carc_seg::orientation, edge_g_cnurb::pt_type, nurb_seg::pt_type, carc_seg::radius, RT_NURB_IS_PT_RATIONAL, RT_NURB_MAKE_PT_TYPE, SMALL_FASTF, carc_seg::start, line_seg::start, V2JOIN1, V2MOVE, V2SUB2, VADD2_2D, rt_sketch_internal::verts, VMOVE_2D, VSCALE_2D, nurb_seg::weights, X, and Y.

Referenced by classify_sketch_loops().

Here is the call graph for this function:

void isect_2D_loop_ray point2d_t  pta,
point2d_t  dir,
struct bu_ptbl loop,
struct loop_inter **  root,
int  which_loop,
struct rt_sketch_internal ip,
struct bn_tol tol
 

Definition at line 1470 of file g_extrude.c.

References bn_isect_line2_lseg2(), bu_calloc(), BU_PTBL_END, BU_PTBL_GET, CURVE_CARC_MAGIC, CURVE_LSEG_MAGIC, loop_inter::dist, carc_seg::end, line_seg::end, isect_line2_ellipse(), MAG2SQ, loop_inter::next, NULL, carc_seg::radius, carc_seg::start, line_seg::start, V2SUB2, loop_inter::vert_index, rt_sketch_internal::verts, loop_inter::which_loop, X, and Y.

Referenced by classify_sketch_loops().

Here is the call graph for this function:

int classify_sketch_loops struct bu_ptbl loopa,
struct bu_ptbl loopb,
struct rt_sketch_internal ip
 

Definition at line 1759 of file g_extrude.c.

References A_IN_B, B_IN_A, BN_TOL_MAGIC, BU_CK_PTBL, bu_free(), BU_PTBL_GET, DISJOINT, bn_tol::dist, bn_tol::dist_sq, get_seg_midpoint(), isect_2D_loop_ray(), LOOPA, LOOPB, bn_tol::magic, MAGSQ_2D, NULL, bn_tol::para, bn_tol::perp, ptr, RT_SKETCH_CK_MAGIC, UNKNOWN, V2SCALE, and V2SUB2.

Here is the call graph for this function:

int rt_extrude_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

Definition at line 1836 of file g_extrude.c.

References bu_calloc(), bu_free(), bu_log(), BU_PTBL_END, bu_ptbl_free(), BU_PTBL_GET, bu_ptbl_init(), bu_ptbl_ins(), get_indices(), rt_db_internal::idb_ptr, NULL, RT_CK_DB_INTERNAL, RT_EXTRUDE_CK_MAGIC, RT_SKETCH_CK_MAGIC, rt_extrude_internal::sketch_name, rt_extrude_internal::skt, and rt_sketch_internal::skt_curve.

Here is the call graph for this function:

int rt_extrude_import struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip,
struct resource resp
 

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

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

Definition at line 2150 of file g_extrude.c.

References bn_mat_identity, bu_calloc(), BU_CK_EXTERNAL, bu_free(), bu_glong(), bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, db_lookup(), DBID_EXTR, DIR_NULL, ELEMENTS_PER_VECT, record::extr_rec::ex_h, record::extr_rec::ex_key, record::extr_rec::ex_name, record::extr_rec::ex_uvec, record::extr_rec::ex_V, record::extr_rec::ex_vvec, bu_external::ext_buf, record::extr, 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, rt_extrude_internal::sketch_name, rt_extrude_internal::skt, record::u_id, rt_extrude_internal::u_vec, rt_extrude_internal::V, and rt_extrude_internal::v_vec.

Here is the call graph for this function:

int rt_extrude_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ E X T R U D E _ E X P O R T

The name is added by the caller, in the usual place.

Definition at line 2222 of file g_extrude.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_plong(), DBID_EXTR, ELEMENTS_PER_VECT, record::extr_rec::ex_count, record::extr_rec::ex_h, record::extr_rec::ex_id, record::extr_rec::ex_key, record::extr_rec::ex_uvec, record::extr_rec::ex_V, record::extr_rec::ex_vvec, bu_external::ext_buf, bu_external::ext_nbytes, record::extr, rt_extrude_internal::h, htond(), ID_EXTRUDE, rt_db_internal::idb_ptr, rt_extrude_internal::keypoint, ptr, RT_CK_DB_INTERNAL, RT_EXTRUDE_CK_MAGIC, rt_extrude_internal::sketch_name, rt_extrude_internal::u_vec, rt_extrude_internal::V, rt_extrude_internal::v_vec, and VSCALE.

Here is the call graph for this function:

int rt_extrude_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

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

The name is added by the caller, in the usual place.

Definition at line 2267 of file g_extrude.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_plong(), ELEMENTS_PER_VECT, bu_external::ext_buf, bu_external::ext_nbytes, rt_extrude_internal::h, htond(), ID_EXTRUDE, rt_db_internal::idb_ptr, rt_extrude_internal::keypoint, ptr, RT_CK_DB_INTERNAL, RT_EXTRUDE_CK_MAGIC, SIZEOF_NETWORK_DOUBLE, SIZEOF_NETWORK_LONG, rt_extrude_internal::sketch_name, rt_extrude_internal::u_vec, rt_extrude_internal::V, rt_extrude_internal::v_vec, and VSCALE.

Here is the call graph for this function:

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:

int rt_extrude_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

Definition at line 2374 of file g_extrude.c.

References bu_vls_strcat(), rt_extrude_internal::h, rt_db_internal::idb_ptr, RT_EXTRUDE_CK_MAGIC, rt_extrude_internal::V, V3INTCLAMPARGS, and VSCALE.

Here is the call graph for this function:

void rt_extrude_ifree struct rt_db_internal ip  ) 
 

R T _ E X T R U D E _ I F R E E

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

Definition at line 2408 of file g_extrude.c.

References bu_free(), DB5_MAJORTYPE_BRLCAD, GENPTR_NULL, ID_SKETCH, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_extrude_internal::magic, RT_CK_DB_INTERNAL, RT_EXTRUDE_CK_MAGIC, RT_INIT_DB_INTERNAL, rt_sketch_ifree(), rt_extrude_internal::sketch_name, and rt_extrude_internal::skt.

Here is the call graph for this function:

int rt_extrude_xform struct rt_db_internal op,
const mat_t  mat,
struct rt_db_internal ip,
int  free,
struct db_i dbip,
struct resource resp
 

Definition at line 2433 of file g_extrude.c.

References bu_avs_init(), BU_AVS_MAGIC, bu_avs_merge(), bu_debug, BU_DEBUG_MEM_CHECK, bu_log(), bu_malloc(), bu_mem_barriercheck(), bu_strdup, bu_attribute_value_set::count, DB5_MAJORTYPE_BRLCAD, rt_extrude_internal::h, ID_EXTRUDE, rt_db_internal::idb_avs, rt_db_internal::idb_ptr, rt_extrude_internal::keypoint, bu_attribute_value_set::magic, rt_extrude_internal::magic, MAT4X3PNT, MAT4X3VEC, NULL, RT_CK_DB_INTERNAL, RT_CK_RESOURCE, rt_copy_sketch(), rt_db_free_internal(), RT_EXTRUDE_CK_MAGIC, RT_EXTRUDE_INTERNAL_MAGIC, RT_INIT_DB_INTERNAL, rt_extrude_internal::sketch_name, rt_extrude_internal::skt, rt_extrude_internal::u_vec, rt_extrude_internal::V, rt_extrude_internal::v_vec, and VMOVE.

Here is the call graph for this function:

int rt_extrude_tclform const struct rt_functab ftp,
Tcl_Interp interp
 

Definition at line 2504 of file g_extrude.c.

References interp, NULL, RT_CK_FUNCTAB, and TCL_OK.

int rt_extrude_tclget Tcl_Interp interp,
const struct rt_db_internal intern,
const char *  attr
 

Definition at line 2516 of file g_extrude.c.

References bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_printf(), bu_vls_strcat(), bu_vls_strcpy(), rt_db_internal::idb_ptr, interp, NULL, RT_EXTRUDE_CK_MAGIC, TCL_ERROR, TCL_OK, and V3ARGS.

Here is the call graph for this function:

int rt_extrude_tcladjust Tcl_Interp interp,
struct rt_db_internal intern,
int  argc,
char **  argv
 

Definition at line 2565 of file g_extrude.c.

References bu_free(), bu_strdup, rt_extrude_internal::h, rt_db_internal::idb_ptr, interp, rt_extrude_internal::keypoint, MAGNITUDE, RT_CK_DB_INTERNAL, RT_EXTRUDE_CK_MAGIC, rt_extrude_internal::sketch_name, TCL_ERROR, tcl_list_to_fastf_array(), TCL_OK, TCL_STATIC, rt_extrude_internal::u_vec, rt_extrude_internal::V, rt_extrude_internal::v_vec, VSCALE, and VUNITIZE.

Here is the call graph for this function:

int rt_grp_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ G R P _ P R E P

Definition at line 61 of file g_grip.c.

References BU_GETSTRUCT, rt_grip_internal::center, grip_specific::grip_center, grip_specific::grip_mag, grip_specific::grip_normal, rt_db_internal::idb_ptr, rt_grip_internal::mag, rt_grip_internal::normal, RT_GRIP_CK_MAGIC, soltab::st_aradius, soltab::st_bradius, soltab::st_max, soltab::st_min, soltab::st_specific, VMOVE, and VSETALL.

void rt_grp_print register const struct soltab stp  ) 
 

R T _ G R P _ P R I N T

Definition at line 89 of file g_grip.c.

References bu_log(), grip_specific::grip_center, grip_specific::grip_mag, grip_specific::grip_normal, GRIP_NULL, and VPRINT.

Here is the call graph for this function:

int rt_grp_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ G R P _ S H O T

Function - Shoot a ray at a GRIP

Algorithm - The intersection distance is computed.

Returns - 0 MISS >0 HIT

Definition at line 117 of file g_grip.c.

void rt_grp_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ G R P _ V S H O T

Vectorizing version.

Definition at line 131 of file g_grip.c.

void rt_grp_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ G R P _ N O R M

Given ONE ray distance, return the normal and entry/exit point. The normal is already filled in.

Definition at line 148 of file g_grip.c.

References rt_bomb().

Here is the call graph for this function:

void rt_grp_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ G R P _ C U R V E

Return the "curvature" of the grip.

Definition at line 158 of file g_grip.c.

References rt_bomb().

Here is the call graph for this function:

void rt_grp_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ G R P _ U V

For a hit on a face of an HALF, return the (u,v) coordinates of the hit point. 0 <= u,v <= 1. u extends along the Xbase direction v extends along the "Ybase" direction Note that a "toroidal" map is established, varying each from 0 up to 1 and then back down to 0 again.

Definition at line 174 of file g_grip.c.

References rt_bomb().

Here is the call graph for this function:

void rt_grp_free struct soltab stp  ) 
 

R T _ G R P _ F R E E

Definition at line 183 of file g_grip.c.

References bu_free(), and soltab::st_specific.

Here is the call graph for this function:

int rt_grp_class void   ) 
 

Definition at line 192 of file g_grip.c.

int rt_grp_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ G R P _ P L O T

We represent a GRIP as a pyramid. The center describes where the center of the base is. The normal describes which direction the tip of the pyramid is. Mag describes the distence from the center to the tip. 1/4 of the width is the length of a base side.

Definition at line 207 of file g_grip.c.

References bn_vec_perp(), BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, rt_grip_internal::center, rt_db_internal::idb_ptr, rt_grip_internal::mag, rt_grip_internal::normal, RT_ADD_VLIST, RT_CK_DB_INTERNAL, RT_GRIP_CK_MAGIC, VADD2, VCROSS, VSCALE, VSUB2, and VUNITIZE.

Here is the call graph for this function:

int rt_grp_import struct rt_db_internal ip,
const struct bu_external ep,
const fastf_t mat,
const struct db_i dbip
 

R T _ G R P _ I M P O R T

Returns - -1 failure 0 success

Definition at line 260 of file g_grip.c.

References BU_CK_EXTERNAL, bu_log(), bu_malloc(), rt_grip_internal::center, DB5_MAJORTYPE_BRLCAD, bu_external::ext_buf, ID_GRIP, ID_SOLID, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_grip_internal::mag, rt_grip_internal::magic, MAGNITUDE, MAT4X3PNT, MAT4X3VEC, NEAR_ZERO, rt_grip_internal::normal, rt_bomb(), RT_CK_DB_INTERNAL, rt_fastf_float(), RT_GRIP_INTERNAL_MAGIC, record::s, record::solidrec::s_values, SMALL, record::u_id, and VSCALE.

Here is the call graph for this function:

int rt_grp_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ G R P _ E X P O R T

Definition at line 312 of file g_grip.c.

References bu_calloc(), BU_CK_EXTERNAL, rt_grip_internal::center, bu_external::ext_buf, bu_external::ext_nbytes, GRP, ID_GRIP, ID_SOLID, rt_db_internal::idb_ptr, rt_grip_internal::mag, rt_grip_internal::normal, RT_CK_DB_INTERNAL, RT_GRIP_CK_MAGIC, record::s, record::solidrec::s_id, record::solidrec::s_type, and VMOVE.

Here is the call graph for this function:

int rt_grp_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

Definition at line 337 of file g_grip.c.

References BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_log(), bu_malloc(), rt_grip_internal::center, DB5_MAJORTYPE_BRLCAD, bu_external::ext_buf, bu_external::ext_nbytes, ID_GRIP, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_grip_internal::mag, rt_grip_internal::magic, MAGNITUDE, MAT4X3PNT, MAT4X3VEC, NEAR_ZERO, rt_grip_internal::normal, ntohd(), rt_bomb(), RT_CK_DB_INTERNAL, RT_GRIP_INTERNAL_MAGIC, SIZEOF_NETWORK_DOUBLE, SMALL, and VSCALE.

Here is the call graph for this function:

int rt_grp_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ G R I P _ E X P O R T 5

Definition at line 387 of file g_grip.c.

References BU_CK_EXTERNAL, bu_malloc(), rt_grip_internal::center, bu_external::ext_buf, bu_external::ext_nbytes, htond(), ID_GRIP, rt_db_internal::idb_ptr, rt_grip_internal::mag, rt_grip_internal::normal, RT_CK_DB_INTERNAL, RT_GRIP_CK_MAGIC, SIZEOF_NETWORK_DOUBLE, VMOVE, and VSCALE.

Here is the call graph for this function:

int rt_grp_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 419 of file g_grip.c.

References bu_vls_strcat(), rt_db_internal::idb_ptr, INTCLAMP, RT_GRIP_CK_MAGIC, and V3INTCLAMPARGS.

Here is the call graph for this function:

void rt_grp_ifree struct rt_db_internal ip  ) 
 

R T _ G R P _ I F R E E

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

Definition at line 449 of file g_grip.c.

References bu_free(), GENPTR_NULL, rt_db_internal::idb_ptr, and RT_CK_DB_INTERNAL.

Here is the call graph for this function:

int rt_grp_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ G R P _ T E S S

Definition at line 460 of file g_grip.c.

References rt_db_internal::idb_ptr, RT_CK_DB_INTERNAL, and RT_GRIP_CK_MAGIC.

int rt_hlf_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ H L F _ P R E P

Definition at line 89 of file g_half.c.

References bn_vec_perp(), BU_GETSTRUCT, rt_half_internal::eqn, half_specific::half_eqn, half_specific::half_Xbase, half_specific::half_Ybase, rt_db_internal::idb_ptr, INFINITY, RT_HALF_CK_MAGIC, soltab::st_aradius, soltab::st_bradius, soltab::st_center, soltab::st_max, soltab::st_min, soltab::st_specific, VCROSS, VMOVE, VSCALE, VSETALL, and VUNITIZE.

Here is the call graph for this function:

void rt_hlf_print register const struct soltab stp  ) 
 

R T _ H L F _ P R I N T

Definition at line 129 of file g_half.c.

References bu_log(), half_specific::half_eqn, HALF_NULL, half_specific::half_Xbase, half_specific::half_Ybase, and VPRINT.

Here is the call graph for this function:

int rt_hlf_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ H L F _ S H O T

Function - Shoot a ray at a HALFSPACE

Algorithm - The intersection distance is computed.

Returns - 0 MISS >0 HIT

Definition at line 158 of file g_half.c.

References FAST, half_specific::half_eqn, INFINITY, LOCAL, NEAR_ZERO, soltab::st_specific, and VDOT.

void rt_hlf_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R T _ H L F _ V S H O T

This is the Becker vector version

Definition at line 212 of file g_half.c.

References FAST, half_specific::half_eqn, hit::hit_dist, INFINITY, LOCAL, xray::r_dir, xray::r_pt, RT_HALF_SEG_MISS, seg::seg_in, seg::seg_out, seg::seg_stp, and VDOT.

void rt_hlf_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ H L F _ N O R M

Given ONE ray distance, return the normal and entry/exit point. The normal is already filled in.

Definition at line 267 of file g_half.c.

References bu_log(), FAST, half_specific::half_eqn, INFINITY, RT_CK_RAY, RT_CK_SOLTAB, soltab::st_specific, VJOIN1, VMOVE, and VSETALL.

Here is the call graph for this function:

void rt_hlf_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ H L F _ C U R V E

Return the "curvature" of the halfspace. Pick a principle direction orthogonal to normal, and indicate no curvature.

Definition at line 303 of file g_half.c.

References bn_vec_ortho(), half_specific::half_eqn, and soltab::st_specific.

Here is the call graph for this function:

void rt_hlf_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ H L F _ U V

For a hit on a face of an HALF, return the (u,v) coordinates of the hit point. 0 <= u,v <= 1. u extends along the Xbase direction v extends along the "Ybase" direction Note that a "toroidal" map is established, varying each from 0 up to 1 and then back down to 0 again.

Definition at line 323 of file g_half.c.

References application::a_diverge, application::a_rbeam, bu_log(), FAST, half_specific::half_Xbase, half_specific::half_Ybase, INFINITY, LOCAL, RT_G_DEBUG, rt_pr_hit(), soltab::st_center, soltab::st_specific, VDOT, VPRINT, and VSUB2.

Here is the call graph for this function:

void rt_hlf_free struct soltab stp  ) 
 

R T _ H L F _ F R E E

Definition at line 391 of file g_half.c.

References bu_free(), and soltab::st_specific.

Here is the call graph for this function:

int rt_hlf_class register const struct soltab stp,
const fastf_t min,
const fastf_t max,
const struct bn_tol tol
 

R T _ H L F _ C L A S S

Classify this halfspace against a bounding RPP. Since this is an infinite solid, it is very important that this function properly.

Returns - BN_CLASSIFY_INSIDE BN_CLASSIFY_OVERLAPPING BN_CLASSIFY_OUTSIDE

Definition at line 412 of file g_half.c.

References bn_hlf_class(), bu_log(), half_specific::half_eqn, and HALF_NULL.

Here is the call graph for this function:

int rt_hlf_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ H L F _ P L O T

The representation of a halfspace is an OUTWARD pointing normal vector, and the distance of the plane from the origin.

Drawing a halfspace is difficult when using a finite display. Drawing the boundary plane is hard enough. We just make a cross in the plane, with the outward normal drawn shorter.

Definition at line 437 of file g_half.c.

References bn_vec_perp(), BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, rt_half_internal::eqn, rt_db_internal::idb_ptr, RT_ADD_VLIST, RT_CK_DB_INTERNAL, RT_HALF_CK_MAGIC, VADD2, VCROSS, VSCALE, VSUB2, and VUNITIZE.

Here is the call graph for this function:

int rt_hlf_xform struct rt_db_internal op,
const mat_t  mat,
struct rt_db_internal ip,
int  free,
struct db_i dbip,
struct resource resp
 

H A L F _ X F O R M

Returns - -1 failure 0 success

Definition at line 491 of file g_half.c.

References bu_log(), ELEMENTS_PER_VECT, rt_half_internal::eqn, rt_db_internal::idb_ptr, MAGNITUDE, MAT4X3PNT, MAT4X3VEC, NEAR_ZERO, RT_CK_DB_INTERNAL, rt_db_free_internal(), RT_HALF_CK_MAGIC, SMALL, VDOT, and VSCALE.

Here is the call graph for this function:

int rt_hlf_import struct rt_db_internal ip,
const struct bu_external ep,
const fastf_t mat,
const struct db_i dbip
 

H A L F _ I M P O R T

Returns - -1 failure 0 success

Definition at line 552 of file g_half.c.

References BU_CK_EXTERNAL, bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, ELEMENTS_PER_VECT, rt_half_internal::eqn, bu_external::ext_buf, ID_HALF, ID_SOLID, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_half_internal::magic, MAGNITUDE, MAT4X3PNT, MAT4X3VEC, NEAR_ZERO, RT_CK_DB_INTERNAL, rt_fastf_float(), RT_HALF_INTERNAL_MAGIC, record::s, record::solidrec::s_values, SMALL, record::u_id, VDOT, and VSCALE.

Here is the call graph for this function:

int rt_hlf_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ H L F _ E X P O R T

Definition at line 611 of file g_half.c.

References bu_calloc(), BU_CK_EXTERNAL, rt_half_internal::eqn, bu_external::ext_buf, bu_external::ext_nbytes, HALFSPACE, ID_HALF, ID_SOLID, rt_db_internal::idb_ptr, RT_CK_DB_INTERNAL, RT_HALF_CK_MAGIC, record::s, record::solidrec::s_id, record::solidrec::s_type, record::solidrec::s_values, and VMOVE.

Here is the call graph for this function:

int rt_hlf_import5 struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ H L F _ I M P O R T 5

Definition at line 638 of file g_half.c.

References BU_ASSERT_LONG, BU_CK_EXTERNAL, bu_log(), bu_malloc(), DB5_MAJORTYPE_BRLCAD, rt_half_internal::eqn, bu_external::ext_buf, bu_external::ext_nbytes, ID_HALF, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, rt_half_internal::magic, MAGNITUDE, MAT4X3PNT, MAT4X3VEC, NEAR_ZERO, ntohd(), RT_CK_DB_INTERNAL, RT_HALF_INTERNAL_MAGIC, SIZEOF_NETWORK_DOUBLE, SMALL, VDOT, and VSCALE.

Here is the call graph for this function:

int rt_hlf_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ H A L F _ E X P O R T 5

Definition at line 693 of file g_half.c.

References BU_CK_EXTERNAL, bu_malloc(), rt_half_internal::eqn, bu_external::ext_buf, bu_external::ext_nbytes, htond(), ID_HALF, rt_db_internal::idb_ptr, RT_CK_DB_INTERNAL, RT_HALF_CK_MAGIC, and SIZEOF_NETWORK_DOUBLE.

Here is the call graph for this function:

int rt_hlf_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

R T _ H L F _ D E S C R I B E

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 728 of file g_half.c.

References bu_vls_strcat(), rt_db_internal::idb_ptr, INTCLAMP, RT_HALF_CK_MAGIC, and V3INTCLAMPARGS.

Here is the call graph for this function:

void rt_hlf_ifree struct rt_db_internal ip  ) 
 

R T _ H L F _ I F R E E

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

Definition at line 751 of file g_half.c.

References bu_free(), GENPTR_NULL, rt_db_internal::idb_ptr, and RT_CK_DB_INTERNAL.

Here is the call graph for this function:

int rt_hlf_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ H L F _ T E S S

Definition at line 762 of file g_half.c.

References rt_db_internal::idb_ptr, RT_CK_DB_INTERNAL, and RT_HALF_CK_MAGIC.

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:

int rt_hf_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R T _ H F _ P R E P

Given a pointer to a GED database record, and a transformation matrix, determine if this is a valid HF, and if so, precompute various terms of the formula.

Returns - 0 HF is OK !0 Error in description

Implicit return - A struct hf_specific is created, and it's address is stored in stp->st_specific for use by hf_shot().

Definition at line 228 of file g_hf.c.

References bu_mapped_file::apbuf, bu_free(), BU_GETSTRUCT, bu_log(), bu_semaphore_acquire(), bu_semaphore_release(), rt_hf_internal::file2mm, height, hf_specific::hf_file2mm, hf_specific::hf_max, hf_specific::hf_min, hf_specific::hf_mp, hf_specific::hf_N, hf_specific::hf_n, hf_specific::hf_shorts, hf_specific::hf_V, hf_specific::hf_VO, hf_specific::hf_w, hf_specific::hf_X, hf_specific::hf_Xlen, hf_specific::hf_Y, hf_specific::hf_Ylen, rt_db_internal::idb_ptr, rt_hf_internal::mp, rt_hf_internal::n, bn_tol::perp, RT_CK_DB_INTERNAL, RT_HF_CK_MAGIC, RT_SEM_MODEL, rt_i::rti_tol, rt_hf_internal::shorts, soltab::st_specific, bu_mapped_file::uses, rt_hf_internal::v, VCROSS, VDOT, VJOIN2, VMOVE, 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:

void rt_hf_print register const struct soltab stp  ) 
 

R T _ H F _ P R I N T

Definition at line 371 of file g_hf.c.

References bu_log(), hf_specific::hf_N, hf_specific::hf_V, hf_specific::hf_X, hf_specific::hf_Xlen, hf_specific::hf_Y, hf_specific::hf_Ylen, and VPRINT.

Here is the call graph for this function:

int rt_hf_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R T _ H T F _ S H O T

Intersect a ray with a height field. If an intersection occurs, a struct seg will be acquired and filled in.

Returns - 0 MISS >0 HIT

Definition at line 786 of file g_hf.c.

References bzero, FAST, hf_specific::hf_N, hf_specific::hf_V, hf_specific::hf_VO, hf_specific::hf_X, hf_specific::hf_Y, INFINITY, LOCAL, MAXHITS, soltab::st_specific, VDOT, VMOVE, and VREVERSE.

void rt_hf_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R T _ H F _ N O R M

Given ONE ray distance, return the normal and entry/exit point.

Definition at line 1564 of file g_hf.c.

References hf_specific::hf_N, hf_specific::hf_X, hf_specific::hf_Y, soltab::st_specific, VJOIN1, VMOVE, VREVERSE, and VUNITIZE.

void rt_hf_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R T _ H F _ C U R V E

Return the curvature of the hf.

Definition at line 1608 of file g_hf.c.

References bn_vec_ortho().

Here is the call graph for this function:

void rt_hf_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R T _ H F _ U V

For a hit on the surface of an hf, return the (u,v) coordinates of the hit point, 0 <= u,v <= 1. u = azimuth v = elevation

Definition at line 1625 of file g_hf.c.

References application::a_diverge, application::a_rbeam, hf_specific::hf_V, hf_specific::hf_X, hf_specific::hf_Xlen, hf_specific::hf_Y, hf_specific::hf_Ylen, soltab::st_specific, VDOT, VSUB2, VUNITIZE, X, and Y.

void rt_hf_free register struct soltab stp  ) 
 

R T _ H F _ F R E E

Definition at line 1656 of file g_hf.c.

References bu_close_mapped_file(), bu_free(), and hf_specific::hf_mp.

Here is the call graph for this function:

int rt_hf_class void   ) 
 

R T _ H F _ C L A S S

Definition at line 1672 of file g_hf.c.

int rt_hf_plot struct bu_list vhead,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ H F _ P L O T

Definition at line 1681 of file g_hf.c.

References bu_mapped_file::apbuf, BN_VLIST_LINE_DRAW, BN_VLIST_LINE_MOVE, rt_hf_internal::file2mm, HF_GET, rt_db_internal::idb_ptr, LOCAL, rt_hf_internal::mp, rt_hf_internal::n, NULL, RT_ADD_VLIST, RT_CK_DB_INTERNAL, RT_HF_CK_MAGIC, rt_hf_internal::shorts, start, rt_hf_internal::v, VCROSS, VJOIN1, VJOIN2, VSCALE, rt_hf_internal::w, rt_hf_internal::x, rt_hf_internal::xlen, rt_hf_internal::y, rt_hf_internal::ylen, and rt_hf_internal::zscale.

int rt_hf_tess struct nmgregion **  r,
struct model m,
struct rt_db_internal ip,
const struct rt_tess_tol ttol,
const struct bn_tol tol
 

R T _ H F _ T E S S

Returns - -1 failure 0 OK. *r points to nmgregion that holds this tessellation.

Definition at line 1932 of file g_hf.c.

References rt_db_internal::idb_ptr, LOCAL, RT_CK_DB_INTERNAL, and RT_HF_CK_MAGIC.

int rt_hf_import struct rt_db_internal ip,
const struct bu_external ep,
register const fastf_t mat,
const struct db_i dbip
 

R T _ H F _ I M P O R T

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

Definition at line 1950 of file g_hf.c.

References bu_mapped_file::apbuf, bu_mapped_file::apbuflen, bu_calloc(), BU_CK_EXTERNAL, bu_cv_cookie(), bu_cv_itemlen(), bu_cv_optimize(), bu_cv_w_cookie(), bu_free(), bu_log(), bu_malloc(), bu_open_mapped_file(), BU_SEM_SYSCALL, bu_semaphore_acquire(), bu_semaphore_release(), bu_struct_parse(), bu_vls_addr(), bu_vls_free(), bu_vls_gets(), bu_vls_init(), bu_vls_strcat(), bu_vls_strcpy(), bu_mapped_file::buf, bu_mapped_file::buflen, DB5_MAJORTYPE_BRLCAD, DBID_STRSOL, bu_external::ext_buf, rt_hf_internal::file2mm, rt_hf_internal::fmt, ID_HF, ID_NULL, rt_db_internal::idb_major_type, rt_db_internal::idb_meth, rt_db_internal::idb_ptr, LOCAL, rt_hf_internal::magic, MAT4X3PNT, MAT4X3VEC, rt_hf_internal::mp, NULL, perror(), RT_CK_DB_INTERNAL, rt_hf_cparse, RT_HF_INTERNAL_MAGIC, rt_hf_parse, rt_hf_internal::shorts, record::ss, record::strsol::ss_args, record::u_id, rt_hf_internal::v, VMOVE, VSET, VSETALL, VUNITIZE, rt_hf_internal::x, rt_hf_internal::xlen, rt_hf_internal::y, rt_hf_internal::ylen, and rt_hf_internal::zscale.

Here is the call graph for this function:

int rt_hf_export struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

R T _ H F _ E X P O R T

The name is added by the caller, in the usual place.

The meaning of the export here is slightly different than that of most other solids. The cfile and dfile are not modified, only changes to the string solid parameters are placed back into the .g file. Note that any parameters taken from a cfile are included in the new string solid. This isn't a problem, because if the cfile is changed (perhaps to substitute a different resolution height field of the same location in space), it's new parameters will override those stored in the string solid (including the dfile name).

Definition at line 2119 of file g_hf.c.

References bu_calloc(), BU_CK_EXTERNAL, bu_vls_addr(), bu_vls_free(), bu_vls_init(), bu_vls_struct_print(), DB_SS_LEN, DB_SS_NGRAN, DBID_STRSOL, bu_external::ext_buf, bu_external::ext_nbytes, ID_HF, rt_db_internal::idb_ptr, NAMESIZE, RT_CK_DB_INTERNAL, RT_HF_CK_MAGIC, rt_hf_parse, record::s, record::solidrec::s_id, record::ss, record::strsol::ss_args, record::strsol::ss_keyword, rt_hf_internal::xlen, rt_hf_internal::ylen, and rt_hf_internal::zscale.

Here is the call graph for this function:

int rt_hf_import5 struct rt_db_internal ip,
const struct bu_external ep,
const fastf_t mat,
const struct db_i dbip
 

Definition at line 2156 of file g_hf.c.

References bu_log().

Here is the call graph for this function:

int rt_hf_export5 struct bu_external ep,
const struct rt_db_internal ip,
double  local2mm,
const struct db_i dbip
 

Definition at line 2165 of file g_hf.c.

References bu_log().

Here is the call graph for this function:

int rt_hf_describe struct bu_vls str,
const struct rt_db_internal ip,
int  verbose,
double  mm2local
 

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

Make human-readable formatted presentation of this solid. First line describes type of solid. Additional lines are indented one tab, and give parameter values.

Definition at line 2181 of file g_hf.c.

References BU_CK_VLS, bu_vls_printf(), bu_vls_strcat(), bu_vls_struct_print(), rt_db_internal::idb_ptr, RT_HF_CK_MAGIC, and rt_hf_parse.

Here is the call graph for this function:

void rt_hf_ifree struct rt_db_internal ip  ) 
 

R T _ H F _ I F R E E

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

Definition at line 2203 of file g_hf.c.

References BU_CK_MAPPED_FILE, bu_close_mapped_file(), bu_free(), GENPTR_NULL, rt_db_internal::idb_ptr, rt_hf_internal::magic, rt_hf_internal::mp, RT_CK_DB_INTERNAL, and RT_HF_CK_MAGIC.

Here is the call graph for this function:

int rt_rec_prep struct soltab stp,
struct rt_db_internal ip,
struct rt_i rtip
 

R E C _ P R E P

Given a pointer to a GED database record, and a transformation matrix, determine if this is a valid REC, and if so, precompute various terms of the formulas.

Returns - 0 REC is OK !0 Error in description

Implicit return - A struct rec_specific is created, and it's address is stored in stp->st_specific for use by rt_rec_shot(). If the TGC is really an REC, stp->st_id is modified to ID_REC.

Definition at line 191 of file g_rec.c.

References rt_tgc_internal::a, rt_tgc_internal::b, bn_mat_mul(), bn_mat_trn(), BU_GETSTRUCT, rt_tgc_internal::c, rt_tgc_internal::d, rt_tgc_internal::h, ID_REC, rt_db_internal::idb_ptr, LOCAL, MAGSQ, MAT3X3VEC, MAT_IDN, NEAR_ZERO, R, rec_specific::rec_A, rec_specific::rec_B, rec_specific::rec_Hunit, rec_specific::rec_iAsq, rec_specific::rec_iBsq, rec_specific::rec_invRoS, rec_specific::rec_SoR, rec_specific::rec_V, RT_DOT_TOL, RT_LEN_TOL, RT_TGC_CK_MAGIC, SMALL, soltab::st_aradius, soltab::st_bradius, soltab::st_center, soltab::st_id, soltab::st_max, soltab::st_meth, soltab::st_min, soltab::st_specific, rt_tgc_internal::v, VDOT, VMOVE, VSCALE, VSET, VSUB2, VUNITIZE, X, Y, and Z.

Referenced by rt_tgc_prep().

Here is the call graph for this function:

void rt_rec_print register const struct soltab stp  ) 
 

R E C _ P R I N T

Definition at line 382 of file g_rec.c.

References bn_mat_print(), rec_specific::rec_Hunit, rec_specific::rec_invRoS, rec_specific::rec_SoR, rec_specific::rec_V, and VPRINT.

Here is the call graph for this function:

int rt_rec_shot struct soltab stp,
register struct xray rp,
struct application ap,
struct seg seghead
 

R E C _ S H O T

Intersect a ray with a right elliptical cylinder, where all constant terms have been precomputed by rt_rec_prep(). If an intersection occurs, a struct seg will be acquired and filled in.

Returns - 0 MISS >0 HIT

Definition at line 411 of file g_rec.c.

References application::a_resource, application::a_rt_i, BU_LIST_INSERT, bu_log(), DEBUG_ARB8, bn_tol::dist, FAST, seg::l, LOCAL, MAT4X3VEC, NEAR_ZERO, REC_NORM_BODY, REC_NORM_BOT, REC_NORM_TOP, rec_specific::rec_SoR, rec_specific::rec_V, RT_G_DEBUG, RT_GET_SEG, RT_HIT_MAGIC, rt_i::rti_tol, seg::seg_in, seg::seg_out, seg::seg_stp, SMALL, soltab::st_specific, VJOIN1, VSUB2, X, Y, and Z.

Here is the call graph for this function:

void rt_rec_vshot struct soltab **  stp,
struct xray **  rp,
struct seg segp,
int  n,
struct application ap
 

R E C _ V S H O T

This is the Becker vector version

Definition at line 579 of file g_rec.c.

References FAST, hit::hit_dist, hit::hit_surfno, hit::hit_vpriv, LOCAL, MAT4X3VEC, NEAR_ZERO, xray::r_dir, REC_NORM_BODY, REC_NORM_BOT, REC_NORM_TOP, rec_specific::rec_SoR, rec_specific::rec_V, seg::seg_in, SEG_MISS, seg::seg_out, seg::seg_stp, SMALL, VJOIN1, VMOVE, VSUB2, X, Y, and Z.

void rt_rec_norm register struct hit hitp,
struct soltab stp,
register struct xray rp
 

R E C _ N O R M

Given ONE ray distance, return the normal and entry/exit point. hit_surfno is a flag indicating if normal needs to be computed or not.

Definition at line 704 of file g_rec.c.

References bu_log(), MAT4X3VEC, rec_specific::rec_Hunit, rec_specific::rec_invRoS, REC_NORM_BODY, REC_NORM_BOT, REC_NORM_TOP, soltab::st_specific, VJOIN1, VMOVE, VREVERSE, VUNITIZE, and Z.

Here is the call graph for this function:

void rt_rec_curve register struct curvature cvp,
register struct hit hitp,
struct soltab stp
 

R E C _ C U R V E

Return the "curvature" of the cylinder. If an endplate, pick a principle direction orthogonal to the normal, and indicate no curvature. Otherwise, compute curvature. Normal must have been computed before calling this routine.

Definition at line 739 of file g_rec.c.

References bn_vec_ortho(), bu_log(), rec_specific::rec_A, rec_specific::rec_B, rec_specific::rec_Hunit, rec_specific::rec_iAsq, rec_specific::rec_iBsq, REC_NORM_BODY, REC_NORM_BOT, REC_NORM_TOP, rec_specific::rec_V, soltab::st_specific, VDOT, VMOVE, and VSUB2.

Here is the call graph for this function:

void rt_rec_uv struct application ap,
struct soltab stp,
register struct hit hitp,
register struct uvcoord uvp
 

R E C _ U V

For a hit on the surface of an REC, return the (u,v) coordinates of the hit point, 0 <= u,v <= 1.

u is the rotation around the cylinder, and v is the displacement along H.

Definition at line 780 of file g_rec.c.

References bn_inv2pi, FAST, LOCAL, MAT4X3VEC, REC_NORM_BODY, REC_NORM_BOT, REC_NORM_TOP, rec_specific::rec_SoR, rec_specific::rec_V, soltab::st_specific, VSUB2, X, Y, and Z.

void rt_rec_free struct soltab stp  ) 
 

R E C _ F R E E

Definition at line 846 of file g_rec.c.

References bu_free(), and soltab::st_specific.

Here is the call graph for this function:

int rt_rec_class void   ) 
 

Definition at line 855 of file g_rec.c.


Variable Documentation

const struct bu_structparse rt_arb_parse[]
 

Initial value:

 {
    { "%f", 3, "V1", bu_offsetof(struct rt_arb_internal, pt[0][X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "V2", bu_offsetof(struct rt_arb_internal, pt[1][X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "V3", bu_offsetof(struct rt_arb_internal, pt[2][X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "V4", bu_offsetof(struct rt_arb_internal, pt[3][X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "V5", bu_offsetof(struct rt_arb_internal, pt[4][X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "V6", bu_offsetof(struct rt_arb_internal, pt[5][X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "V7", bu_offsetof(struct rt_arb_internal, pt[6][X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "V8", bu_offsetof(struct rt_arb_internal, pt[7][X]), BU_STRUCTPARSE_FUNC_NULL },
    { {'\0','\0','\0','\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL }
}

Definition at line 140 of file g_arb.c.

const int rt_arb_faces[5][24]
 

Initial value:

 {
    {0,1,2,3, 0,1,4,5, 1,2,4,5, 0,2,4,5, -1,-1,-1,-1, -1,-1,-1,-1},     
    {0,1,2,3, 4,0,1,5, 4,1,2,5, 4,2,3,5, 4,3,0,5, -1,-1,-1,-1},         
    {0,1,2,3, 1,2,4,6, 0,4,6,3, 4,1,0,5, 6,2,3,7, -1,-1,-1,-1},         
    {0,1,2,3, 4,5,6,7, 0,3,4,7, 1,2,6,5, 0,1,5,4, 3,2,6,4},             
    {0,1,2,3, 4,5,6,7, 0,4,7,3, 1,2,6,5, 0,1,5,4, 3,2,6,7},             
}

Definition at line 153 of file g_arb.c.

const int rt_arb_planes[5][24]
 

Initial value:

 {
        {0,1,3, 0,1,2, 0,2,3, 0,1,3, 1,2,3, 1,2,3, 1,2,3, 1,2,3},       
        {0,1,4, 0,1,2, 0,2,3, 0,3,4, 1,2,4, 1,2,4, 1,2,4, 1,2,4},       
        {0,2,3, 0,1,3, 0,1,4, 0,2,4, 1,2,3, 1,2,3, 1,2,4, 1,2,4},       
        {0,2,4, 0,3,4, 0,3,5, 0,2,5, 1,4,5, 1,3,4, 1,3,5, 1,2,4},       
        {0,2,4, 0,3,4, 0,3,5, 0,2,5, 1,2,4, 1,3,4, 1,3,5, 1,2,5},       
}

Definition at line 1736 of file g_arb.c.

short earb8[12][18]
 

Initial value:

 {
        {0,1, 2,3, 0,0,1,2, 4,0,1,4, -1,0,0,0, 3,5},    
        {1,2, 4,5, 0,0,1,2, 3,1,2,5, -1,0,0,0, 3,6},    
        {2,3, 3,2, 0,0,2,3, 5,2,3,6, -1,0,0,0, 1,7},    
        {0,3, 4,5, 0,0,1,3, 2,0,3,4, -1,0,0,0, 2,7},    
        {0,4, 0,1, 2,0,4,3, 4,0,1,4, -1,0,0,0, 7,5},    
        {1,5, 0,1, 4,0,1,5, 3,1,2,5, -1,0,0,0, 4,6},    
        {4,5, 2,3, 4,0,5,4, 1,4,5,6, -1,0,0,0, 1,7},    
        {5,6, 4,5, 3,1,5,6, 1,4,5,6, -1,0,0,0, 2,7},    
        {6,7, 3,2, 5,2,7,6, 1,4,6,7, -1,0,0,0, 3,4},    
        {4,7, 4,5, 2,0,7,4, 1,4,5,7, -1,0,0,0, 3,6},    
        {2,6, 0,1, 3,1,2,6, 5,2,3,6, -1,0,0,0, 5,7},    
        {3,7, 0,1, 2,0,3,7, 5,2,3,7, -1,0,0,0, 4,6},    
}
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.

short earb7[12][18]
 

Initial value:

 {
        {0,1, 2,3, 0,0,1,2, 4,0,1,4, -1,0,0,0, 3,5},    
        {1,2, 4,5, 0,0,1,2, 3,1,2,5, -1,0,0,0, 3,6},    
        {2,3, 3,2, 0,0,2,3, 5,2,3,6, -1,0,0,0, 1,4},    
        {0,3, 4,5, 0,0,1,3, 2,0,3,4, -1,0,0,0, 2,-1},   
        {0,4, 0,5, 4,0,5,4, 2,0,3,4, 1,4,5,6, 1,-1},    
        {1,5, 0,1, 4,0,1,5, 3,1,2,5, -1,0,0,0, 4,6},    
        {4,5, 5,3, 2,0,3,4, 4,0,5,4, 1,4,5,6, 1,-1},    
        {5,6, 4,5, 3,1,6,5, 1,4,5,6, -1,0,0,0, 2, -1},  
        {2,6, 0,1, 5,2,3,6, 3,1,2,6, -1,0,0,0, 4,5},    
        {4,6, 4,3, 2,0,3,4, 5,3,4,6, 1,4,5,6, 2,-1},    
        {3,4, 0,1, 4,0,1,4, 2,0,3,4, 5,2,3,4, 5,6},     
        {-1,-1, -1,-1, 5,2,3,4, 4,0,1,4, 8,2,1,-1, 6,5},        
}

Definition at line 1937 of file g_arb.c.

short earb6[10][18]
 

Initial value:

 {
        {0,1, 2,1, 3,0,1,4, 0,0,1,2, -1,0,0,0, 3,-1},   
        {1,2, 3,4, 1,1,2,5, 0,0,1,2, -1,0,0,0, 3,4},    
        {2,3, 1,2, 4,2,3,5, 0,0,2,3, -1,0,0,0, 1,-1},   
        {0,3, 3,4, 2,0,3,5, 0,0,1,3, -1,0,0,0, 4,2},    
        {0,4, 0,1, 3,0,1,4, 2,0,3,4, -1,0,0,0, 6,-1},   
        {1,4, 0,2, 3,0,1,4, 1,1,2,4, -1,0,0,0, 6,-1},   
        {2,6, 0,2, 4,6,2,3, 1,1,2,6, -1,0,0,0, 4,-1},   
        {3,6, 0,1, 4,6,2,3, 2,0,3,6, -1,0,0,0, 4,-1},   
        {-1,-1, -1,-1, 2,0,3,4, 1,1,2,4, 3,0,1,4, 6,-1},
        {-1,-1, -1,-1, 2,0,3,6, 1,1,2,6, 4,2,3,6, 4,-1},
}

Definition at line 1953 of file g_arb.c.

short earb5[9][18]
 

Initial value:

 {
        {0,1, 4,2, 0,0,1,2, 1,0,1,4, -1,0,0,0, 3,-1},   
        {1,2, 1,3, 0,0,1,2, 2,1,2,4, -1,0,0,0, 3,-1},   
        {2,3, 2,4, 0,0,2,3, 3,2,3,4, -1,0,0,0, 1,-1},   
        {0,3, 1,3, 0,0,1,3, 4,0,3,4, -1,0,0,0, 2,-1},   
        {0,4, 0,2, 9,0,0,0, 9,0,0,0, 9,0,0,0, -1,-1},   
        {1,4, 0,3, 9,0,0,0, 9,0,0,0, 9,0,0,0, -1,-1},   
        {2,4, 0,4, 9,0,0,0, 9,0,0,0, 9,0,0,0, -1,-1},   
        {3,4, 0,1, 9,0,0,0, 9,0,0,0, 9,0,0,0, -1,-1},   
        {-1,-1, -1,-1, 9,0,0,0, 9,0,0,0, 9,0,0,0, -1,-1},       
}

Definition at line 1967 of file g_arb.c.

short earb4[5][18]
 

Initial value:

 {
        {-1,-1, -1,-1, 9,0,0,0, 9,0,0,0, 9,0,0,0, -1,-1},       
        {-1,-1, -1,-1, 9,0,0,0, 9,0,0,0, 9,0,0,0, -1,-1},       
        {-1,-1, -1,-1, 9,0,0,0, 9,0,0,0, 9,0,0,0, -1,-1},       
        {-1,-1, -1,-1, 9,0,0,0, 9,0,0,0, 9,0,0,0, -1,-1},       
        {-1,-1, -1,-1, 9,0,0,0, 9,0,0,0, 9,0,0,0, -1,-1},       
}

Definition at line 1980 of file g_arb.c.

int rt_bot_minpieces
 

Definition at line 67 of file g_bot.c.

int rt_bot_minpieces = RT_DEFAULT_MINPIECES
 

Definition at line 67 of file g_bot.c.

int rt_bot_tri_per_piece = RT_DEFAULT_TRIS_PER_PIECE
 

Definition at line 68 of file g_bot.c.

Referenced by rt_tcl_setup().

const struct bu_structparse rt_cline_parse[]
 

Initial value:

 {
        { "%f", 3, "V", RT_CLINE_O( v ),  BU_STRUCTPARSE_FUNC_NULL },
        { "%f", 3, "H", RT_CLINE_O( h ),  BU_STRUCTPARSE_FUNC_NULL },
        { "%f", 1, "r", RT_CLINE_O( radius ), BU_STRUCTPARSE_FUNC_NULL },
        { "%f", 1, "t", RT_CLINE_O( thickness ), BU_STRUCTPARSE_FUNC_NULL },
        { {'\0','\0','\0','\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL }
        }

Definition at line 69 of file g_cline.c.

fastf_t rt_cline_radius = -1.0
 

Definition at line 78 of file g_cline.c.

const struct bu_structparse rt_dsp_parse[]
 

Initial value:

 {
    {"%S",      1, "file", DSP_O(dsp_name), hook_file },
    {"%i",      1, "sm", DSP_O(dsp_smooth), BU_STRUCTPARSE_FUNC_NULL },
    {"%d",      1, "w", DSP_O(dsp_xcnt), BU_STRUCTPARSE_FUNC_NULL },
    {"%d",      1, "n", DSP_O(dsp_ycnt), BU_STRUCTPARSE_FUNC_NULL },
    {"%f",     16, "stom", DSP_AO(dsp_stom), hook_mtos_from_stom },
    {"",        0, (char *)0, 0,        BU_STRUCTPARSE_FUNC_NULL }
}

Definition at line 254 of file g_dsp.c.

Referenced by rt_dsp_import().

const struct bu_structparse rt_dsp_ptab[]
 

Initial value:

 {
    {"%S",      1, "file", DSP_O(dsp_name), BU_STRUCTPARSE_FUNC_NULL },
    {"%i",      1, "sm", DSP_O(dsp_smooth), BU_STRUCTPARSE_FUNC_NULL },
    {"%d",      1, "w", DSP_O(dsp_xcnt), BU_STRUCTPARSE_FUNC_NULL },
    {"%d",      1, "n", DSP_O(dsp_ycnt), BU_STRUCTPARSE_FUNC_NULL },
    {"%f",     16, "stom", DSP_AO(dsp_stom), BU_STRUCTPARSE_FUNC_NULL },
    {"",        0, (char *)0, 0,        BU_STRUCTPARSE_FUNC_NULL }
}

Definition at line 263 of file g_dsp.c.

Referenced by rt_dsp_export(), rt_dsp_import(), rt_dsp_tcladjust(), and rt_dsp_tclget().

const struct bu_structparse fake_dsp_printab[]
 

Initial value:

 {
    {"%c",  1, "src", DSP_O(dsp_datasrc), hook_verify },
    {"%S",  1, "name", DSP_O(dsp_name), BU_STRUCTPARSE_FUNC_NULL },
    {"%d",  1, "w",  DSP_O(dsp_xcnt),    hook_verify },
    {"%d",  1, "n",  DSP_O(dsp_ycnt),    hook_verify },
    {"%i",  1, "sm", DSP_O(dsp_smooth), BU_STRUCTPARSE_FUNC_NULL },
    {"%c",  1, "cut", DSP_O(dsp_cuttype), hook_verify },
    {"%f", 16, "stom", DSP_AO(dsp_stom), hook_verify },
    {"",    0, (char *)0, 0,             BU_STRUCTPARSE_FUNC_NULL }
}

Definition at line 4040 of file g_dsp.c.

Referenced by rt_dsp_tcladjust(), and rt_dsp_tclget().

const struct bu_structparse rt_ebm_parse[]
 

Initial value:

 {



        {"%s",  RT_EBM_NAME_LEN, "file", bu_offsetofarray(struct rt_ebm_internal, file), BU_STRUCTPARSE_FUNC_NULL },

        {"%d",  1, "w",         RT_EBM_O(xdim),         BU_STRUCTPARSE_FUNC_NULL },
        {"%d",  1, "n",         RT_EBM_O(ydim),         BU_STRUCTPARSE_FUNC_NULL },
        {"%f",  1, "d",         RT_EBM_O(tallness),     BU_STRUCTPARSE_FUNC_NULL },
        {"%f",  16, "mat", bu_offsetofarray(struct rt_ebm_internal, mat), BU_STRUCTPARSE_FUNC_NULL },
        {"",    0, (char *)0, 0,                        BU_STRUCTPARSE_FUNC_NULL }
}

Definition at line 87 of file g_ebm.c.

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

const struct bu_structparse rt_ehy_parse[]
 

Initial value:

 {
    { "%f", 3, "V",   bu_offsetof(struct rt_ehy_internal, ehy_V[X]),  BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "H",   bu_offsetof(struct rt_ehy_internal, ehy_H[X]),  BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "A",   bu_offsetof(struct rt_ehy_internal, ehy_Au[X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 1, "r_1", bu_offsetof(struct rt_ehy_internal, ehy_r1),    BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 1, "r_2", bu_offsetof(struct rt_ehy_internal, ehy_r2),    BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 1, "c",   bu_offsetof(struct rt_ehy_internal, ehy_c),     BU_STRUCTPARSE_FUNC_NULL },
    { {'\0','\0','\0','\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL }
 }

Definition at line 191 of file g_ehy.c.

const struct bu_structparse rt_ell_parse[]
 

Initial value:

 {
    { "%f", 3, "V", bu_offsetof(struct rt_ell_internal, v[X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "A", bu_offsetof(struct rt_ell_internal, a[X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "B", bu_offsetof(struct rt_ell_internal, b[X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "C", bu_offsetof(struct rt_ell_internal, c[X]), BU_STRUCTPARSE_FUNC_NULL },
    { {'\0','\0','\0','\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL }
 }

Definition at line 69 of file g_ell.c.

const struct bu_structparse rt_epa_parse[]
 

Initial value:

 {
    { "%f", 3, "V",   bu_offsetof(struct rt_epa_internal, epa_V[X]),  BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "H",   bu_offsetof(struct rt_epa_internal, epa_H[X]),  BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "A",   bu_offsetof(struct rt_epa_internal, epa_Au[X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 1, "r_1", bu_offsetof(struct rt_epa_internal, epa_r1),    BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 1, "r_2", bu_offsetof(struct rt_epa_internal, epa_r2),    BU_STRUCTPARSE_FUNC_NULL },
    { {'\0','\0','\0','\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL }
}

Definition at line 192 of file g_epa.c.

const struct bu_structparse rt_eto_parse[]
 

Initial value:

 {
    { "%f", 3, "V",   bu_offsetof(struct rt_eto_internal, eto_V[X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "N",   bu_offsetof(struct rt_eto_internal, eto_N[X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 3, "C",   bu_offsetof(struct rt_eto_internal, eto_C[X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 1, "r",   bu_offsetof(struct rt_eto_internal, eto_r),    BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 1, "r_d", bu_offsetof(struct rt_eto_internal, eto_rd),   BU_STRUCTPARSE_FUNC_NULL },
    { {'\0','\0','\0','\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL }
 }

Definition at line 157 of file g_eto.c.

const struct bu_structparse rt_grp_parse[]
 

Initial value:

 {
        { "%f", 3, "V", bu_offsetof(struct rt_grip_internal, center[X]), BU_STRUCTPARSE_FUNC_NULL },
        { "%f", 3, "N", bu_offsetof(struct rt_grip_internal, normal[X]), BU_STRUCTPARSE_FUNC_NULL },
        { "%f", 1, "L", bu_offsetof(struct rt_grip_internal, mag), BU_STRUCTPARSE_FUNC_NULL },
        { {'\0','\0','\0','\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL }
}

Definition at line 50 of file g_grip.c.

const struct bu_structparse rt_hlf_parse[]
 

Initial value:

 {
    { "%f", 3, "N", bu_offsetof(struct rt_half_internal, eqn[X]), BU_STRUCTPARSE_FUNC_NULL },
    { "%f", 1, "d", bu_offsetof(struct rt_half_internal, eqn[3]), BU_STRUCTPARSE_FUNC_NULL },
    { {'\0','\0','\0','\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL }
}

Definition at line 80 of file g_half.c.

const struct bu_structparse rt_hf_parse[]
 

Initial value:

 {
        {"%s",  128,    "cfile",        bu_offsetofarray(struct rt_hf_internal, cfile), BU_STRUCTPARSE_FUNC_NULL},
        {"%s",  128,    "dfile",        bu_offsetofarray(struct rt_hf_internal, dfile), BU_STRUCTPARSE_FUNC_NULL},
        {"%s",  8,      "fmt",          bu_offsetofarray(struct rt_hf_internal, fmt), BU_STRUCTPARSE_FUNC_NULL},
        {"%d",  1,      "w",            HF_O(w),                BU_STRUCTPARSE_FUNC_NULL },
        {"%d",  1,      "n",            HF_O(n),                BU_STRUCTPARSE_FUNC_NULL },
        {"%d",  1,      "shorts",       HF_O(shorts),           BU_STRUCTPARSE_FUNC_NULL },
        {"%f",  1,      "file2mm",      HF_O(file2mm),          BU_STRUCTPARSE_FUNC_NULL },
        {"%f",  3,      "v",            HF_O(v[0]),             BU_STRUCTPARSE_FUNC_NULL },
        {"%f",  3,      "x",            HF_O(x[0]),             BU_STRUCTPARSE_FUNC_NULL },
        {"%f",  3,      "y",            HF_O(y[0]),             BU_STRUCTPARSE_FUNC_NULL },
        {"%f",  1,      "xlen",         HF_O(xlen),             BU_STRUCTPARSE_FUNC_NULL },
        {"%f",  1,      "ylen",         HF_O(ylen),             BU_STRUCTPARSE_FUNC_NULL },
        {"%f",  1,      "zscale",       HF_O(zscale),           BU_STRUCTPARSE_FUNC_NULL },
        {"",    0,      (char *)0,      0,                      BU_STRUCTPARSE_FUNC_NULL }
}

Definition at line 87 of file g_hf.c.

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

const struct bu_structparse rt_hf_cparse[]
 

Initial value:

 {
        {"%s",  128,    "dfile",        bu_offsetofarray(struct rt_hf_internal, dfile), BU_STRUCTPARSE_FUNC_NULL},
        {"%s",  8,      "fmt",          bu_offsetofarray(struct rt_hf_internal, fmt), BU_STRUCTPARSE_FUNC_NULL},
        {"%d",  1,      "w",            HF_O(w),                BU_STRUCTPARSE_FUNC_NULL },
        {"%d",  1,      "n",            HF_O(n),                BU_STRUCTPARSE_FUNC_NULL },
        {"%d",  1,      "shorts",       HF_O(shorts),           BU_STRUCTPARSE_FUNC_NULL },
        {"%f",  1,      "file2mm",      HF_O(file2mm),          BU_STRUCTPARSE_FUNC_NULL },
        {"",    0,      (char *)0,      0,                      BU_STRUCTPARSE_FUNC_NULL }
}

Definition at line 104 of file g_hf.c.

Referenced by rt_hf_import().


Generated on Mon Sep 18 01:25:44 2006 for BRL-CAD by  doxygen 1.4.6