122 double solar_elevation)
124 const double *elev_matrix;
126 int int_turbidity = int(turbidity);
127 double turbidity_rem = turbidity - double(int_turbidity);
129 solar_elevation =
pow(solar_elevation / (
MATH_PI / 2.0), (1.0 / 3.0));
133 elev_matrix = dataset + (9 * 6 * (int_turbidity - 1));
138 (1.0 - albedo) * (1.0 - turbidity_rem) *
139 (
pow(1.0 - solar_elevation, 5.0) * elev_matrix[
i] +
140 5.0 *
pow(1.0 - solar_elevation, 4.0) * solar_elevation * elev_matrix[
i + 9] +
141 10.0 *
pow(1.0 - solar_elevation, 3.0) *
pow(solar_elevation, 2.0) * elev_matrix[
i + 18] +
142 10.0 *
pow(1.0 - solar_elevation, 2.0) *
pow(solar_elevation, 3.0) * elev_matrix[
i + 27] +
143 5.0 * (1.0 - solar_elevation) *
pow(solar_elevation, 4.0) * elev_matrix[
i + 36] +
144 pow(solar_elevation, 5.0) * elev_matrix[
i + 45]);
148 elev_matrix = dataset + (9 * 6 * 10 + 9 * 6 * (int_turbidity - 1));
152 (albedo) * (1.0 - turbidity_rem) *
153 (
pow(1.0 - solar_elevation, 5.0) * elev_matrix[
i] +
154 5.0 *
pow(1.0 - solar_elevation, 4.0) * solar_elevation * elev_matrix[
i + 9] +
155 10.0 *
pow(1.0 - solar_elevation, 3.0) *
pow(solar_elevation, 2.0) * elev_matrix[
i + 18] +
156 10.0 *
pow(1.0 - solar_elevation, 2.0) *
pow(solar_elevation, 3.0) * elev_matrix[
i + 27] +
157 5.0 * (1.0 - solar_elevation) *
pow(solar_elevation, 4.0) * elev_matrix[
i + 36] +
158 pow(solar_elevation, 5.0) * elev_matrix[
i + 45]);
161 if (int_turbidity == 10) {
166 elev_matrix = dataset + (9 * 6 * (int_turbidity));
170 (1.0 - albedo) * (turbidity_rem) *
171 (
pow(1.0 - solar_elevation, 5.0) * elev_matrix[
i] +
172 5.0 *
pow(1.0 - solar_elevation, 4.0) * solar_elevation * elev_matrix[
i + 9] +
173 10.0 *
pow(1.0 - solar_elevation, 3.0) *
pow(solar_elevation, 2.0) * elev_matrix[
i + 18] +
174 10.0 *
pow(1.0 - solar_elevation, 2.0) *
pow(solar_elevation, 3.0) * elev_matrix[
i + 27] +
175 5.0 * (1.0 - solar_elevation) *
pow(solar_elevation, 4.0) * elev_matrix[
i + 36] +
176 pow(solar_elevation, 5.0) * elev_matrix[
i + 45]);
180 elev_matrix = dataset + (9 * 6 * 10 + 9 * 6 * (int_turbidity));
184 (albedo) * (turbidity_rem) *
185 (
pow(1.0 - solar_elevation, 5.0) * elev_matrix[
i] +
186 5.0 *
pow(1.0 - solar_elevation, 4.0) * solar_elevation * elev_matrix[
i + 9] +
187 10.0 *
pow(1.0 - solar_elevation, 3.0) *
pow(solar_elevation, 2.0) * elev_matrix[
i + 18] +
188 10.0 *
pow(1.0 - solar_elevation, 2.0) *
pow(solar_elevation, 3.0) * elev_matrix[
i + 27] +
189 5.0 * (1.0 - solar_elevation) *
pow(solar_elevation, 4.0) * elev_matrix[
i + 36] +
190 pow(solar_elevation, 5.0) * elev_matrix[
i + 45]);
197 double solar_elevation)
199 const double *elev_matrix;
201 int int_turbidity = int(turbidity);
202 double turbidity_rem = turbidity - double(int_turbidity);
204 solar_elevation =
pow(solar_elevation / (
MATH_PI / 2.0), (1.0 / 3.0));
207 elev_matrix = dataset + (6 * (int_turbidity - 1));
209 res = (1.0 - albedo) * (1.0 - turbidity_rem) *
210 (
pow(1.0 - solar_elevation, 5.0) * elev_matrix[0] +
211 5.0 *
pow(1.0 - solar_elevation, 4.0) * solar_elevation * elev_matrix[1] +
212 10.0 *
pow(1.0 - solar_elevation, 3.0) *
pow(solar_elevation, 2.0) * elev_matrix[2] +
213 10.0 *
pow(1.0 - solar_elevation, 2.0) *
pow(solar_elevation, 3.0) * elev_matrix[3] +
214 5.0 * (1.0 - solar_elevation) *
pow(solar_elevation, 4.0) * elev_matrix[4] +
215 pow(solar_elevation, 5.0) * elev_matrix[5]);
218 elev_matrix = dataset + (6 * 10 + 6 * (int_turbidity - 1));
220 res += (albedo) * (1.0 - turbidity_rem) *
221 (
pow(1.0 - solar_elevation, 5.0) * elev_matrix[0] +
222 5.0 *
pow(1.0 - solar_elevation, 4.0) * solar_elevation * elev_matrix[1] +
223 10.0 *
pow(1.0 - solar_elevation, 3.0) *
pow(solar_elevation, 2.0) * elev_matrix[2] +
224 10.0 *
pow(1.0 - solar_elevation, 2.0) *
pow(solar_elevation, 3.0) * elev_matrix[3] +
225 5.0 * (1.0 - solar_elevation) *
pow(solar_elevation, 4.0) * elev_matrix[4] +
226 pow(solar_elevation, 5.0) * elev_matrix[5]);
227 if (int_turbidity == 10) {
232 elev_matrix = dataset + (6 * (int_turbidity));
234 res += (1.0 - albedo) * (turbidity_rem) *
235 (
pow(1.0 - solar_elevation, 5.0) * elev_matrix[0] +
236 5.0 *
pow(1.0 - solar_elevation, 4.0) * solar_elevation * elev_matrix[1] +
237 10.0 *
pow(1.0 - solar_elevation, 3.0) *
pow(solar_elevation, 2.0) * elev_matrix[2] +
238 10.0 *
pow(1.0 - solar_elevation, 2.0) *
pow(solar_elevation, 3.0) * elev_matrix[3] +
239 5.0 * (1.0 - solar_elevation) *
pow(solar_elevation, 4.0) * elev_matrix[4] +
240 pow(solar_elevation, 5.0) * elev_matrix[5]);
243 elev_matrix = dataset + (6 * 10 + 6 * (int_turbidity));
245 res += (albedo) * (turbidity_rem) *
246 (
pow(1.0 - solar_elevation, 5.0) * elev_matrix[0] +
247 5.0 *
pow(1.0 - solar_elevation, 4.0) * solar_elevation * elev_matrix[1] +
248 10.0 *
pow(1.0 - solar_elevation, 3.0) *
pow(solar_elevation, 2.0) * elev_matrix[2] +
249 10.0 *
pow(1.0 - solar_elevation, 2.0) *
pow(solar_elevation, 3.0) * elev_matrix[3] +
250 5.0 * (1.0 - solar_elevation) *
pow(solar_elevation, 4.0) * elev_matrix[4] +
251 pow(solar_elevation, 5.0) * elev_matrix[5]);