Hemispherical altitude/azimuth sky-grid sampling.
#include <cassert>
#include <cmath>
#include <iostream>
int main() {
auto cells = uniform.cells();
std::cout << "uniform 10deg grid: " << cells.size() << " cells\n";
assert(cells.size() == static_cast<std::size_t>(9 * 36));
double total_sr = 0.0;
for (const auto &cell : equal_area.cells()) {
total_sr += cell.solid_angle.value();
}
std::cout << "equal-area total solid angle: " << total_sr
masked.with_alt_range(qtty::Degree(20.0), qtty::Degree(90.0));
std::cout << "20deg horizon mask: " << masked.cells().size() << " cells\n";
assert(masked.cells().size() < cells.size());
std::cout << "SkyGrid sampling OK\n";
return 0;
}
static SkyGrid with_steps(qtty::Degree alt_step, qtty::Degree az_step)
Uniform grid with independent altitude and azimuth steps over [0°, 90°).
static SkyGrid equal_area(qtty::Degree alt_step, qtty::Degree az_step_at_horizon)
Equal-area grid: azimuth count per altitude ring scales with cos(alt).
static SkyGrid uniform(qtty::Degree step)
Uniform grid with equal altitude and azimuth steps over [0°, 90°).
constexpr double pi
Circle constant pi (radians per half-turn).
Umbrella header for the siderust C++ wrapper library.