Wenn man mit periodischen Werten arbeitet, dann ist es häufig notwendig einen Wert in einen bestimmten Bereich zu bringen.
Als Beispiel ist der Sinus von 380° der selbe wie von 20°.
Diese Methode bringt einen Wert auf den Bereich 0 bis circle.
Funktionsweise
Es wird einfach der Rest bei der Division value/circle genommen. Bei negativen Werten wird aber noch ein weiteres circle addiert, damit das Ergebnis immer positiv ist.
Erweiterungsmethode
Ich war mir nicht sicher ob man dafür eine Erweiterungsmethode erstellen sollte. Unter "Normalize" könnte man noch mehr verstehen, besonders bei Gleitkommazahlen. Wer es trotzdem möchte kann das Attribut bzw. Schlüsselwort this einfach ergänzen.
/// <summary>
/// Bringt einen Wert in den angegebenen Bereich indem ein Wert addiert bzw. subtrahiert wird.
/// </summary>
/// <param name="value">Der zu normalisierende Wert.</param>
/// <param name="circle">Die Größe einer Periodizität.</param>
static double Normalize(double value, double circle)
{
return value < 0 ? value % circle + circle : value % circle;
}
2 Kommentare zum Snippet