home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 8
/
CDASC08.ISO
/
NEWS
/
RADIANCE
/
SRC
/
OT
/
GETBBOX.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-10-07
|
2KB
|
121 lines
/* Copyright (c) 1991 Regents of the University of California */
#ifndef lint
static char SCCSid[] = "@(#)getbbox.c 2.2 12/19/91 LBL";
#endif
/*
* getbbox.c - compute bounding box for scene files
*
* Adapted from oconv.c 29 May 1991
*/
#include "standard.h"
#include "octree.h"
#include "object.h"
#ifndef DEFPATH
#define DEFPATH ":/usr/local/lib/ray"
#endif
char *progname; /* argv[0] */
char *libpath; /* library search path */
int nowarn = 0; /* supress warnings? */
int (*addobjnotify[])() = {NULL}; /* new object notifier functions */
FVECT bbmin, bbmax; /* bounding box */
addobject(o) /* add object to bounding box */
OBJREC *o;
{
add2bbox(o, bbmin, bbmax);
}
main(argc, argv) /* read object files and compute bounds */
int argc;
char **argv;
{
extern char *getenv();
int nohead = 0;
int i;
progname = argv[0];
if ((libpath = getenv("RAYPATH")) == NULL)
libpath = DEFPATH;
for (i = 1; i < argc && argv[i][0] == '-'; i++) {
switch (argv[i][1]) {
case 'w':
nowarn = 1;
continue;
case 'h':
nohead = 1;
continue;
}
break;
}
/* find bounding box */
bbmin[0] = bbmin[1] = bbmin[2] = FHUGE;
bbmax[0] = bbmax[1] = bbmax[2] = -FHUGE;
/* read input */
if (i >= argc)
readobj(NULL, addobject);
else
for ( ; i < argc; i++)
if (!strcmp(argv[i], "-")) /* from stdin */
readobj(NULL, addobject);
else /* from file */
readobj(argv[i], addobject);
/* print bounding box */
if (!nohead)
printf(
" xmin xmax ymin ymax zmin zmax\n");
printf("%9g %9g %9g %9g %9g %9g\n", bbmin[0], bbmax[0],
bbmin[1], bbmax[1], bbmin[2], bbmax[2]);
quit(0);
}
quit(code) /* exit program */
int code;
{
exit(code);
}
cputs() /* interactive error */
{
/* referenced, but not used */
}
wputs(s) /* warning message */
char *s;
{
if (!nowarn)
eputs(s);
}
eputs(s) /* put string to stderr */
register char *s;
{
static int inln = 0;
if (!inln++) {
fputs(progname, stderr);
fputs(": ", stderr);
}
fputs(s, stderr);
if (*s && s[strlen(s)-1] == '\n')
inln = 0;
}