/*************************************************************************/
/*                                                                       */
/*  Copyright (c) 1994 Stanford University                               */
/*                                                                       */
/*  All rights reserved.                                                 */
/*                                                                       */
/*  Permission is given to use, copy, and modify this software for any   */
/*  non-commercial purpose as long as this copyright notice is not       */
/*  removed.  All other uses, including redistribution in whole or in    */
/*  part, are forbidden without prior written permission.                */
/*                                                                       */
/*  This software is provided with absolutely no warranty and no         */
/*  support.                                                             */
/*                                                                       */
/*************************************************************************/

/************************************************************************
*                                                                       *
*     constants.h:  constants needed for rendering system 				*
*                                                                       *
************************************************************************/


#define PI           3.14159265358979323846

#define MAX_NUMPROC           64
#define NODE0                  0    /* processor no. to which first process is bound */

                                /* rendering parameters                      */
#define PIXELS_PER_BLOCK_DIM   4
#define ZSCALE                 1
#ifdef DIM
#define ROTATE_STEPS          4
#define STEP_SIZE             3
#else
#define ROTATE_STEPS           4
#define STEP_SIZE              3
#endif
#define ROOT                   0

                                /* BOOLEAN constants used                    */
#define TRUE            1       /*   BOOLEAN defined as a user type          */
#define FALSE           0       /*   in my_types.h                           */
#define YES             1
#define NO              0

				/* Definition of object space coordinates:   */
#define	NM		3	/*   number of coordinates                   */
#define	X		0	/*   x-coordinate                            */
#define	Y		1	/*   y-coordinate                            */
#define	Z		2	/*   z-coordinate                            */

				/* Definition of pixel image coordinates:    */
#define	NI		2	/*   number of coordinates                   */

                                /* NORMAL constant using 16-bit signed short */
#if 0
#define NORM_LSHIFT   127.0     /*   left shift to store normal as short     */
#define NORM_RSHIFT   .00787401574803149606
#define LOOKUP_PREC   255
#define LOOKUP_HSIZE  65024     /*   = (255*127+127)*2                       */
#define LOOKUP_SIZE   130050    /*   = 255*255*2                             */
#endif
#define NORM_LSHIFT   31.0
#define NORM_RSHIFT   .03225806451612903225
#define LOOKUP_PREC   63
#define LOOKUP_HSIZE  3968
#define LOOKUP_SIZE   7938

                                /* PIXEL constants used                      */
#define NULL_PIXEL      0       /*   initialization value for pixel          */
#define PIX_CUR_VERSION 1       /*   version of .pix file used               */

				/* Definition of string sizes:               */
#define	FILENAME_SIZE		80			/* max user filename */
#define FILENAME_STRING_SIZE	(FILENAME_SIZE+1)	/* + 1 for null char */

				/* Definition of minimum and maximum values: */
#define	MIN_DENSITY	0	/*   density                                 */
#define	MAX_DENSITY	255	/*   density                                 */
#define	MIN_MAGNITUDE	0	/*   magnitude of density gradient           */
#define	MAX_MAGNITUDE	442	/*   sqrt(MAX_GRADIENT**2*3)                 */
#define MIN_OPACITY	0.0	/*   compositing opacity                     */
#define	MAX_OPACITY	1.0	/*     (0.0=transparent, 1.0=opaque)         */
#define	MIN_OPC	        0	/*                                           */
#define	MAX_OPC	        255	/*                                           */
#define	INV_MAX_OPC	.00392156862745098039
#define	MIN_PIXEL	0	/*   pixel or voxel color or opacity         */
#define	MAX_PIXEL	255	/*                                           */
#define	INV_MAX_PIXEL	.00392156862745098039
#define MAX_INLEN	1024	/*   size of any input map or space          */
#define MAX_OUTLEN	4096	/*   size of any output map or space         */
#define SMALL          0.00001  /* Don't use {SMALL,BIG} in single precision */
#define BIG            9999.999 /* expressions alongside {big,small} numbers */
#define MAX_INT    4294967295   /* 2^32-1 is the maximum integer             */

                                /* Definition of global constants assumed    */
#define INSET           1               /*   inset assumes gradient          */
                                        /*   operator not 5x5                */

#define MAX_PYRLEVEL	9	/* Maximum level in binary pyramid           */
				/*   (allows 1x1x1..512x512x512 voxels)      */

