GRASS Programmer's Manual
6.4.2(2012)
|
00001 00015 #include <grass/nviz.h> 00016 00028 int Nviz_get_exag_height(double *val, double *min, double *max) 00029 { 00030 float longdim, exag, texag, hmin, hmax, fmin, fmax; 00031 int nsurfs, i, *surf_list; 00032 00033 surf_list = GS_get_surf_list(&nsurfs); 00034 if (nsurfs) { 00035 GS_get_longdim(&longdim); 00036 GS_get_zrange_nz(&hmin, &hmax); 00037 00038 exag = 0.0; 00039 for (i = 0; i < nsurfs; i++) { 00040 if (GS_get_exag_guess(surf_list[i], &texag) > -1) 00041 if (texag) 00042 exag = texag > exag ? texag : exag; 00043 } 00044 if (exag == 0.0) 00045 exag = 1.0; 00046 00047 fmin = hmin - (2. * longdim / exag); 00048 fmax = hmin + (3 * longdim / exag); 00049 } 00050 else { 00051 fmax = 10000.0; 00052 fmin = 0.0; 00053 } 00054 00055 *val = fmin + (fmax - fmin) / 2.0; 00056 00057 if (min) 00058 *min = fmin; 00059 00060 if (max) 00061 *max = fmax; 00062 00063 G_debug(1, "Nviz_get_exag_height(): value = %f min = %f max = %f", 00064 *val, min ? *min : 0.0 , max ? *max : 0.0); 00065 00066 return 1; 00067 } 00068 00076 double Nviz_get_exag() 00077 { 00078 float exag, texag; 00079 int nsurfs, i, *surf_list; 00080 00081 surf_list = GS_get_surf_list(&nsurfs); 00082 00083 exag = 0.0; 00084 for (i = 0; i < nsurfs; i++) { 00085 if (GS_get_exag_guess(surf_list[i], &texag) > -1) { 00086 if (texag) 00087 exag = (texag > exag) ? texag : exag; 00088 } 00089 } 00090 00091 if (exag == 0.0) 00092 exag = 1.0; 00093 00094 if (nsurfs > 0) 00095 G_free(surf_list); 00096 00097 G_debug(1, "Nviz_get_exag(): value = %f", exag); 00098 return exag; 00099 }