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:
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;
}
}