30 #include <grass/gis.h>
31 #include <grass/vector.h>
32 #include <grass/dbmi.h>
35 #include <grass/interpf.h>
64 double east = data->
xmax;
65 double west = data->
x_orig;
66 double north = data->
ymax;
67 double south = data->
y_orig;
68 double rfsta2, errmax, h, xx, yy, r2, hz, zz,
err, xmm, ymm,
r;
81 fstar2 = params->
fi * params->
fi / 4.;
84 for (mm = 1; mm <= n_points; mm++) {
86 for (m = 1; m <= n_points; m++) {
87 xx = points[mm - 1].
x - points[m - 1].
x;
88 yy = points[mm - 1].
y - points[m - 1].
y;
89 r2 = yy * yy + xx * xx;
93 h = h + b[m] * params->
interp(r, params->
fi);
102 zz = points[mm - 1].
z + zmin;
104 xmm = points[mm - 1].
x * dnorm + params->
x_orig + west;
105 ymm = points[mm - 1].
y * dnorm + params->
y_orig + south;
106 if ((xmm >= west + params->
x_orig) && (xmm <= east + params->x_orig)
107 && (ymm >= south + params->
y_orig) &&
108 (ymm <= north + params->y_orig))
116 Vect_reset_line(
Pnts);
117 Vect_reset_cats(
Cats2);
119 Vect_append_point(
Pnts, xmm, ymm, zz);
121 Vect_cat_set(
Cats2, 1, cat);
124 db_zero_string(&
sql2);
125 sprintf(buf,
"insert into %s values ( %d ",
ff->table, cat);
126 db_append_string(&
sql2, buf);
128 sprintf(buf,
", %f", err);
129 db_append_string(&
sql2, buf);
130 db_append_string(&
sql2,
")");
131 G_debug(3,
"IL_check_at_points_2d: %s", db_get_string(&
sql2));
133 if (db_execute_immediate(
driver2, &
sql2) != DB_OK) {
137 db_get_string(&
sql2));
143 (*ertot) += err *
err;
149 for (m = 1; m <= n_points - 1; m++) {
150 xx = points[m - 1].
x - skip_point.
x;
151 yy = points[m - 1].
y - skip_point.
y;
152 r2 = yy * yy + xx * xx;
154 rfsta2 = fstar2 * r2;
156 h = h + b[m] * params->
interp(r, params->
fi);
160 zz = skip_point.
z + zmin;
162 xmm = skip_point.
x * dnorm + params->
x_orig + west;
163 ymm = skip_point.
y * dnorm + params->
y_orig + south;
165 if ((xmm >= west + params->
x_orig) && (xmm <= east + params->x_orig)
166 && (ymm >= south + params->
y_orig) &&
167 (ymm <= north + params->y_orig))
173 Vect_reset_line(
Pnts);
174 Vect_reset_cats(
Cats2);
176 Vect_append_point(
Pnts, xmm, ymm, zz);
178 Vect_cat_set(
Cats2, 1, cat);
181 db_zero_string(&
sql2);
182 sprintf(buf,
"insert into %s values ( %d ",
ff->table, cat);
183 db_append_string(&
sql2, buf);
185 sprintf(buf,
", %f", skip_err);
186 db_append_string(&
sql2, buf);
187 db_append_string(&
sql2,
")");
188 G_debug(3,
"IL_check_at_points_2d: %s", db_get_string(&
sql2));
190 if (db_execute_immediate(
driver2, &
sql2) != DB_OK) {
194 db_get_string(&
sql2));
int IL_check_at_points_2d(struct interp_params *params, struct quaddata *data, double *b, double *ertot, double zmin, double dnorm, struct triple skip_point)
void G_fatal_error(const char *msg,...)
Print a fatal error message to stderr.
SYMBOL * err(FILE *fp, SYMBOL *s, char *msg)
int G_debug(int level, const char *msg,...)
Print debugging message.