ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/px/warp3d.h
Revision: 3.5
Committed: Sun Mar 28 20:33:14 2004 UTC (20 years, 1 month ago) by schorsch
Content type: text/plain
Branch: MAIN
CVS Tags: rad5R4, rad5R2, rad4R2P2, rad5R0, rad5R1, rad3R7P2, rad3R7P1, rad4R2, rad4R1, rad4R0, rad3R6, rad3R6P1, rad3R8, rad3R9, rad4R2P1, rad5R3, HEAD
Changes since 3.4: +7 -2 lines
Log Message:
Continued ANSIfication, and other fixes and clarifications.

File Contents

# User Rev Content
1 schorsch 3.5 /* RCSid: $Id: warp3d.h,v 3.4 2003/07/14 22:24:00 schorsch Exp $ */
2 greg 3.1 /*
3     * Header file for 3D warping routines.
4     */
5 schorsch 3.4 #ifndef _RAD_WARP3D_H_
6     #define _RAD_WARP3D_H_
7 greg 3.1
8     #include "lookup.h"
9    
10 schorsch 3.4 #ifdef __cplusplus
11     extern "C" {
12     #endif
13    
14 greg 3.1 /* interpolation flags */
15     #define W3EXACT 01 /* no interpolation (slow) */
16     #define W3FAST 02 /* discontinuous approx. (fast) */
17    
18     /* return flags for warp3d() */
19     #define W3OK 0 /* normal return status */
20     #define W3GAMUT 01 /* out of gamut */
21     #define W3BADMAP 02 /* singular map */
22     #define W3ERROR 04 /* system error (check errno) */
23    
24     #define GNBITS 6 /* number of bits per grid size <= 8 */
25     #define MAXGN (1<<GNBITS) /* maximum grid dimension */
26    
27     typedef unsigned char GNDX[3]; /* grid index type */
28    
29     typedef float W3VEC[3]; /* vector type for 3D warp maps */
30    
31     struct grid3d {
32 greg 3.2 unsigned char flags; /* interpolation flags */
33 greg 3.1 GNDX gn; /* grid dimensions */
34 greg 3.2 W3VEC gmin, gstep; /* grid corner and voxel size */
35 greg 3.1 LUTAB gtab; /* grid lookup table */
36     }; /* a regular, sparse warping grid */
37    
38     typedef struct {
39 greg 3.2 W3VEC *ip, *ov; /* discrete input/displ. pairs */
40 greg 3.1 int npts; /* number of point pairs */
41     W3VEC llim, ulim; /* lower and upper input limits */
42     double d2min, d2max; /* min. and max. point distance^2 */
43     struct grid3d grid; /* point conversion grid */
44     } WARP3D; /* a warp map */
45    
46 schorsch 3.5 extern int warp3d(W3VEC po, W3VEC pi, WARP3D *wp);
47     extern int add3dpt(WARP3D* wp, W3VEC pti, W3VEC pto);
48     extern WARP3D* new3dw(int flgs);
49     extern WARP3D* load3dw(char *fn, WARP3D *wp);
50     extern void free3dw(WARP3D *wp);
51     extern int set3dwfl(WARP3D *wp, int flgs);
52 greg 3.1
53     #define W3VCPY(v1,v2) ((v1)[0]=(v2)[0],(v1)[1]=(v2)[1],(v1)[2]=(v2)[2])
54 schorsch 3.4
55     #ifdef __cplusplus
56     }
57     #endif
58     #endif /* _RAD_WARP3D_H_ */
59