|
GRASS 8 Programmer's Manual 8.6.0dev(2026)-1d1e47ad9d
|
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.
Definition at line 806 of file gvl_calc.c.
Definition at line 47 of file gvl_calc.c.
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.
Definition at line 60 of file gvl_calc.c.
| #define SLICE_MODE_INTERP_NO 0 |
Definition at line 809 of file gvl_calc.c.
| #define SLICE_MODE_INTERP_YES 1 |
Definition at line 810 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.
Append data to buffer.
| pos | position index |
| data | data buffer |
Definition at line 777 of file gvl_calc.c.
References G_debug(), G_free(), G_realloc, and NULL.
Referenced by gvl_isosurf_calc(), and slice_calc().
Fill data structure with computed isosurfaces polygons.
| gvol | pointer to geovol struct |
Definition at line 585 of file gvl_calc.c.
References geovol_isosurf::att, geovol_isosurf_att::att_src, ATT_TOPO, geovol_isosurf_att::changed, Cols, geovol_isosurf::data, geovol_isosurf::data_desc, Depths, G_free(), G_malloc, gvl_align_data(), gvl_file_end_read(), gvl_file_get_volfile(), gvl_file_set_mode(), gvl_file_start_read(), gvl_write_char(), geovol_isosurf_att::hfile, IS_IN_DATA, iso_calc_cube(), MAP_ATT, MAX_ATTS, NULL, read, ResX, ResY, ResZ, Rows, SET_IN_DATA, and x.
Referenced by gvld_vol().
Read char.
| pos | position index |
| data | data buffer |
Definition at line 763 of file gvl_calc.c.
Calculate slices for given volume set.
| gvol | pointer to geovol struct |
Definition at line 1038 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().
ADD.
| pos | |
| data | |
| c |
Definition at line 736 of file gvl_calc.c.
References BUFFER_SIZE, G_debug(), and G_realloc.
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 geovol_isosurf::att, ATT_COLOR, geovol_isosurf_att::att_data, ATT_EMIT, ATT_MASK, ATT_SHINE, geovol_isosurf_att::att_src, ATT_TOPO, ATT_TRANSP, BLU_MASK, cell_table, geovol_isosurf_att::changed, 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, MAP_ATT, max, MAX_ATTS, mc33_process_cube(), min, CELL_ENTRY::nedges, READ, RED_MASK, SKIP, TINTERP, WRITE, and x.
Referenced by gvl_isosurf_calc().
Calculate cube grads.
| isosurf | |
| x,y,z | |
| grad |
Definition at line 251 of file gvl_calc.c.
References ATT_TOPO, Cols, Depths, iso_get_cube_value(), Rows, and x.
Referenced by iso_calc_cube().
Get value from data input.
| isosurf | ||
| desc | ||
| x,y,z | ||
| [out] | v | value |
Definition at line 161 of file gvl_calc.c.
References geovol_isosurf::att, ATT_MASK, ATT_TOPO, geovol_isosurf_att::constant, gvl_file_get_data_type(), gvl_file_get_value(), gvl_file_get_volfile(), gvl_file_is_null_value(), geovol_isosurf_att::hfile, ResX, ResY, ResZ, VOL_DTYPE_DOUBLE, VOL_DTYPE_FLOAT, and x.
Referenced by iso_get_cube_grads(), and iso_get_cube_values().
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 geovol_isosurf::att, gvl_file_get_min_max(), gvl_file_get_volfile(), geovol_isosurf_att::hfile, 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().
Write cube index.
| ndx | |
| dbuff |
Definition at line 91 of file gvl_calc.c.
References WRITE.
Referenced by iso_calc_cube().
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().
Calculate slices.
| gvl | pointer to geovol struct |
| ndx_slc | |
| colors |
Definition at line 859 of file gvl_calc.c.
References BLU_MASK, geovol_slice::data, geovol_slice::dir, 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(), geovol_slice::mode, r, RED_MASK, ResX, ResY, ResZ, slice_get_value(), SLICE_MODE_INTERP_YES, X, x, geovol_slice::x1, geovol_slice::x2, Y, geovol_slice::y1, geovol_slice::y2, geovol_slice::z1, and geovol_slice::z2.
Referenced by gvl_slices_calc().
Get volume value.
| gvl | pointer to geovol struct |
| x,y,z |
Definition at line 820 of file gvl_calc.c.
References gvl_file_get_data_type(), gvl_file_get_value(), gvl_file_get_volfile(), VOL_DTYPE_DOUBLE, VOL_DTYPE_FLOAT, 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().