multimolti
Erfahrenes Mitglied
Hallo!
Ich wollte mir mal für C# eine eigene Diagramm-Klasse basteln, um dann sowas ähnliches wie die CPU-Auslastungs-Anzeige da zu machen.
Funktioniert soweit so gut, aber das Normalisieren der Punkte macht Probleme. Was ich damit meine:
Alle eingegebenen Werte zwischen a und b auf einen Wertebereich von 0 bis x bringen, wobei der kleinste Punkt a nachher 0 sein soll und der größte Punk b soll x sein, x ist meine Fensterhöhe.
Ich berechne das zur Zeit so:
Wobei eben highest und lowest a und b entsprechen, height ist x und über die X-Werte von meinem Punkt nachher braucht ihr euch keine Gedanken machen.
Aber das funktioniert so nicht. Wenn ich jetzt Werte zwischen 60.000 und 120.000 eingebe und das ganze auf zwischen 0 und 250 bringen will, dann ist nachher mein kleinster Wert 250 und mein Größter 495, also müsste ich überall nur 250 abziehen, um auf meine gewünschten Werte zu kommen.
Aber wenn meine Ausgangswerte zwischen 12.000 und 80.000 sind, dann bekomme ich nachher etwas zwischen 751 und 999, also müsste 3 mal 250 abziehen.
Das ist doch total bescheuert, wo ist mein Rechenfehler?
Ich wollte mir mal für C# eine eigene Diagramm-Klasse basteln, um dann sowas ähnliches wie die CPU-Auslastungs-Anzeige da zu machen.
Funktioniert soweit so gut, aber das Normalisieren der Punkte macht Probleme. Was ich damit meine:
Alle eingegebenen Werte zwischen a und b auf einen Wertebereich von 0 bis x bringen, wobei der kleinste Punkt a nachher 0 sein soll und der größte Punk b soll x sein, x ist meine Fensterhöhe.
Ich berechne das zur Zeit so:
Code:
double stepsizeY = (height - 10) / (highest - lowest);
// für jeden punkt dann:
Point addPoint = new Point((int)(i * stepsizeX + 5), ((int)(point.Value * stepsizeY) + 5 ));
Aber das funktioniert so nicht. Wenn ich jetzt Werte zwischen 60.000 und 120.000 eingebe und das ganze auf zwischen 0 und 250 bringen will, dann ist nachher mein kleinster Wert 250 und mein Größter 495, also müsste ich überall nur 250 abziehen, um auf meine gewünschten Werte zu kommen.
Aber wenn meine Ausgangswerte zwischen 12.000 und 80.000 sind, dann bekomme ich nachher etwas zwischen 751 und 999, also müsste 3 mal 250 abziehen.
Das ist doch total bescheuert, wo ist mein Rechenfehler?