Hi,
gibt es irgendwie einen besseren Weg zwei Grad-Variablen zu vergleichen und ihren Unterschied herauszubekommen?
(man bedenke, dass ich nicht die normale Differenz, sondern eine Differenz, die beachtet, dass ein Kreis 360° hat.
Es ist also unmöglich einen größerer Wert als 180 herauszubekommen.)
Beispiel 1:
Zahl1: 25.5
Zahl2: 38.6
Unterschied: 13.1
Beispiel 2:
Zahl1: 10.0
Zahl2: 340.0
Unterschied: 30.0
Beispiel 3:
Zahl1: 10.0
Zahl2: 189.0
Unterschied: 179.0
Beispiel 4:
Zahl1: 10.0
Zahl2: 191.0
Unterschied: 179.0
Ich habs momentan so (funktioniert perfekt):
stock Float:CalcDifference(Float:value1,Float:value2)
{
new Float:calc=floatabs((value1-value2));
if(calc>180.0) return floatabs(calc-360.0);
return calc;
}
Da ich diese Abfrage in einem Timer verwende, der mehrmals in der Sekunde aufgerufen wird,
möchte ich diese Abfrage so gestalten, dass der Prozessor so wenig wie möglich rechnen muss.
Die if-Abfrage und die beiden floatabs-Funktionsnutzungen stören mich da ein bisschen.
Außerdem würde ich das lieber direkt machen, ohne eine Extra-Funktion aufzurufen.
Gibt es da eine intelligentere / schönere / elegantere Lösung?
Danke für eure Antworten!