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:
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 */ \