diff --git a/Angle.cpp b/Angle.cpp index e0ebeaa..8f8e4ee 100644 --- a/Angle.cpp +++ b/Angle.cpp @@ -63,3 +63,57 @@ AngleInSpan( double dAngDeg, double dAngRefDeg, double dAngSpanDeg) dAngDiffDeg < dHalfAngSpanDeg + EPS_ANG_SMALL) ; } } + +//---------------------------------------------------------------------------- +bool +AngleInRange( double dAngDeg, double dAngMinDeg, double dAngMaxDeg) +{ + return AngleInSpan( dAngDeg, ( dAngMinDeg + dAngMaxDeg) / 2, dAngMaxDeg - dAngMinDeg) ; +} + +//---------------------------------------------------------------------------- +bool +AdjustAngleInSpan( double& dAngDeg, double dAngRefDeg, double dAngSpanDeg) +{ + // Verifico consistenza intervallo + if ( dAngSpanDeg < -EPS_ANG_ZERO) + return false ; + // Se intervallo vero + if ( dAngSpanDeg > EPS_ANG_SMALL) { + double dTryDeg = dAngDeg ; + // eseguo gli aggiustamenti + while ( dTryDeg < dAngRefDeg - dAngSpanDeg) + dTryDeg += ANG_FULL ; + while ( dTryDeg > dAngRefDeg + dAngSpanDeg) + dTryDeg -= ANG_FULL ; + // verifico + if ( dTryDeg >= dAngRefDeg - dAngSpanDeg && dTryDeg <= dAngRefDeg + dAngSpanDeg) { + dAngDeg = dTryDeg ; + return true ; + } + return false ; + } + // altrimenti un valore + else { + double dTryDeg = dAngDeg ; + // eseguo gli aggiustamenti + while ( dTryDeg < dAngRefDeg - EPS_ANG_SMALL) + dTryDeg += ANG_FULL ; + while ( dTryDeg > dAngRefDeg + EPS_ANG_SMALL) + dTryDeg -= ANG_FULL ; + // verifico + if ( abs( dTryDeg - dAngRefDeg) < EPS_ANG_SMALL) { + dAngDeg = dAngRefDeg ; + return true ; + } + else + return false ; + } +} + +//---------------------------------------------------------------------------- +bool +AdjustAngleInRange( double& dAngDeg, double dAngMinDeg, double dAngMaxDeg) +{ + return AdjustAngleInSpan( dAngDeg, ( dAngMinDeg + dAngMaxDeg) / 2, dAngMaxDeg - dAngMinDeg) ; +} diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index 613ee4f..1d89882 100644 Binary files a/EgtGeomKernel.rc and b/EgtGeomKernel.rc differ