1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
/*-
* Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993
* Copyright 1993, H. Mitasova ,
* I. Kosinovsky, and D.Gerdes
*
* modified by McCauley in August 1995
* modified by Mitasova in August 1995
* modified by Brown in June 1999 - added elatt & smatt
*
*/
#include <stdio.h>
#include <math.h>
#include <unistd.h>
#include <grass/gis.h>
#include <grass/interpf.h>
void IL_init_params_2d(
/* initialize parameters */
struct interp_params *params, FILE * inp, /* input stream */
int elatt, /* which fp att in sites file? 1 = first */
int smatt, /* which fp att in sites file to use for
* smoothing? (if zero use sm) 1 = first */
double zm, /* multiplier for z-values */
int k1, /* min number of points per segment for
* interpolation */
int k2, /* max number of points per segment */
char *msk, /* name of mask */
int rows, int cols, /* number of rows and columns */
DCELL * ar1, DCELL * ar2, DCELL * ar3, DCELL * ar4, DCELL * ar5, DCELL * ar6, /* arrays for interpolated
* values */
double tension, /* tension */
int k3, /* max num. of points for interp. */
int sc1, int sc2, int sc3, /* multipliers for interp. values */
double sm, /* smoothing */
char *f1, char *f2, char *f3, char *f4, char *f5, char *f6, /* output files */
double dm, /* min distance between points */
double x_or, double y_or, /* origin */
int der, /* 1 if compute partial derivs */
double tet, /* anisotropy angle, 0=East,counter-clockwise */
double scl, /* anisotropy scaling factor */
FILE * t1, FILE * t2, FILE * t3, FILE * t4, FILE * t5, FILE * t6, /* temp files for writing interp. values */
FILE * dev, /* pointer to deviations file */
struct TimeStamp *ts, int c, /* cross validation */
char *wheresql /* SQL WHERE */
)
{
params->fdinp = inp;
params->elatt = elatt;
params->smatt = smatt;
params->zmult = zm;
params->kmin = k1;
params->kmax = k2;
params->maskmap = msk;
params->nsizr = rows;
params->nsizc = cols;
params->az = ar1;
params->adx = ar2;
params->ady = ar3;
params->adxx = ar4;
params->adyy = ar5;
params->adxy = ar6;
params->fi = tension, params->KMAX2 = k3;
params->scik1 = sc1;
params->scik2 = sc2;
params->scik3 = sc3;
params->rsm = sm;
params->elev = f1;
params->slope = f2;
params->aspect = f3;
params->pcurv = f4;
params->tcurv = f5;
params->mcurv = f6;
params->dmin = dm;
params->x_orig = x_or;
params->y_orig = y_or;
params->deriv = der;
params->theta = tet;
params->scalex = scl;
params->Tmp_fd_z = t1;
params->Tmp_fd_dx = t2;
params->Tmp_fd_dy = t3;
params->Tmp_fd_xx = t4;
params->Tmp_fd_yy = t5;
params->Tmp_fd_xy = t6;
params->fddevi = dev;
params->ts = ts;
params->cv = c;
params->wheresql = wheresql;
}
void IL_init_func_2d(struct interp_params *params, int (*grid_f) (void), /* calculates grid for given segm */
int (*matr_f) (void), /* creates matrix for a given segm */
int (*point_f) (void), /* checks interp. func. at points */
int (*secp_f) (void), /* calculates aspect,slope,curv. */
double (*interp_f) (void), /* radial basis function */
int (*interpder_f) (void), /* derivatives of radial basis func. */
int (*temp_f) (void) /* writes temp files */
)
/* initialize functions */
{
params->grid_calc = grid_f;
params->matrix_create = matr_f;
params->check_points = point_f;
params->secpar = secp_f;
params->interp = interp_f;
params->interpder = interpder_f;
params->wr_temp = temp_f;
}
|