12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #include <stdio.h>
- #include <math.h>
- #include <sys/types.h>
- #define GRID_ID "grid003.02"
- #define DSPF_ID "dspf003.02"
- #define LINTERP(A,B,C) ((C-A)/(B-A))*255
- #define VOID_TYPE char
- #define FLINTERP(A,B,C,D,E) (((C-A)*(E-D))/(B-A)) + D
- /*#define LENGTH(A,B,C) sqrt(A*A + B*B + C*C) */
- /* used in the lambert shading model */
- #define NV(A,B,C) ((A*A) + (B*B) + (C*C))
- #define MAXLITS 3
- #define MAXTHRESH 127
- #define MAXPOLY 10
- typedef struct
- {
- int nthres; /* number of thresholds */
- float tvalue[MAXTHRESH]; /* array of threshold values */
- int litmodel; /* 1 = flat, 2 = gradient(6), 3 = gradient(26) */
- } cmndln_info;
- typedef struct
- {
- int token; /*type of file */
- void *g3mapin, *g3mapout; /* RASTER3D_Map */
- FILE *datainfp, *dataoutfp;
- FILE *dspfinfp, *dspfoutfp;
- int xdim, ydim, zdim;
- float north, south, east, west;
- float top, bottom;
- float ns_res, ew_res, tb_res;
- int zone;
- int proj;
- int type; /*1 = short int, 2 = integer, 3 = float */
- float min, max; /* max and min values present in the data */
- long Dataoff; /* offset of beginning of data in file */
- long Lookoff; /* offset of beginning of lookup table in file */
- cmndln_info linefax; /* more global info */
- int headsize; /* size of datainf file header, necessary for random
- access to grid3 data */
- } file_info;
- typedef struct
- {
- float v1[3]; /*polygon vertices */
- float v2[3];
- float v3[3];
- float n1[3], n2[3], n3[3]; /*normals for vertices */
- } poly_info;
- typedef struct
- {
- int npoly; /* number of polygons in cube at given threshold */
- int t_ndx; /* index of given threshold */
- poly_info poly[MAXPOLY]; /*vertices and normals */
- } cube_info;
- typedef struct
- {
- int n_thresh;
- cube_info data[MAXTHRESH];
- } Cube_data;
- typedef struct
- {
- int nverts;
- int verts[8];
- int nedges;
- int edges[12];
- int npolys;
- int polys[30];
- } CELL_ENTRY; /* for writing out in condensed format */
- extern CELL_ENTRY cell_table[256];
|