home *** CD-ROM | disk | FTP | other *** search
- /* 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;
- }
-