Skip to content

Commit 12c868b

Browse files
committed
Apply transform to distance calculation for pitch masking.
1 parent 0f97617 commit 12c868b

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

alg/viewshed/viewshed_executor.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -991,7 +991,10 @@ void ViewshedExecutor::maskLowPitch(double &dfZ, int nXOffset, int nYOffset)
991991
if (std::isnan(m_lowTanPitch))
992992
return;
993993

994-
double dfDist = std::sqrt(nXOffset * nXOffset + nYOffset * nYOffset);
994+
double dfX = m_adfTransform[1] * nXOffset + m_adfTransform[2] * nYOffset;
995+
double dfY = m_adfTransform[4] * nXOffset + m_adfTransform[5] * nYOffset;
996+
double dfR2 = dfX * dfX + dfY * dfY;
997+
double dfDist = std::sqrt(dfR2);
995998
double dfZmask = dfDist * m_lowTanPitch;
996999
if (dfZmask > dfZ)
9971000
dfZ = dfZmask;
@@ -1010,7 +1013,10 @@ void ViewshedExecutor::maskHighPitch(double &dfResult, double dfZ, int nXOffset,
10101013
if (std::isnan(m_highTanPitch))
10111014
return;
10121015

1013-
double dfDist = std::sqrt(nXOffset * nXOffset + nYOffset * nYOffset);
1016+
double dfX = m_adfTransform[1] * nXOffset + m_adfTransform[2] * nYOffset;
1017+
double dfY = m_adfTransform[4] * nXOffset + m_adfTransform[5] * nYOffset;
1018+
double dfR2 = dfX * dfX + dfY * dfY;
1019+
double dfDist = std::sqrt(dfR2);
10141020
double dfZmask = dfDist * m_highTanPitch;
10151021
if (dfZmask < dfZ)
10161022
dfResult = oOpts.outOfRangeVal;

0 commit comments

Comments
 (0)