htsky

Load and structure a vertically stratified atmosphere
git clone git://git.meso-star.fr/htsky.git
Log | Files | Refs | README | LICENSE

commit b754af0e37dbd1c9732e6d310e0a0f7402dabbff
parent 59385134eaf6cdb5d442e1c4a4af43ea40a866d1
Author: Najda Villefranque <najda.villefranque@gmail.com>
Date:   Wed, 27 May 2020 19:18:54 +0200

Allow SW integration in non-image mode

Diffstat:
Msrc/htsky.c | 21++++++++++++++-------
Msrc/htsky.h | 6++++--
2 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/src/htsky.c b/src/htsky.c @@ -77,7 +77,6 @@ setup_bands_properties(struct htsky* sky) res = RES_MEM_ERR; goto error; } - FOR_EACH(iband, sky->bands_range[0], sky->bands_range[1]+1) { struct htgop_spectral_interval band; double band_wlens[2]; @@ -517,6 +516,7 @@ htsky_create ref_init(&sky->ref); sky->allocator = allocator; sky->verbose = args->verbose; + sky->is_long_wave = args->is_long_wave ; sky->repeat_clouds = args->repeat_clouds; sky->is_cloudy = args->htcp_filename != NULL; darray_split_init(sky->allocator, &sky->svx2htcp_z); @@ -564,21 +564,28 @@ htsky_create args->htgop_filename); goto error; } - /* If the long wave range is degenerated use the default wavelength range, + + + /* If the spectral range is degenerated use the default wavelength range, * i.e. the short wave wavelengths of the CIE XYZ color space */ - if(args->wlen_lw_range[0] > args->wlen_lw_range[1]) { + if(args->wlen_range[0] > args->wlen_range[1]) { double wnums[2]; wnums[0] = wavelength_to_wavenumber(780.0); wnums[1] = wavelength_to_wavenumber(380.0); res = htgop_get_sw_spectral_intervals(sky->htgop, wnums, sky->bands_range); if(res != RES_OK) goto error; } else { + /* the range is not degenerated ; it is either sw or lw */ double wnums[2]; - wnums[0] = wavelength_to_wavenumber(args->wlen_lw_range[1]); - wnums[1] = wavelength_to_wavenumber(args->wlen_lw_range[0]); - res = htgop_get_lw_spectral_intervals(sky->htgop, wnums, sky->bands_range); + sky->is_long_wave = args->is_long_wave; /* 0 by default */ + wnums[0] = wavelength_to_wavenumber(args->wlen_range[1]); + wnums[1] = wavelength_to_wavenumber(args->wlen_range[0]); + if (sky->is_long_wave) { + res = htgop_get_lw_spectral_intervals(sky->htgop, wnums, sky->bands_range); + } else { + res = htgop_get_sw_spectral_intervals(sky->htgop, wnums, sky->bands_range); + } if(res != RES_OK) goto error; - sky->is_long_wave = 1; } print_spectral_info(sky); diff --git a/src/htsky.h b/src/htsky.h @@ -69,7 +69,8 @@ struct htsky_args { const char* htmie_filename; const char* cache_filename; /* May be NULL <=> no cached data structure */ const char* name; /* Name of the sky. Used by the Star-MTL binding */ - double wlen_lw_range[2]; /* Long wave wavelength range to handle. In nm */ + int is_long_wave ; + double wlen_range[2]; /* Spectral range to handle. In nm */ unsigned grid_max_definition[3]; /* Maximum definition of the grid */ double optical_thickness; /* Threshold used during octree building */ unsigned nthreads; /* Hint on the number of threads to use */ @@ -83,7 +84,8 @@ struct htsky_args { NULL, /* htmie filename */ \ NULL, /* cache filename */ \ "sky", /* Name */ \ - {DBL_MAX,-DBL_MAX}, /* Long wave wavelengths. Degenerated <=> short wave */ \ + 0, /* is_long_wave */ \ + {DBL_MAX,-DBL_MAX}, /* Spectral integration. Degenerated <=> short wave */ \ {UINT_MAX, UINT_MAX, UINT_MAX}, /* Maximum definition of the grid */ \ 1, /* Optical thickness a*/ \ (unsigned)~0, /* #threads */ \