tree.c File Reference

#include "common.h"
#include <stddef.h>
#include <stdio.h>
#include <math.h>
#include <strings.h>
#include "machine.h"
#include "bu.h"
#include "vmath.h"
#include "bn.h"
#include "db.h"
#include "raytrace.h"
#include "./debug.h"
#include "noalias.h"

Include dependency graph for tree.c:

Go to the source code of this file.

Defines

#define ACQUIRE_SEMAPHORE_TREE(_hash)
#define RELEASE_SEMAPHORE_TREE(_hash)

Functions

void rt_tree_kill_dead_solid_refs (union tree *tp)
HIDDEN struct regionrt_getregion (struct rt_i *rtip, register const char *reg_name)
HIDDEN void rt_tree_region_assign (register union tree *tp, register const struct region *regionp)
HIDDEN int rt_gettree_region_start (struct db_tree_state *tsp, struct db_full_path *pathp, const struct rt_comb_internal *combp, genptr_t client_data)
HIDDEN union treert_gettree_region_end (register struct db_tree_state *tsp, struct db_full_path *pathp, union tree *curtree, genptr_t client_data)
HIDDEN struct soltabrt_find_identical_solid (register const matp_t mat, register struct directory *dp, struct rt_i *rtip)
HIDDEN union treert_gettree_leaf (struct db_tree_state *tsp, struct db_full_path *pathp, struct rt_db_internal *ip, genptr_t client_data)
void rt_free_soltab (struct soltab *stp)
int rt_gettrees_muves (struct rt_i *rtip, const char **attrs, int argc, const char **argv, int ncpus)
int rt_gettrees_and_attrs (struct rt_i *rtip, const char **attrs, int argc, const char **argv, int ncpus)
int rt_gettree (struct rt_i *rtip, const char *node)
int rt_gettrees (struct rt_i *rtip, int argc, const char **argv, int ncpus)
int rt_bound_tree (register const union tree *tp, fastf_t *tree_min, fastf_t *tree_max)
void rt_tree_kill_dead_solid_refs (register union tree *tp)
int rt_tree_elim_nops (register union tree *tp, struct resource *resp)
const char * rt_basename (register const char *str)
int rt_rpp_region (struct rt_i *rtip, const char *reg_name, fastf_t *min_rpp, fastf_t *max_rpp)
void rt_fastf_float (register fastf_t *ff, register const dbfloat_t *fp, register int n)
void rt_mat_dbmat (register fastf_t *ff, register const dbfloat_t *dbp)
void rt_dbmat_mat (register dbfloat_t *dbp, register const fastf_t *ff)
soltabrt_find_solid (const struct rt_i *rtip, register const char *name)
void rt_optim_tree (register union tree *tp, struct resource *resp)

Variables

const struct db_tree_state rt_initial_tree_state


Detailed Description

Ray Tracing library database tree walker. Collect and prepare regions and solids for subsequent ray-tracing.

Author - Michael John Muuss

Source - The U. S. Army Research Laboratory Aberdeen Proving Ground, Maryland 21005-5068 USA

Definition in file tree.c.


Define Documentation

#define ACQUIRE_SEMAPHORE_TREE _hash   ) 
 

Value:

switch((_hash)&03)  { \
        case 0: \
                bu_semaphore_acquire( RT_SEM_TREE0 ); \
                break; \
        case 1: \
                bu_semaphore_acquire( RT_SEM_TREE1 ); \
                break; \
        case 2: \
                bu_semaphore_acquire( RT_SEM_TREE2 ); \
                break; \
        default: \
                bu_semaphore_acquire( RT_SEM_TREE3 ); \
                break; \
        }

Definition at line 133 of file tree.c.

Referenced by rt_find_identical_solid(), rt_free_soltab(), and rt_gettree_leaf().

#define RELEASE_SEMAPHORE_TREE _hash   ) 
 

Value:

