cut.c File Reference

#include "common.h"
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <strings.h>
#include "machine.h"
#include "vmath.h"
#include "raytrace.h"
#include "nmg.h"
#include "plot3.h"
#include "./debug.h"

Include dependency graph for cut.c:

Go to the source code of this file.

Data Structures

struct  cmp_pair

Defines

#define AXIS(depth)   ((depth)%3)
#define CMP(_p1, _p2, _memb, _ind)
#define USE_HIST   0
#define PIECE_BLOCK   512
#define PIECE_BLOCK   512

Functions

HIDDEN int rt_ck_overlap BU_ARGS ((const vect_t min, const vect_t max, const struct soltab *stp, const struct rt_i *rtip))
HIDDEN int rt_ct_box BU_ARGS ((struct rt_i *rtip, union cutter *cutp, int axis, double where, int force))
HIDDEN void rt_ct_optim BU_ARGS ((struct rt_i *rtip, union cutter *cutp, int depth))
HIDDEN void rt_ct_free BU_ARGS ((struct rt_i *rtip, union cutter *cutp))
HIDDEN void rt_ct_release_storage BU_ARGS ((union cutter *cutp))
HIDDEN union cutter *rt_ct_get BU_ARGS ((struct rt_i *rtip))
void rt_plot_cut BU_ARGS ((FILE *fp, struct rt_i *rtip, union cutter *cutp, int lvl))
void rt_pr_cut_info (const struct rt_i *rtip, const char *str)
HIDDEN int rt_ct_old_assess (register union cutter *, register int, double *, double *)
cutterrt_cut_one_axis (struct bu_ptbl *boxes, struct rt_i *rtip, int axis, int min, int max, struct nugridnode *nuginfop)
void rt_cut_optimize_parallel (int cpu, genptr_t arg)
HIDDEN int rt_projXmin_comp BU_ARGS ((const void *p1, const void *p2))
HIDDEN int rt_projXmin_comp (const void *p1, const void *p2)
HIDDEN int rt_projXmax_comp (const void *p1, const void *p2)
HIDDEN int rt_projYmin_comp (const void *p1, const void *p2)
HIDDEN int rt_projYmax_comp (const void *p1, const void *p2)
HIDDEN int rt_projZmin_comp (const void *p1, const void *p2)
HIDDEN int rt_projZmax_comp (const void *p1, const void *p2)
void rt_nugrid_cut (register struct nugridnode *nugnp, register struct boxnode *fromp, struct rt_i *rtip, int just_collect_info, int depth)
int rt_split_mostly_empty_cells (struct rt_i *rtip, union cutter *cutp)
void rt_cut_it (register struct rt_i *rtip, int ncpu)
void rt_cut_extend (register union cutter *cutp, struct soltab *stp, const struct rt_i *rtip)
HIDDEN int rt_ct_plan (struct rt_i *rtip, union cutter *cutp, int depth)
HIDDEN int rt_ct_assess (register union cutter *cutp, register int axis, double *where_p, double *offcenter_p)
HIDDEN int rt_ct_populate_box (union cutter *outp, const union cutter *inp, struct rt_i *rtip)
HIDDEN int rt_ct_box (struct rt_i *rtip, register union cutter *cutp, register int axis, double where, int force)
HIDDEN int rt_ck_overlap (register const fastf_t *min, register const fastf_t *max, register const struct soltab *stp, register const struct rt_i *rtip)
HIDDEN int rt_ct_piececount (const union cutter *cutp)
HIDDEN void rt_ct_optim (struct rt_i *rtip, register union cutter *cutp, int depth)
HIDDEN union cutterrt_ct_get (struct rt_i *rtip)
HIDDEN void rt_ct_release_storage (register union cutter *cutp)
HIDDEN void rt_ct_free (struct rt_i *rtip, register union cutter *cutp)
void rt_pr_cut (register const union cutter *cutp, int lvl)
void rt_fr_cut (struct rt_i *rtip, register union cutter *cutp)
HIDDEN void rt_plot_cut (FILE *fp, struct rt_i *rtip, register union cutter *cutp, int lvl)
HIDDEN void rt_ct_measure (register struct rt_i *rtip, register union cutter *cutp, int depth)
void rt_cut_clean (struct rt_i *rtip)
void remove_from_bsp (struct soltab *stp, union cutter *cutp, struct bn_tol *tol)
void insert_in_bsp (struct soltab *stp, union cutter *cutp)
void fill_out_bsp (struct rt_i *rtip, union cutter *cutp, struct resource *resp, fastf_t bb[6])

