#include "common.h"
#include <stdio.h>
#include <math.h>
#include <strings.h>
#include "machine.h"
#include "vmath.h"
#include "bu.h"
#include "raytrace.h"
#include "plot3.h"
#include "./debug.h"
Include dependency graph for shoot.c:
Go to the source code of this file.
Defines | |
#define | V3PT_DEPARTING_RPP(_step, _lo, _hi, _pt) PT_DEPARTING_RPP(_step, _lo, _hi, (_pt)[X], (_pt)[Y], (_pt)[Z] ) |
#define | PT_DEPARTING_RPP(_step, _lo, _hi, _px, _py, _pz) |
#define | st sv |
#define | SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; |
Functions | |
void | rt_plot_cell (const union cutter *cutp, const struct rt_shootray_status *ssp, struct bu_list *waiting_segs_hd, struct rt_i *rtip) |
void | rt_res_pieces_init (struct resource *resp, struct rt_i *rtip) |
void | rt_res_pieces_clean (struct resource *resp, struct rt_i *rtip) |
int | rt_find_nugrid (const struct nugridnode *nugnp, int axis, fastf_t val) |
const union cutter * | rt_advance_to_next_cell (register struct rt_shootray_status *ssp) |
fastf_t | rt_find_backing_dist (struct rt_shootray_status *ss, struct bu_bitv *backbits) |
int | rt_shootray (register struct application *ap) |
const union cutter * | rt_cell_n_on_ray (register struct application *ap, int n) |
int | rt_in_rpp (struct xray *rp, register const fastf_t *invdir, register const fastf_t *min, register const fastf_t *max) |
int | rt_DB_rpp (register struct xray *rp, register const fastf_t *invdir, register const fastf_t *min, register const fastf_t *max) |
void | rt_vstub (struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) |
void | rt_pr_library_version (void) |
void | rt_zero_res_stats (struct resource *resp) |
void | rt_add_res_stats (register struct rt_i *rtip, register struct resource *resp) |
void | rt_3move_raydist (FILE *fp, struct xray *rayp, double dist) |
void | rt_3cont_raydist (FILE *fp, struct xray *rayp, double dist) |
Variables | |
resource | rt_uniresource |
default. Defined in librt/shoot.c |
This is the heart of LIBRT's ray-tracing capability.
Given a ray, shoot it at all the relevant parts of the model, (building the finished_segs chain), and then call rt_boolregions() to build and evaluate the partition chain. If the ray actually hit anything, call the application's a_hit() routine with a pointer to the partition chain, otherwise, call the application's a_miss() routine.
It is important to note that rays extend infinitely only in the positive direction. The ray is composed of all points P, where
P = r_pt + K * r_dir
for K ranging from 0 to +infinity. There is no looking backwards.
Authors - Michael John Muuss Glenn Durfee
Source - The U. S. Army Research Laboratory Aberdeen Proving Ground, Maryland 21005-5068 USA
Definition in file shoot.c.
|
Referenced by bn_isect_lseg_rpp(), rt_DB_rpp(), rt_in_rpp(), and rt_raybundle_maker(). |