switch((_hash)&03)  { \
        case 0: \
                bu_semaphore_release( RT_SEM_TREE0 ); \
                break; \
        case 1: \
                bu_semaphore_release( RT_SEM_TREE1 ); \
                break; \
        case 2: \
                bu_semaphore_release( RT_SEM_TREE2 ); \
                break; \
        default: \
                bu_semaphore_release( RT_SEM_TREE3 ); \
                break; \
        }

Definition at line 148 of file tree.c.

Referenced by rt_find_identical_solid(), rt_free_soltab(), and rt_gettree_leaf().


Function Documentation

void rt_tree_kill_dead_solid_refs union tree tp  ) 
 

Referenced by rt_gettrees_muves(), and rt_tree_kill_dead_solid_refs().

HIDDEN struct region * rt_getregion struct rt_i rtip,
register const char *  reg_name
 

Definition at line 1234 of file tree.c.

References BU_LIST_FOR, rt_i::HeadRegion, region::reg_name, REGION_NULL, rt_basename(), and RT_CK_RTI.

Referenced by rt_rpp_region().

Here is the call graph for this function:

HIDDEN void rt_tree_region_assign register union tree tp,
register const struct region regionp
 

Definition at line 1447 of file tree.c.

References OP_GUARD, OP_INTERSECT, OP_NOP, OP_NOT, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XNOP, OP_XOR, rt_bomb(), RT_CK_REGION, and RT_CK_TREE.

Referenced by rt_gettrees_muves().

Here is the call graph for this function:

HIDDEN int rt_gettree_region_start struct db_tree_state tsp,
struct db_full_path pathp,
const struct rt_comb_internal combp,
genptr_t  client_data
 

Definition at line 169 of file tree.c.

References RT_CK_RESOURCE, RT_CK_RTI, rt_i::rti_air_discards, db_tree_state::ts_aircode, db_tree_state::ts_resp, db_tree_state::ts_rtip, and rt_i::useair.

Referenced by rt_gettrees_muves().

HIDDEN union tree* rt_gettree_region_end register struct db_tree_state tsp,
struct db_full_path pathp,
union tree curtree,
genptr_t  client_data
 

Definition at line 200 of file tree.c.

References region::attr_values, bu_calloc(), BU_GETSTRUCT, bu_malloc(), bu_mro_init_with_string(), entry, region::l, bu_list::magic, OP_NOP, region::reg_aircode, region::reg_gmater, region::reg_is_fastgen, region::reg_los, region::reg_regionid, RT_CK_DBI, RT_CK_FULL_PATH, RT_CK_RESOURCE, RT_CK_RTI, RT_CK_TREE, and RT_REGION_MAGIC.

Referenced by rt_gettrees_muves().

Here is the call graph for this function:

HIDDEN struct soltab* rt_find_identical_solid register const matp_t  mat,
register struct directory dp,
struct rt_i rtip
 

Definition at line 364 of file tree.c.

References ACQUIRE_SEMAPHORE_TREE, bn_mat_is_equal(), BU_GETSTRUCT, BU_LIST_FOR, BU_LIST_INSERT, BU_LIST_MAIN_PTR, bu_log(), bu_malloc(), bu_ptbl_init(), bu_semaphore_acquire(), bu_semaphore_release(), directory::d_uses, db_dirhash(), DEBUG_SOLIDS, soltab::l, soltab::l2, bu_list::magic, MAT_COPY, rt_i::nsolids, RELEASE_SEMAPHORE_TREE, RT_CK_DIR, RT_CK_RTI, RT_CK_SOLTAB, RT_G_DEBUG, RT_SEM_STATS, RT_SOLTAB2_MAGIC, RT_SOLTAB_MAGIC, RT_SOLTAB_NULL, rt_i::rti_dont_instance, rt_i::rti_solidheads, rt_i::rti_tol, soltab::st_aradius, soltab::st_bit, soltab::st_dp, soltab::st_matp, soltab::st_regions, soltab::st_rtip, and soltab::st_uses.

Referenced by rt_gettree_leaf().

Here is the call graph for this function:

