--- ray/src/px/warp3d.c 1997/02/05 15:59:07 3.2 +++ ray/src/px/warp3d.c 2003/04/23 00:52:34 3.6 @@ -1,14 +1,12 @@ -/* Copyright (c) 1997 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: warp3d.c,v 3.6 2003/04/23 00:52:34 greg Exp $"; #endif - /* * 3D warping routines. */ #include +#include #include #include "fvect.h" #include "warp3d.h" @@ -25,12 +23,7 @@ typedef struct { #define AHUNK 24 /* number of points to allocate at a time */ -#ifndef malloc -extern char *malloc(), *realloc(); -#endif -extern void free(); - double wpdist2(p1, p2) /* compute square of distance between points */ register W3VEC p1, p2; @@ -137,7 +130,7 @@ WARP3D *wp; { W3VEC cv[8]; GNDX gi; - int rval = 0; + int rval = W3OK; register int i; /* get corner values */ for (i = 0; i < 8; i++) { @@ -291,11 +284,11 @@ W3VEC pti, pto; W3VCPY(wp->ulim, pti); } else { if (wp->npts % AHUNK == 0) { /* allocate another hunk */ - na = (W3VEC *)realloc((char *)wp->ip, + na = (W3VEC *)realloc((void *)wp->ip, (wp->npts+AHUNK)*sizeof(W3VEC)); if (na == NULL) return(0); wp->ip = na; - na = (W3VEC *)realloc((char *)wp->ov, + na = (W3VEC *)realloc((void *)wp->ov, (wp->npts+AHUNK)*sizeof(W3VEC)); if (na == NULL) return(0); wp->ov = na; @@ -328,13 +321,13 @@ free3dw(wp) /* free WARP3D data */ register WARP3D *wp; { done3dgrid(&wp->grid); - free((char *)wp->ip); - free((char *)wp->ov); - free((char *)wp); + free((void *)wp->ip); + free((void *)wp->ov); + free((void *)wp); } -long +unsigned long gridhash(gp) /* hash a grid point index */ GNDX gp; { @@ -367,6 +360,9 @@ register WARP3D *wp; } if (wp->grid.flags & W3EXACT) { wp->grid.gn[0] = wp->grid.gn[1] = wp->grid.gn[2] = 1; + wp->grid.gstep[0] = gmax[0] - wp->grid.gmin[0]; + wp->grid.gstep[1] = gmax[1] - wp->grid.gmin[1]; + wp->grid.gstep[2] = gmax[2] - wp->grid.gmin[2]; return(W3OK); /* no interpolation, so no grid */ } /* create grid */