Hi Sven!
Davon hatte ich ja geredet, bevor es zu diesem Intermezzo kam. :)
tut mir Leid ;-)
Ok, werden wir etwas konkreter: Mit welcher Formel bildet man diese Werte? Denn es ist irgendwie sinnvoll, entweder mit einer Schleife diese Zahlenwerte nacheinander zu berechnen und beim ersten, der größer als die Differenz zwischen Min und Max ist, anzuhalten. Noch besser wäre eine Funktion, welche als Argument die Differenz erhält, und als Ergebnis das passende übergreifende Intervall erhält.
Das ist jetzt die Frage wie rum ich das ganze ausrechne. Ich hatte auch daran gedacht mich weniger auf das Intervall zu fixieren, eher auf die absoluten Werte, um so eine ganz "loose" Skala zu bekommen, nur mit den 4-5 wichtigen Werten in der Region. Wobei das glaube ich nur so wie Du beschreiben hast geht, denn wenn ich das Intervall nicht habe kann ich keinen sinnvollen Startwert festlegen, ich denke es ist schon OK. Ich probiere es sobald mein GD mit jpegs hier lokal läuft ;-)
Eine mathematische Formel für die Zahlenreihe wird vermutlich schwierig zu entwickeln sein, aber als PHP-Funktion könnte das hier hilfreich sein:
Das hatte ich oben auch gemerkt :-)
function get_scale_range($minrange)
{
$minrange = abs($minrange); // Wenn sich die Differenz mal verrechnet und negativ ist - besser das Vorzeichen weghauen
$raster = 25; // Rasterwert: 25xx, 50xx, 75xx, 100xx
$potenz = 0; // Start bei 10^0 = 1
$step = 1; // Hilfsvariable, die die Schritte in einem Wertebereich mitzählt.
$range = 25; // Startwert
while ($range < $minrange)
{
$step++;
if ($step % 4 == 0) // Alle vier Erhöhungsschritte
{
$potenz++; // die Zehnerpotenz erhöhen
}
$range = $range + $raster * 10 ^ $potenz
}
return $range;
}
Es hat zwar den ein oder anderen moment gedauert bis ich es dann verstanden hatte, aber danach war ich um so begeisterter, nicht schlecht - wobei es IMHO ^ in PHP nicht gibt, aber da gibt es ne Funktion(pow() oder so ähnlich?)
Du suchst jetzt eine "runde" Zahl kleiner als dein Minimum, welche als Startpunkt deiner Skala dienen kann.
Meinst Du mit rund eine die in das 25er Raster passt?
Auch hier kann "Modulo"-Rechnen ziemlich gut helfen, weil es den unnötigen, krummen "Rest" deines Minimums wegnimmt.
int($min / ($range/10)) * ($range/10) = Startwert der Skala
int() gibt es nicht in php, nur intval(), abs(), round() und (int). Wobei ich bei allen diesen Dingen Angst habe, denn (INT) 10*(0.1 + 0.7) //=7!
Aber sonst sieht das sehr gut und sehr logisch aus!
Multipliziere ich das Ganze wieder mit dem Intervall eines Teilstrichs, bin ich wieder im Bereich meiner ursprünglichen Skala, und kenne den Wert des Teilstrichs, der sich direkt unter dem Minimum befindet. :)
Ein netter Trick! Ganz ehrlich - auf solche Sachen wäre ich selbst nie gekommen, auch die Funktion, guck Dir dagegen mal mein "Gemurkse" mit Sting-Funkitonen an.... tse, tse, tse
Vielen Dank für die Hilfe, ich denke hiermit ist alles klar, jetzt muß ich es nur noch schaffen jpeg-Support in PHP mit einzukompilieren(s.o. im Forum), naja.
Viele Grüße
Andreas