HIDDEN union tree* rt_gettree_leaf struct db_tree_state tsp,
struct db_full_path pathp,
struct rt_db_internal ip,
genptr_t  client_data
 

Definition at line 494 of file tree.c.

References ACQUIRE_SEMAPHORE_TREE, bn_mat_identity, bn_mat_is_equal(), bu_log(), bu_ptbl_ins(), directory::d_namep, db_dirhash(), DB_FULL_PATH_CUR_DIR, INFINITY, RELEASE_SEMAPHORE_TREE, RT_CK_DB_INTERNAL, RT_CK_DBI, RT_CK_DBTS, RT_CK_FULL_PATH, RT_CK_RESOURCE, RT_CK_RTI, rt_find_identical_solid(), rt_i::rti_add_to_new_solids_list, rt_i::rti_new_solids, rt_i::rti_tol, soltab::st_aradius, soltab::st_id, soltab::st_matp, soltab::st_max, soltab::st_meth, soltab::st_min, soltab::st_uses, TREE_NULL, db_tree_state::ts_dbip, db_tree_state::ts_mat, db_tree_state::ts_resp, db_tree_state::ts_rtip, and VSETALL.

Referenced by rt_gettrees_muves().

Here is the call graph for this function:

int rt_bound_tree register const union tree tp,
fastf_t tree_min,
fastf_t tree_max
 

Definition at line 984 of file tree.c.

References bu_log(), directory::d_namep, INFINITY, OP_INTERSECT, OP_NOP, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XOR, rt_bound_tree(), RT_CK_SOLTAB, RT_CK_TREE, soltab::st_aradius, soltab::st_dp, soltab::st_max, soltab::st_min, VMAX, VMIN, VMOVE, and VSETALL.

Here is the call graph for this function:

void rt_tree_kill_dead_solid_refs register union tree tp  ) 
 

Definition at line 1057 of file tree.c.

References bu_log(), directory::d_namep, OP_GUARD, OP_INTERSECT, OP_NOP, OP_NOT, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XNOP, OP_XOR, RT_CK_SOLTAB, RT_CK_TREE, rt_free_soltab(), RT_G_DEBUG, rt_tree_kill_dead_solid_refs(), SOLTAB_NULL, soltab::st_aradius, and soltab::st_dp.

Here is the call graph for this function:

int rt_tree_elim_nops register union tree tp,
struct resource resp
 

Definition at line 1121 of file tree.c.

References bu_log(), db_free_tree(), OP_GUARD, OP_INTERSECT, OP_NOP, OP_NOT, OP_SOLID, OP_SUBTRACT, OP_UNION, OP_XNOP, OP_XOR, RT_CK_RESOURCE, RT_CK_TREE, RT_FREE_TREE, rt_tree_elim_nops(), tree::tree_node::tb_left, tree::tree_node::tb_right, top(), and tree::tr_b.

Here is the call graph for this function:

const char* rt_basename register const char *  str  ) 
 

Definition at line 1213 of file tree.c.

void rt_fastf_float register fastf_t ff,
register const dbfloat_t fp,
register int  n
 

Definition at line 1282 of file tree.c.

References ELEMENTS_PER_VECT.

Referenced by rt_arb_import(), rt_ell_import(), rt_grp_import(), rt_hlf_import(), rt_superell_import(), rt_tgc_import(), and rt_tor_import().

void rt_mat_dbmat register fastf_t ff,
register const dbfloat_t dbp
 

Definition at line 1299 of file tree.c.

void rt_dbmat_mat register dbfloat_t dbp,
register const fastf_t ff
 

Definition at line 1329 of file tree.c.

Referenced by rt_comb_export4().

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

Definition at line 1361 of file tree.c.

References db_lookup(), DIR_NULL, LOOKUP_QUIET, RT_CHECK_RTI, RT_SOLTAB_NULL, RT_VISIT_ALL_SOLTABS_END, RT_VISIT_ALL_SOLTABS_START, rt_i::rti_dbip, and soltab::st_dp.

Here is the call graph for this function:


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