Variables

HIDDEN struct cmp_pair pairs []


Detailed Description

Cut space into lots of small boxes (RPPs actually).

Call tree for default path through the code: rt_cut_it() rt_cut_extend() for all solids in model rt_ct_optim() rt_ct_old_assess() rt_ct_box() rt_ct_populate_box() rt_ck_overlap()

Author - Michael John Muuss

Source - SECAD/VLD Computing Consortium, Bldg 394 The U. S. Army Ballistic Research Laboratory Aberdeen Proving Ground, Maryland 21005-5066

Definition in file cut.c.


Define Documentation

#define AXIS depth   )     ((depth)%3)
 

Definition at line 97 of file cut.c.

Referenced by rt_ct_optim().

#define CMP _p1,
_p2,
_memb,
_ind   ) 
 

Value:

(*(const struct soltab **)(_p1))->_memb[_ind] < \
        (*(const struct soltab **)(_p2))->_memb[_ind] ? -1 : \
        (*(const struct soltab **)(_p1))->_memb[_ind] > \
        (*(const struct soltab **)(_p2))->_memb[_ind] ? 1 : 0

Definition at line 193 of file cut.c.

Referenced by rt_projXmax_comp(), rt_projXmin_comp(), rt_projYmax_comp(), rt_projYmin_comp(), rt_projZmax_comp(), and rt_projZmin_comp().

#define USE_HIST   0
 

#define PIECE_BLOCK   512
 

Definition at line 2359 of file cut.c.

Referenced by insert_in_bsp(), and rt_ct_populate_box().

#define PIECE_BLOCK   512
 

Definition at line 2359 of file cut.c.


Function Documentation

HIDDEN int rt_ck_overlap BU_ARGS (const vect_t min, const vect_t max, const struct soltab *stp, const struct rt_i *rtip)   ) 
 

HIDDEN int rt_ct_box BU_ARGS (struct rt_i *rtip, union cutter *cutp, int axis, double where, int force)   ) 
 

HIDDEN void rt_ct_optim BU_ARGS (struct rt_i *rtip, union cutter *cutp, int depth)   ) 
 

HIDDEN void rt_ct_free BU_ARGS (struct rt_i *rtip, union cutter *cutp)   ) 
 

HIDDEN void rt_ct_release_storage BU_ARGS (union cutter *cutp)   ) 
 

HIDDEN union cutter* rt_ct_get BU_ARGS (struct rt_i *rtip)   ) 
 

void rt_plot_cut BU_ARGS (FILE *fp, struct rt_i *rtip, union cutter *cutp, int lvl)   ) 
 

void rt_pr_cut_info const struct rt_i rtip,
const char *  str
 

HIDDEN int rt_ct_old_assess register union cutter ,
register  int,
double *  ,
double * 
 

Definition at line 1623 of file cut.c.

References bu_log(), MAX_FASTF, RT_G_DEBUG, and val.

Referenced by rt_ct_plan().

Here is the call graph for this function:

union cutter* rt_cut_one_axis struct bu_ptbl boxes,
struct rt_i rtip,
int  axis,
int  min,
int  max,
struct nugridnode *  nuginfop
 

Definition at line 111 of file cut.c.

