Loading...
Searching...
No Matches
segmen2d.c File Reference
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <math.h>`
`#include <grass/gis.h>`
`#include <grass/glocale.h>`
`#include <grass/interpf.h>`
`#include <grass/gmath.h>`
Include dependency graph for segmen2d.c:

Go to the source code of this file.

## Functions

int | IL_interp_segments_2d (struct interp_params *params, struct tree_info *info, struct multtree *tree, struct BM *bitmask, double zmin, double zmax, double *zminac, double *zmaxac, double *gmin, double *gmax, double *c1min, double *c1max, double *c2min, double *c2max, double *ertot, int totsegm, off_t offset1, double dnorm)
double | smallest_segment (struct multtree *tree, int n_leafs)

## Detailed Description

Author
  H. Mitasova, I. Kosinovsky, D. Gerdes

Copyright
  (C) 1993 by Helena Mitasova and the GRASS Development Team
  This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details.

Author
  H. Mitasova, I. Kosinovsky, D. Gerdes (single core)
  Stanislav Zubal, Michal Lacko (OpenMP version)
  Anna Petrasova (OpenMP version GRASS integration)

Copyright
  (C) 1993-2017 by Helena Mitasova and the GRASS Development Team
  This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details.

Definition in file segmen2d.c.

## Function Documentation

## IL_interp_segments_2d()

int IL_interp_segments_2d | ( | struct interp_params * | params,
|  | struct tree_info * | info,
|  | struct multtree * | tree,
|  | struct BM * | bitmask,
|  | double | zmin,
|  | double | zmax,
|  | double * | zminac,
|  | double * | zmaxac,
|  | double * | gmin,
|  | double * | gmax,
|  | double * | c1min,
|  | double * | c1max,
|  | double * | c2min,
|  | double * | c2max,
|  | double * | ertot,
|  | int | totsegm,
|  | off_t | offset1,
|  | double | dnorm )

Interpolate recursively a tree of segments

Recursively processes each segment in a tree by:

- finding points from neighbouring segments so that the total number of points is between KMIN and KMAX2 by calling tree function MT_get_region().
- creating and solving the system of linear equations using these points and interp() by calling matrix_create() and G_ludcmp().
- checking the interpolating function values at points by calling check_points().
- computing grid for this segment using points and interp() by calling grid_calc().

Todo
  Isn't this in fact the updated version of the function (IL_interp_segments_new_2d)? The function IL_interp_segments_new_2d has the following, better behavior: The difference between this function and IL_interp_segments_2d() is making sure that additional points are taken from all directions, i.e. it finds equal number of points from neighboring segments in each of 8 neighborhoods.

Parameters

  info | info for the quad tree
  tree | current leaf of the quad tree
  bitmask | bitmask
  zmax | min and max input z-values
  zmaxac | min and max interp. z-values
  gmax | min and max inperp. slope val.
  c1max | min and max interp. curv. val.
  c2max | min and max interp. curv. val.
  ertot | total interplating func. error
  totsegm | total number of segments
  offset1 | offset for temp file writing

Definition at line 46 of file segmen2d.c.

References b, interp_params::check_points, interp_params::cv, multtree::data, G_alloc_ivector(), G_alloc_matrix(), G_alloc_vector(), G_debug(), G_free(), G_lubksb(), G_percent(), G_warning(), interp_params::grid_calc, IL_interp_segments_2d(), interp_params::KMAX2, interp_params::kmin, multtree::leafs, interp_params::matrix_create, MT_region_data(), quaddata::n_cols, quaddata::n_rows, interp_params::nsizc, interp_params::nsizr, NULL, quad_data_new(), tree_info::root, smallest_segment(), interp_params::Tmp_fd_dx, interp_params::Tmp_fd_dy, interp_params::Tmp_fd_xx, interp_params::Tmp_fd_xy, interp_params::Tmp_fd_yy, interp_params::Tmp_fd_z, triple::x, interp_params::x_orig, quaddata::x_orig, quaddata::xmax, triple::y, interp_params::y_orig, quaddata::y_orig, quaddata::ymax, and triple::z.

Referenced by IL_interp_segments_2d().

## smallest_segment()

double smallest_segment | ( | struct multtree * | tree,
|  | int | n_leafs )

Definition at line 342 of file segmen2d.c.

References multtree::data, multtree::leafs, NULL, smallest_segment(), and quaddata::xmax.

Referenced by IL_interp_segments_2d(), IL_interp_segments_2d_parallel(), and smallest_segment().