Start angle should properly reflect the edge of the bin instead of the middle

This commit is contained in:
Dan Paulat 2024-01-01 23:05:56 -06:00
parent fe76cd67d0
commit bb0419aa3e
3 changed files with 31 additions and 61 deletions

View file

@ -440,7 +440,7 @@ void RadarProductManager::Initialize()
const uint16_t radial =
static_cast<uint16_t>(radialGate / common::MAX_DATA_MOMENT_GATES);
const float angle = radial * 0.5f - 0.25f; // 0.5 degree radial
const float angle = radial * 0.5f; // 0.5 degree radial
const float range = (gate + 1) * gateSize;
const size_t offset = radialGate * 2;
@ -477,7 +477,7 @@ void RadarProductManager::Initialize()
const uint16_t radial =
static_cast<uint16_t>(radialGate / common::MAX_DATA_MOMENT_GATES);
const float angle = radial * 1.0f - 0.5f; // 1 degree radial
const float angle = radial * 1.0f; // 1 degree radial
const float range = (gate + 1) * gateSize;
const size_t offset = radialGate * 2;

View file

@ -738,26 +738,12 @@ void Level2ProductViewImpl::ComputeCoordinates(
auto radials = boost::irange<std::uint32_t>(0u, numRadials);
auto gates = boost::irange<std::uint32_t>(0u, numRangeBins);
std::for_each(
std::execution::par_unseq,
std::for_each(std::execution::par_unseq,
radials.begin(),
radials.end(),
[&](std::uint32_t radial)
{
// Angles are ordered clockwise, delta should be positive. Only correct
// less than -90 degrees, this should cover any "overlap" scenarios.
float deltaAngle =
(radial == 0) ? (*radarData)[0]->azimuth_angle() -
(*radarData)[numRadials - 1]->azimuth_angle() :
(*radarData)[radial]->azimuth_angle() -
(*radarData)[radial - 1]->azimuth_angle();
while (deltaAngle < -90.0f)
{
deltaAngle += 360.0f;
}
const float angle =
(*radarData)[radial]->azimuth_angle() - (deltaAngle * 0.5f);
const float angle = (*radarData)[radial]->azimuth_angle();
std::for_each(std::execution::par_unseq,
gates.begin(),
@ -765,7 +751,8 @@ void Level2ProductViewImpl::ComputeCoordinates(
[&](std::uint32_t gate)
{
const std::uint32_t radialGate =
radial * common::MAX_DATA_MOMENT_GATES + gate;
radial * common::MAX_DATA_MOMENT_GATES +
gate;
const float range = (gate + 1) * gateSize;
const std::size_t offset = radialGate * 2;

View file

@ -454,24 +454,7 @@ void Level3RadialViewImpl::ComputeCoordinates(
radials.end(),
[&](std::uint32_t radial)
{
float deltaAngle;
if (radial == 0)
{
// Angles are ordered clockwise, delta should be positive
deltaAngle = radialData->start_angle(0) -
radialData->start_angle(numRadials - 1);
while (deltaAngle < 0.0f)
{
deltaAngle += 360.0f;
}
}
else
{
deltaAngle = radialData->delta_angle(radial);
}
const float angle =
radialData->start_angle(radial) - (deltaAngle * 0.5f);
const float angle = radialData->start_angle(radial);
std::for_each(std::execution::par_unseq,
gates.begin(),