References cutter::bn, cutter::boxnode::bn_len, cutter::boxnode::bn_list, cutter::boxnode::bn_max, cutter::boxnode::bn_maxlen, cutter::boxnode::bn_min, cutter::boxnode::bn_type, bu_calloc(), BU_CK_PTBL, bu_malloc(), bu_ptbl_ins(), cutter::cn, cutter::cutnode::cn_axis, cutter::cutnode::cn_l, cutter::cutnode::cn_point, cutter::cutnode::cn_r, cutter::cutnode::cn_type, CUT_BOXNODE, CUT_CUTNODE, rt_i::mdl_max, rt_i::mdl_min, rt_i::nsolids, RT_CHECK_SOLTAB, rt_ck_overlap(), RT_CK_RTI, RT_VISIT_ALL_SOLTABS_END, RT_VISIT_ALL_SOLTABS_START, and VMOVE.

Referenced by rt_cut_it().

Here is the call graph for this function:

void rt_cut_optimize_parallel int  cpu,
genptr_t  arg
 

Definition at line 171 of file cut.c.

References BU_PTBL_GET, bu_semaphore_acquire(), bu_semaphore_release(), bu_ptbl::end, RT_CK_RTI, rt_ct_optim(), RT_SEM_WORKER, rt_i::rti_cuts_waiting, and Z.

Referenced by rt_cut_it().

Here is the call graph for this function:

HIDDEN int rt_projXmin_comp BU_ARGS (const void *p1, const void *p2)   ) 
 

HIDDEN int rt_projXmin_comp const void *  p1,
const void *  p2
 

Definition at line 208 of file cut.c.

References CMP, and X.

HIDDEN int rt_projXmax_comp const void *  p1,
const void *  p2
 

Definition at line 214 of file cut.c.

References CMP, and X.

HIDDEN int rt_projYmin_comp const void *  p1,
const void *  p2
 

Definition at line 220 of file cut.c.

References CMP, and Y.

HIDDEN int rt_projYmax_comp const void *  p1,
const void *  p2
 

Definition at line 226 of file cut.c.

References CMP, and Y.

HIDDEN int rt_projZmin_comp const void *  p1,
const void *  p2
 

Definition at line 232 of file cut.c.

References CMP, and Z.

HIDDEN int rt_projZmax_comp const void *  p1,
const void *  p2
 

Definition at line 238 of file cut.c.

References CMP, and Z.

void rt_nugrid_cut register struct nugridnode *  nugnp,
register struct boxnode *  fromp,
struct rt_i rtip,
int  just_collect_info,
int  depth
 

Definition at line 260 of file cut.c.

References bu_hist_init(), bu_log(), CUT_NUGRIDNODE, DEBUG_CUT, int, rt_bomb(), RT_G_DEBUG, RT_NU_GFACTOR_DEFAULT, rt_i::rti_nu_gfactor, and rt_i::rti_nugrid_dimlimit.

Referenced by rt_cut_it().

Here is the call graph for this function:

int rt_split_mostly_empty_cells struct rt_i rtip,
union cutter cutp
 

Definition at line 714 of file cut.c.

References cutter::bn, cutter::boxnode::bn_len, cutter::boxnode::bn_list, cutter::boxnode::bn_piecelen, cutter::boxnode::bn_piecelist, cutter::cn, cutter::cutnode::cn_l, cutter::cutnode::cn_r, CUT_BOXNODE, CUT_CUTNODE, cutter::cut_type, bound_rpp::max, MAX_FASTF, bound_rpp::min, rt_piecelist::npieces, rt_piecelist::pieces, soltab::st_max, soltab::st_min, soltab::st_piece_rpps, rt_piecelist::stp, VMAX, VMIN, VREVERSE, and VSETALL.

Referenced by rt_cut_it().

void rt_cut_it register struct rt_i rtip,
int  ncpu
 

Definition at line 836 of file cut.c.

