GRASS Programmer's Manual  6.4.2(2012)
exag.c
Go to the documentation of this file.
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 }
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines