Hallo alle zusammen.
Mir fällt immer wieder auf das einige User Probleme mit dem (um)skalieren von Werten haben.
Deswegen möchte ich hier nochmal eine Funktion veröffentlichen die genau das macht.
Die Funktion ist sehr einfach und erfüllt einem alles was man braucht.
Die Funktion rechnet linear, auch über die Eckpunkte hinaus. Also kein Begrenzen.
Es können auch negative Steigungen angegeben werden. Die Mathematik wird’s schon richten.
Das ist die Funktion:
function Scaling($In, $InUG, $InOG, $OutUG, $OutOG)
{
/*=============================================================
Scaling - Martin Heinzel - 21.09.2011
Version: 1.0
Beschreibung:
Diese Funktion scaliert einen Wert nach der Form:
( ( In - In_Min ) )
Out = (------------------- x ( Out_Max - Out_Min ) ) + Out_Min
(( In_Max - In_Min ) )
================================================================*/
return ($In - $InUG) / ($InOG - $InUG) * ($OutOG - $OutUG) + $OutUG;
}
Anwendungsbeispiele:
Es soll eine Temperatur in den Bereichen von 10.0 – 50.0°C um skaliert werden in 0.0 – 100.0%.
Steigung → positiv,positiv
$Out = Scaling($Temperatur, 10.0, 50.0, 0.0, 100.0);
Es soll eine Temperatur in den Bereichen von 10.0 – 50.0°C um skaliert werden in 100.0 – 0.0%.
Steigung → positiv,negativ
$Out = Scaling($Temperatur, 10.0, 50.0, 100.0, 0.0);
Es soll eine Temperatur in den Bereichen von 70.0 – 10.0°C um skaliert werden in 0.0 – 100.0%.
Steigung → negativ,positiv
$Out = Scaling($Temperatur, 70.0, 10.0, 0.0, 100.0);
Es soll eine Temperatur in den Bereichen von 70.0 – 10.0°C um skaliert werden in 100.0 – 0.0%.
Steigung → negativ,negativ
$Out = Scaling($Temperatur, 70.0, 10.0, 100.0, 0.0);
Ich hoffe das hilft für die Zukunft.