References cutter::bn, cutter::boxnode::bn_len, cutter::boxnode::bn_list, cutter::boxnode::bn_max, cutter::boxnode::bn_maxlen, cutter::boxnode::bn_min, bu_free(), BU_GETUNION, bu_log(), bu_malloc(), bu_parallel(), bu_ptbl_init(), CUT_BOXNODE, CUT_NUGRIDNODE, cutter::cut_type, DEBUG_CUTDETAIL, head, INFINITY, int, rt_bomb(), rt_ct_optim(), rt_cut_extend(), rt_cut_one_axis(), rt_cut_optimize_parallel(), rt_fr_cut(), RT_G_DEBUG, rt_nugrid_cut(), RT_PART_NUBSPT, RT_PART_NUGRID, rt_pr_cut(), rt_split_mostly_empty_cells(), RT_VISIT_ALL_SOLTABS_END, RT_VISIT_ALL_SOLTABS_START, soltab::st_aradius, VMOVE, and Y.

Here is the call graph for this function:

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

Definition at line 998 of file cut.c.

References BU_ASSERT, bu_log(), bu_malloc(), bu_realloc(), CUT_BOXNODE, rt_piecelist::magic, rt_piecelist::npieces, rt_i::nsolids, NULL, rt_piecelist::pieces, RT_CK_RTI, RT_CK_SOLTAB, RT_G_DEBUG, RT_PIECELIST_MAGIC, rt_i::rti_cutlen, soltab::st_npieces, and rt_piecelist::stp.

Here is the call graph for this function:

HIDDEN int rt_ct_plan struct rt_i rtip,
union cutter cutp,
int  depth
 

Definition at line 1073 of file cut.c.

References RT_CK_RTI, rt_ct_assess(), rt_ct_old_assess(), status, X, and Z.

Referenced by rt_ct_optim().

Here is the call graph for this function:

HIDDEN int rt_ct_assess register union cutter cutp,
register int  axis,
double *  where_p,
double *  offcenter_p
 

Definition at line 1132 of file cut.c.

References INFINITY, and val.

Referenced by rt_ct_plan().

HIDDEN int rt_ct_populate_box union cutter outp,
const union cutter inp,
struct rt_i rtip
 

Definition at line 1217 of file cut.c.

References cutter::bn, cutter::boxnode::bn_len, cutter::boxnode::bn_list, cutter::boxnode::bn_max, cutter::boxnode::bn_maxlen, cutter::boxnode::bn_maxpiecelen, cutter::boxnode::bn_min, cutter::boxnode::bn_piecelen, cutter::boxnode::bn_piecelist, bu_free(), bu_malloc(), bu_realloc(), rt_piecelist::magic, bound_rpp::max, bound_rpp::min, rt_piecelist::npieces, NULL, PIECE_BLOCK, rt_piecelist::pieces, rt_ck_overlap(), RT_CK_PIECELIST, RT_CK_SOLTAB, RT_PIECELIST_MAGIC, rt_i::rti_tol, soltab::st_piece_rpps, rt_piecelist::stp, and V3RPP_OVERLAP_TOL.

Referenced by rt_ct_box().

Here is the call graph for this function:

HIDDEN int rt_ct_box struct rt_i rtip,
register union cutter cutp,
register int  axis,
double  where,
int  force
 

Definition at line 1373 of file cut.c.

References cutter::bn, cutter::boxnode::bn_max, cutter::boxnode::bn_min, cutter::boxnode::bn_type, bu_log(), cutter::cn, cutter::cutnode::cn_r, CUT_BOXNODE, CUT_CUTNODE, RT_CK_RTI, rt_ct_free(), rt_ct_get(), rt_ct_populate_box(), rt_ct_release_storage(), RT_G_DEBUG, and VMOVE.

Here is the call graph for this function:

HIDDEN int rt_ck_overlap register const fastf_t min,
register const fastf_t max,
register const struct soltab stp,
register const struct rt_i rtip
 

Definition at line 1446 of file cut.c.

References bu_log(), DEBUG_BOXING, INFINITY, RT_CHECK_SOLTAB, RT_CLASSIFY_OUTSIDE, RT_G_DEBUG, V3RPP_DISJOINT, and VPRINT.

Referenced by rt_ct_populate_box(), and rt_cut_one_axis().

