GRASS 8 Programmer's Manual
8.5.0(2026)-8d6ceba290
Toggle main menu visibility
Loading...
Searching...
No Matches
exag.c
Go to the documentation of this file.
1
/*!
2
\file lib/nviz/exag.c
3
4
\brief Nviz library -- Exaggeration functions
5
6
Based on visualization/nviz/src/exag.c
7
8
(C) 2008, 2010 by the GRASS Development Team
9
This program is free software under the GNU General Public License
10
(>=v2). Read the file COPYING that comes with GRASS for details.
11
12
\author Updated/modified by Martin Landa <landa.martin gmail.com> (Google SoC
13
2008/2010)
14
*/
15
16
#include <grass/nviz.h>
17
18
/*!
19
\brief Get view height
20
21
Call after initial data has been loaded
22
23
\param[out] val height value
24
\param[out] min min value (or NULL)
25
\param[out] max max value (or NULL)
26
27
\return 1
28
*/
29
int
Nviz_get_exag_height
(
double
*val,
double
*
min
,
double
*
max
)
30
{
31
float
longdim, exag, texag, hmin, hmax, fmin, fmax;
32
int
nsurfs, i;
33
int
*surf_list =
NULL
;
34
35
surf_list =
GS_get_surf_list
(&nsurfs);
36
if
(nsurfs) {
37
GS_get_longdim
(&longdim);
38
GS_get_zrange_nz
(&hmin, &hmax);
39
40
exag = 0.0;
41
for
(i = 0; i < nsurfs; i++) {
42
if
(
GS_get_exag_guess
(surf_list[i], &texag) > -1)
43
if
(texag)
44
exag = texag > exag ? texag : exag;
45
}
46
if
(exag == 0.0)
47
exag = 1.0;
48
49
fmin = hmin - (2. * longdim / exag);
50
fmax = hmin + (3 * longdim / exag);
51
}
52
else
{
53
fmax = 10000.0;
54
fmin = 0.0;
55
}
56
57
*val = fmin + (fmax - fmin) / 2.0;
58
59
if
(
min
)
60
*
min
= fmin;
61
62
if
(
max
)
63
*
max
= fmax;
64
65
G_debug
(1,
"Nviz_get_exag_height(): value = %f min = %f max = %f"
, *val,
66
min
? *
min
: 0.0,
max
? *
max
: 0.0);
67
G_free
(surf_list);
68
69
return
1;
70
}
71
72
/*!
73
\brief Get view z-exag value
74
75
Call after initial data has been loaded
76
77
\return value
78
*/
79
double
Nviz_get_exag
(
void
)
80
{
81
float
exag, texag;
82
int
nsurfs, i;
83
int
*surf_list =
NULL
;
84
85
surf_list =
GS_get_surf_list
(&nsurfs);
86
87
exag = 0.0;
88
for
(i = 0; i < nsurfs; i++) {
89
if
(
GS_get_exag_guess
(surf_list[i], &texag) > -1) {
90
if
(texag)
91
exag = (texag > exag) ? texag : exag;
92
}
93
}
94
95
if
(exag == 0.0)
96
exag = 1.0;
97
G_free
(surf_list);
98
99
G_debug
(1,
"Nviz_get_exag(): value = %f"
, exag);
100
return
exag;
101
}
G_free
void G_free(void *buf)
Free allocated memory.
Definition
alloc.c:147
NULL
#define NULL
Definition
ccmath.h:32
G_debug
int G_debug(int level, const char *msg,...)
Print debugging message.
Definition
debug.c:66
Nviz_get_exag_height
int Nviz_get_exag_height(double *val, double *min, double *max)
Get view height.
Definition
exag.c:29
Nviz_get_exag
double Nviz_get_exag(void)
Get view z-exag value.
Definition
exag.c:79
GS_get_zrange_nz
void GS_get_zrange_nz(float *min, float *max)
Get Z extents for all loaded surfaces.
Definition
gs2.c:2358
GS_get_surf_list
int * GS_get_surf_list(int *numsurfs)
Get surface list.
Definition
gs2.c:1532
GS_get_exag_guess
int GS_get_exag_guess(int id, float *exag)
Get exag-value guess.
Definition
gs2.c:2307
GS_get_longdim
int GS_get_longdim(float *dim)
Get largest dimension.
Definition
gs2.c:140
min
#define min(a, b)
Definition
pngdriver/draw_bitmap.c:19
max
#define max(a, b)
Definition
pngdriver/draw_bitmap.c:22
nviz
exag.c
Generated on
for GRASS 8 Programmer's Manual by
1.17.0