GRASS GIS 8 Programmer's Manual 8.3.2(2024)-exported
|
OGSF library - loading and manipulating volumes (lower level functions) More...
#include <math.h>
#include <grass/gis.h>
#include <grass/ogsf.h>
#include "rgbpack.h"
#include "mc33_table.h"
Go to the source code of this file.
Macros | |
#define | BUFFER_SIZE 1000000 |
memory buffer for writing | |
#define | LINTERP(d, a, b) (a + d * (b - a)) |
#define | TINTERP(d, v) |
#define | FOR_VAR i_for |
#define | FOR_0_TO_N(n, cmd) |
#define | WRITE(c) gvl_write_char(dbuff->ndx_new++, &(dbuff->new), c) |
writing and reading isosurface data | |
#define | READ() gvl_read_char(dbuff->ndx_old++, dbuff->old) |
#define | SKIP(n) dbuff->ndx_old = dbuff->ndx_old + n |
#define | IS_IN_DATA(att) ((isosurf->data_desc >> att) & 1) |
check and set data descriptor | |
#define | SET_IN_DATA(att) isosurf->data_desc = (isosurf->data_desc | (1 << att)) |
#define | DISTANCE_2(x1, y1, x2, y2) sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) |
#define | SLICE_MODE_INTERP_NO 0 |
#define | SLICE_MODE_INTERP_YES 1 |
Functions | |
int | mc33_process_cube (int c_ndx, float *v) |
ADD. | |
void | iso_w_cndx (int ndx, data_buffer *dbuff) |
Write cube index. | |
int | iso_r_cndx (data_buffer *dbuff) |
Read cube index. | |
int | iso_get_cube_value (geovol_isosurf *isosurf, int desc, int x, int y, int z, float *v) |
Get value from data input. | |
void | iso_get_range (geovol_isosurf *isosurf, int desc, double *min, double *max) |
Get volume file values range. | |
int | iso_get_cube_values (geovol_isosurf *isosurf, int desc, int x, int y, int z, float *v) |
Read values for cube. | |
void | iso_get_cube_grads (geovol_isosurf *isosurf, int x, int y, int z, float(*grad)[3]) |
Calculate cube grads. | |
void | iso_calc_cube (geovol_isosurf *isosurf, int x, int y, int z, data_buffer *dbuff) |
Process cube. | |
int | gvl_isosurf_calc (geovol *gvol) |
Fill data structure with computed isosurfaces polygons. | |
void | gvl_write_char (int pos, unsigned char **data, unsigned char c) |
ADD. | |
unsigned char | gvl_read_char (int pos, const unsigned char *data) |
Read char. | |
void | gvl_align_data (int pos, unsigned char **data) |
Append data to buffer. | |
float | slice_get_value (geovol *gvl, int x, int y, int z) |
Get volume value. | |
int | slice_calc (geovol *gvl, int ndx_slc, void *colors) |
Calculate slices. | |
int | gvl_slices_calc (geovol *gvol) |
Calculate slices for given volume set. | |
Variables | |
int | Rows |
int | Cols |
int | Depths |
double | ResX |
double | ResY |
double | ResZ |
OGSF library - loading and manipulating volumes (lower level functions)
GRASS OpenGL gsurf OGSF Library
(C) 1999-2008 by 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 gvl_calc.c.
#define BUFFER_SIZE 1000000 |
memory buffer for writing
Definition at line 31 of file gvl_calc.c.
#define DISTANCE_2 | ( | x1, | |
y1, | |||
x2, | |||
y2 | |||
) | sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) |
Definition at line 802 of file gvl_calc.c.
#define FOR_0_TO_N | ( | n, | |
cmd | |||
) |
Definition at line 47 of file gvl_calc.c.
#define FOR_VAR i_for |
Definition at line 46 of file gvl_calc.c.
#define IS_IN_DATA | ( | att | ) | ((isosurf->data_desc >> att) & 1) |
check and set data descriptor
Definition at line 65 of file gvl_calc.c.
Definition at line 36 of file gvl_calc.c.
#define READ | ( | ) | gvl_read_char(dbuff->ndx_old++, dbuff->old) |
Definition at line 59 of file gvl_calc.c.
#define SET_IN_DATA | ( | att | ) | isosurf->data_desc = (isosurf->data_desc | (1 << att)) |
Definition at line 66 of file gvl_calc.c.
#define SKIP | ( | n | ) | dbuff->ndx_old = dbuff->ndx_old + n |
Definition at line 60 of file gvl_calc.c.
#define SLICE_MODE_INTERP_NO 0 |
Definition at line 805 of file gvl_calc.c.
#define SLICE_MODE_INTERP_YES 1 |
Definition at line 806 of file gvl_calc.c.
#define TINTERP | ( | d, | |
v | |||
) |
Definition at line 37 of file gvl_calc.c.
#define WRITE | ( | c | ) | gvl_write_char(dbuff->ndx_new++, &(dbuff->new), c) |
writing and reading isosurface data
Definition at line 58 of file gvl_calc.c.
void gvl_align_data | ( | int | pos, |
unsigned char ** | data | ||
) |
Append data to buffer.
pos | position index |
data | data buffer |
Definition at line 776 of file gvl_calc.c.
References G_debug(), and NULL.
Referenced by gvl_isosurf_calc(), and slice_calc().
int gvl_isosurf_calc | ( | geovol * | gvol | ) |
Fill data structure with computed isosurfaces polygons.
gvol | pointer to geovol struct |
Definition at line 585 of file gvl_calc.c.
References Cols, Depths, G_free(), gvl_align_data(), gvl_file_end_read(), gvl_file_get_volfile(), gvl_file_set_mode(), gvl_file_start_read(), gvl_write_char(), IS_IN_DATA, iso_calc_cube(), NULL, ResX, ResY, ResZ, Rows, SET_IN_DATA, and x.
Referenced by gvld_vol().
unsigned char gvl_read_char | ( | int | pos, |
const unsigned char * | data | ||
) |
Read char.
pos | position index |
data | data buffer |
Definition at line 762 of file gvl_calc.c.
int gvl_slices_calc | ( | geovol * | gvol | ) |
Calculate slices for given volume set.
gvol | pointer to geovol struct |
Definition at line 1034 of file gvl_calc.c.
References Cols, Depths, G_debug(), gvl_file_get_name(), Gvl_load_colors_data(), Gvl_unload_colors_data(), ResX, ResY, ResZ, Rows, and slice_calc().
Referenced by gvld_vol().
void gvl_write_char | ( | int | pos, |
unsigned char ** | data, | ||
unsigned char | c | ||
) |
ADD.
pos | |
data | |
c |
Definition at line 735 of file gvl_calc.c.
References BUFFER_SIZE, and G_debug().
Referenced by gvl_isosurf_calc(), and slice_calc().
void iso_calc_cube | ( | geovol_isosurf * | isosurf, |
int | x, | ||
int | y, | ||
int | z, | ||
data_buffer * | dbuff | ||
) |
Process cube.
isosurf | |
x,y,z | |
dbuff |
Definition at line 328 of file gvl_calc.c.
References BLU_MASK, cell_table, CELL_ENTRY::edges, FOR_0_TO_N, FOR_VAR, GRN_MASK, GS_v3norm(), Gvl_get_color_for_value(), IS_IN_DATA, iso_get_cube_grads(), iso_get_cube_values(), iso_get_range(), iso_r_cndx(), iso_w_cndx(), LINTERP, max, mc33_process_cube(), min, CELL_ENTRY::nedges, READ, RED_MASK, SKIP, TINTERP, WRITE, and x.
Referenced by gvl_isosurf_calc().
void iso_get_cube_grads | ( | geovol_isosurf * | isosurf, |
int | x, | ||
int | y, | ||
int | z, | ||
float(*) | grad[3] | ||
) |
Calculate cube grads.
isosurf | |
x,y,z | |
grad |
Definition at line 251 of file gvl_calc.c.
References Cols, Depths, iso_get_cube_value(), Rows, and x.
Referenced by iso_calc_cube().
int iso_get_cube_value | ( | geovol_isosurf * | isosurf, |
int | desc, | ||
int | x, | ||
int | y, | ||
int | z, | ||
float * | v | ||
) |
Get value from data input.
isosurf | ||
desc | ||
x,y,z | ||
[out] | value |
Definition at line 161 of file gvl_calc.c.
References gvl_file_get_data_type(), gvl_file_get_value(), gvl_file_get_volfile(), gvl_file_is_null_value(), ResX, ResY, ResZ, and x.
Referenced by iso_get_cube_grads(), and iso_get_cube_values().
int iso_get_cube_values | ( | geovol_isosurf * | isosurf, |
int | desc, | ||
int | x, | ||
int | y, | ||
int | z, | ||
float * | v | ||
) |
Read values for cube.
isosurf | ||
desc | ||
x,y,z | ||
[out] | v |
Definition at line 228 of file gvl_calc.c.
References iso_get_cube_value(), and x.
Referenced by iso_calc_cube().
void iso_get_range | ( | geovol_isosurf * | isosurf, |
int | desc, | ||
double * | min, | ||
double * | max | ||
) |
Get volume file values range.
isosurf | ||
desc | ||
[out] | min | |
[out] | max |
Definition at line 212 of file gvl_calc.c.
References gvl_file_get_min_max(), gvl_file_get_volfile(), max, and min.
Referenced by iso_calc_cube().
int iso_r_cndx | ( | data_buffer * | dbuff | ) |
Read cube index.
dbuff |
Definition at line 126 of file gvl_calc.c.
Referenced by iso_calc_cube().
void iso_w_cndx | ( | int | ndx, |
data_buffer * | dbuff | ||
) |
Write cube index.
ndx | |
dbuff |
Definition at line 91 of file gvl_calc.c.
References WRITE.
Referenced by iso_calc_cube().
int mc33_process_cube | ( | int | c_ndx, |
float * | v | ||
) |
ADD.
c_ndx | |
v |
Definition at line 307 of file gvl_calc2.c.
References m_case, m_config, m_subconfig, mc33_test_face(), mc33_test_interior(), OFFSET_T1, OFFSET_T10_1_1_S1, OFFSET_T10_1_1_S2, OFFSET_T10_1_2, OFFSET_T10_2_S1, OFFSET_T10_2_S2, OFFSET_T11, OFFSET_T12_1_1_S1, OFFSET_T12_1_1_S2, OFFSET_T12_1_2, OFFSET_T12_2_S1, OFFSET_T12_2_S2, OFFSET_T13_1_S1, OFFSET_T13_1_S2, OFFSET_T13_2_S1, OFFSET_T13_2_S2, OFFSET_T13_3_S1, OFFSET_T13_3_S2, OFFSET_T13_4, OFFSET_T13_5_1, OFFSET_T13_5_2, OFFSET_T14, OFFSET_T2, OFFSET_T3_1, OFFSET_T3_2, OFFSET_T4_1, OFFSET_T4_2, OFFSET_T5, OFFSET_T6_1_1, OFFSET_T6_1_2, OFFSET_T6_2, OFFSET_T7_1, OFFSET_T7_2_S1, OFFSET_T7_2_S2, OFFSET_T7_2_S3, OFFSET_T7_3_S1, OFFSET_T7_3_S2, OFFSET_T7_3_S3, OFFSET_T7_4_1, OFFSET_T7_4_2, OFFSET_T8, OFFSET_T9, OFFSET_TEST10, OFFSET_TEST12, OFFSET_TEST13, OFFSET_TEST3, OFFSET_TEST4, OFFSET_TEST6, and OFFSET_TEST7.
Referenced by iso_calc_cube().
int slice_calc | ( | geovol * | gvl, |
int | ndx_slc, | ||
void * | colors | ||
) |
Calculate slices.
gvl | pointer to geovol struct |
ndx_slc | |
colors |
Definition at line 855 of file gvl_calc.c.
References BLU_MASK, DISTANCE_2, GRN_MASK, gvl_align_data(), gvl_file_end_read(), gvl_file_get_volfile(), gvl_file_set_mode(), gvl_file_start_read(), Gvl_get_color_for_value(), gvl_write_char(), r, RED_MASK, ResX, ResY, ResZ, slice_get_value(), SLICE_MODE_INTERP_YES, X, x, and Y.
Referenced by gvl_slices_calc().
float slice_get_value | ( | geovol * | gvl, |
int | x, | ||
int | y, | ||
int | z | ||
) |
Get volume value.
gvl | pointer to geovol struct |
x,y,z |
Definition at line 816 of file gvl_calc.c.
References gvl_file_get_data_type(), gvl_file_get_value(), gvl_file_get_volfile(), and x.
Referenced by slice_calc().
int Cols |
Definition at line 79 of file gvl_calc.c.
Referenced by alloc_slice_buff(), alloc_vol_buff(), get_slice_value(), get_vol_value(), gvl_isosurf_calc(), gvl_slices_calc(), iso_get_cube_grads(), read_g3d_slice(), and read_g3d_vol().
int Depths |
Definition at line 79 of file gvl_calc.c.
Referenced by alloc_vol_buff(), gvl_isosurf_calc(), gvl_slices_calc(), iso_get_cube_grads(), and read_g3d_vol().
double ResX |
Definition at line 80 of file gvl_calc.c.
Referenced by gvl_isosurf_calc(), gvl_slices_calc(), iso_get_cube_value(), and slice_calc().
double ResY |
Definition at line 80 of file gvl_calc.c.
Referenced by gvl_isosurf_calc(), gvl_slices_calc(), iso_get_cube_value(), and slice_calc().
double ResZ |
Definition at line 80 of file gvl_calc.c.
Referenced by gvl_isosurf_calc(), gvl_slices_calc(), iso_get_cube_value(), and slice_calc().
int Rows |
Definition at line 79 of file gvl_calc.c.
Referenced by alloc_slice_buff(), alloc_vol_buff(), get_vol_value(), gvl_isosurf_calc(), gvl_slices_calc(), iso_get_cube_grads(), read_g3d_slice(), and read_g3d_vol().