home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 8
/
CDASC08.ISO
/
NEWS
/
RADIANCE
/
SRC
/
RT
/
RAY.H
< prev
next >
Wrap
C/C++ Source or Header
|
1993-10-07
|
2KB
|
65 lines
/* Copyright (c) 1992 Regents of the University of California */
/* SCCSid "@(#)ray.h 2.2 1/4/92 LBL" */
/*
* ray.h - header file for routines using rays.
*
* 8/7/85
*/
#include "standard.h"
#include "object.h"
#include "color.h"
/* ray type flags */
#define PRIMARY 01 /* original ray */
#define SHADOW 02 /* ray to light source */
#define REFLECTED 04 /* reflected ray */
#define REFRACTED 010 /* refracted (bent) ray */
#define TRANS 020 /* transmitted/transferred ray */
#define AMBIENT 040 /* ray scattered for interreflection */
#define SPECULAR 0100 /* ray scattered for specular */
/* reflected ray types */
#define RAYREFL (SHADOW|REFLECTED|AMBIENT|SPECULAR)
typedef struct ray {
long rno; /* unique ray number */
int rlvl; /* number of reflections for this ray */
float rweight; /* cumulative weight of this ray */
short rtype; /* ray type */
short crtype; /* cumulative ray type */
struct ray *parent; /* ray this originated from */
FVECT rorg; /* origin of ray */
FVECT rdir; /* normalized direction of ray */
int rsrc; /* source we're aiming for */
OBJECT *clipset; /* set of objects currently clipped */
OBJECT *newcset; /* next clipset, used for transmission */
int (*revf)(); /* evaluation function for this ray */
OBJREC *ro; /* intersected object */
double rot; /* distance to object */
FVECT rop; /* intersection point */
FVECT ron; /* intersection surface normal */
double rod; /* -DOT(rdir, ron) */
FULLXF *rox; /* object transformation */
FVECT pert; /* surface normal perturbation */
COLOR pcol; /* pattern color */
COLOR rcol; /* returned ray value */
double rt; /* returned effective ray length */
} RAY;
extern int raytrace();
extern double raynormal();
extern int dimlist[]; /* dimension list for distribution */
extern int ndims; /* number of dimensions so far */
extern int samplendx; /* index for this sample */
#define MAXDIM 32 /* maximum number of dimensions */
#define rayvalue(r) (*(r)->revf)(r)