Here is the call graph for this function:

HIDDEN int rt_ct_piececount const union cutter cutp  ) 
 

Definition at line 1482 of file cut.c.

References cutter::bn, cutter::boxnode::bn_len, cutter::boxnode::bn_piecelen, cutter::boxnode::bn_piecelist, BU_ASSERT, CUT_BOXNODE, cutter::cut_type, and rt_piecelist::npieces.

Referenced by rt_ct_measure(), and rt_ct_optim().

HIDDEN void rt_ct_optim struct rt_i rtip,
register union cutter cutp,
int  depth
 

Definition at line 1509 of file cut.c.

References AXIS, bu_log(), CUT_BOXNODE, CUT_CUTNODE, rt_ct_piececount(), rt_ct_plan(), RT_G_DEBUG, rt_i::rti_cutdepth, X, and Z.

Referenced by rt_cut_it(), and rt_cut_optimize_parallel().

Here is the call graph for this function:

HIDDEN union cutter* rt_ct_get struct rt_i rtip  ) 
 

Definition at line 1738 of file cut.c.

References bu_malloc(), bu_malloc_len_roundup(), bu_ptbl_init(), bu_ptbl_ins(), bu_semaphore_acquire(), bu_semaphore_release(), cutter::cut_forw, CUTTER_NULL, bu_ptbl::l, bu_list::magic, RT_CK_RTI, RT_SEM_MODEL, rt_i::rti_busy_cutter_nodes, and rt_i::rti_CutFree.

Referenced by rt_ct_box().

Here is the call graph for this function:

HIDDEN void rt_ct_release_storage register union cutter cutp  ) 
 

Definition at line 1775 of file cut.c.

References bu_free(), CUT_BOXNODE, CUT_CUTNODE, and NULL.

Referenced by rt_ct_box(), rt_ct_free(), and rt_fr_cut().

Here is the call graph for this function:

HIDDEN void rt_ct_free struct rt_i rtip,
register union cutter cutp
 

Definition at line 1829 of file cut.c.

References bu_semaphore_acquire(), bu_semaphore_release(), RT_CK_RTI, rt_ct_release_storage(), RT_SEM_MODEL, and rt_i::rti_CutFree.

Referenced by rt_ct_box(), and rt_fr_cut().

Here is the call graph for this function:

void rt_pr_cut register const union cutter cutp,
int  lvl
 

Definition at line 1848 of file cut.c.

References bu_log(), and CUTTER_NULL.

Here is the call graph for this function:

void rt_fr_cut struct rt_i rtip,
register union cutter cutp
 

Definition at line 1944 of file cut.c.

References bu_log(), CUT_BOXNODE, CUT_NUGRIDNODE, cutter::cut_type, CUTTER_NULL, RT_CK_RTI, rt_ct_free(), rt_ct_release_storage(), rt_fr_cut(), X, Y, and Z.

Here is the call graph for this function:

HIDDEN void rt_plot_cut FILE *  fp,
struct rt_i rtip,
register union cutter cutp,
int  lvl
 

Definition at line 1995 of file cut.c.

References CUT_BOXNODE, CUT_NUGRIDNODE, cutter::cut_type, cutter::nugridnode::nu_grid, cutter::nugn, pd_3line(), pl_color(), RT_CK_RTI, X, Y, and Z.

Here is the call graph for this function:

HIDDEN void rt_ct_measure register struct rt_i rtip,
register union cutter cutp,
int  depth
 

Definition at line 2148 of file cut.c.

References BU_HIST_TALLY, bu_log(), CUT_BOXNODE, CUT_NUGRIDNODE, cutter::nugridnode::nu_grid, cutter::nugn, RT_CK_RTI, rt_ct_piececount(), X, Y, and Z.

Here is the call graph for this function:


Variable Documentation

HIDDEN struct cmp_pair pairs[]
 


Generated on Mon Sep 18 01:25:04 2006 for BRL-CAD by  doxygen 1.4.6