double max_block_dimension(int reset) { static double dim = -1.0; if (reset) dim = -1.0; if (dim < 0.0) { if (data_area != NULL) dim = data_block_diagonal(data_area); else dim = sqrt(SQR(block.x)+SQR(block.y)+SQR(block.z)); } return dim; }
/* * this function should be changed--the mask map stack is misused as * to define the topology of variogram maps. * * use min/max coordinates for block diagonal as maximum cutoff * Returns: about 1/3 the max. dist between any two points in data. */ void fill_cutoff_width(DATA *data /* pointer to DATA structure to derive the values from */, VARIOGRAM *v /* pointer to VARIOGRAM structure */) { double d = 0.0; int i; GRIDMAP *m; SAMPLE_VGM *ev; assert(data); assert(v); ev = v->ev; if (get_n_masks() > 0) { m = new_map(); m->is_write = 0; m->filename = get_mask_name(0); if ((m = map_read(m)) == NULL) ErrMsg(ER_READ, "cannot open map"); ev->iwidth = 1.0; ev->cutoff = m->rows * m->cols; /* not a real cutoff, but rather the size of the container array */ ev->map = m; } else if (gl_bounds != NULL) { i = 0; while (gl_bounds[i] >= 0.0) /* count length */ i++; ev->cutoff = gl_bounds[i-1]; ev->iwidth = ev->cutoff / i; } else { if (is_mv_double(&(ev->cutoff))) { if (gl_cutoff < 0.0) { d = data_block_diagonal(data); if (d == 0.0) ev->cutoff = 1.0; /* ha ha ha */ else ev->cutoff = d * gl_fraction; } else ev->cutoff = gl_cutoff; } if (is_mv_double(&(ev->iwidth))) { if (gl_iwidth < 0.0) ev->iwidth = ev->cutoff / gl_n_intervals; else ev->iwidth = gl_iwidth; } } }