EgtGeomKernel 2.5b1 :
- aggiunte funzioni AdjustAngleInSpan, AngleInRange e AdjustAngleInRange.
This commit is contained in:
@@ -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) ;
|
||||
}
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user