double snapToZeroRange(double v, double fWidth)
{ if(fTools::equalZero(fWidth))
{ // with no range all snaps to range bound return0.0;
} else
{ if(v < 0.0 || v > fWidth)
{ double fRetval(fmod(v, fWidth));
if(fRetval < 0.0)
{
fRetval += fWidth;
}
return fRetval;
} else
{ return v;
}
}
}
double snapToRange(double v, double fLow, double fHigh)
{ if(fTools::equal(fLow, fHigh))
{ // with no range all snaps to range bound return0.0;
} else
{ if(fLow > fHigh)
{ // correct range order. Evtl. assert this (?)
std::swap(fLow, fHigh);
}
double normalizeToRange(double v, constdouble fRange)
{ if(fRange <= 0.0)
{ // with a zero (or less) range, all normalizes to 0.0 return0.0;
}
if(v < 0.0)
{ if(fTools::moreOrEqual(v, -fRange))
{ // in range [-fRange, 0.0[, shift one step return v + fRange;
}
// re-calculate return v - (floor(v/fRange)*fRange);
} else
{ if(fTools::less(v, fRange))
{ // already in range [0.0, fRange[, nothing to do return v;
}
// re-calculate return v - (floor(v/fRange)*fRange);
}
}
} // end of namespace basegfx
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.