Thread GD::Graph - Fläche zwischen zwei Linien
(4 answers)
Opened by kargo at 2012-03-09 21:04
Du kannst mit GD Flächen füllen. Alles was du brauchst ist ein Punkt, der Innerhalb der zu füllenden Fläche liegt. Den kannst recht einfach ermitteln. Mach es wie folgt:
- Gehe die Messpunkte der beiden Graphen ziehe sie voneinander ab. - Wenn sich das Vorzeichen wechselt nimm die Differenz der Werte davon die Hälfte und addiere diesen auf den minmalen Wert auf. - Nutze das als Y-Koordinate des Punktes an dem du das Füllen beginnst. Die X-Koordinate hast du schon über den Messpunkt. So füllst du jedes mal die Fläche wenn eine Neue auftaucht, sprich wenn sich das Vorzeichen wechselt. Unvollständiger Code: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 my $last_negativ=undef; for(0..$#points_a) { my $y_a=$points_a[$_][1]; my $y_b=$points_b[$_][1]; my $diff=$y_a-$y_b; my $negativ=0; $negativ=1 if($diff<0); if($diff!=0 and ( !defined($last_negativ) or $last_negativ != $negativ ) ) { my $x=$points_a[$_][0]; my $y=int(abs($diff)+$negativ?$y_a:$y_b); do_fill($x,$y,$negativ?$color_a:$color_b); $last_negativ = $negativ; } } |