Thread GD::Graph - Fläche zwischen zwei Linien (4 answers)
Opened by kargo at 2012-03-09 21:04

topeg
 2012-03-10 01:30
#156717 #156717
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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;
  }
}

View full thread GD::Graph - Fläche zwischen zwei Linien