ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/interp2d.h
Revision: 2.2
Committed: Sat Feb 9 17:39:21 2013 UTC (11 years, 3 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.1: +7 -2 lines
Log Message:
Added interp2_realloc() call, exposed interp2_analyze() and code improvements

File Contents

# Content
1 /* RCSid $Id: interp2d.h,v 2.1 2013/02/09 00:55:40 greg Exp $ */
2 /*
3 * Header for interpolation of anisotropic values on 2-D plane.
4 *
5 * G.Ward Feb 2013
6 */
7
8 #define NI2DSMF 0.42f /* minimal smoothing radius */
9
10 #define NI2DIR (2*4) /* # interpolation directions */
11
12 /* Data structure for interpolant */
13 typedef struct {
14 int ns; /* number of sample positions */
15 float rmin; /* minimum valid radius (default=.5) */
16 float smf; /* smoothing factor (def=NI2DSMF) */
17 unsigned short (*ra)[NI2DIR]; /* anisotropic radii (private) */
18 float spt[1][2]; /* sample positions (extends struct) */
19 } INTERP2;
20
21 /* Allocate a new set of interpolation samples (caller assigns spt[] array) */
22 extern INTERP2 *interp2_alloc(int nsamps);
23
24 /* Resize interpolation array (caller must assign any new values) */
25 extern INTERP2 *interp2_realloc(INTERP2 *ip, int nsamps);
26
27 /* Assign full set of normalized weights to interpolate the given location */
28 extern int interp2_weights(float wtv[], INTERP2 *ip, double x, double y);
29
30 /* Get normalized weights and indexes for n best samples in descending order */
31 extern int interp2_topsamp(float wt[], int si[], const int n,
32 INTERP2 *ip, double x, double y);
33 /* Free interpolant */
34 extern void interp2_free(INTERP2 *ip);
35
36 /* (Re)compute anisotropic basis function interpolant (normally automatic) */
37 extern int interp2_analyze(INTERP2 *ip);