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 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
/*-
* 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 "gis.h"
#include "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
)
{
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;
}
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;
}
|