imagefilledarc()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • imagefilledarc()

    Code:
    bool imagefilledarc ( resource $image, int $cx, int $cy, int $width,
    int $height, int $start, int $end, int $color, int $style )
    Hallo,

    da imagefilledarc() ganzzahlen als Winkel erwartet, sind die Kreisausschnitte auf 360 begrenzt. Ich habe nun das Problem dass ich über 360 Stücke komme bzw. über 360° wegen Rundungsfehler überschreite.

    Gibt es eine vernünftige Alternative mit float zahlen

    PHP-Code:
    $step=360/$i;
    $step=round($step);
    $start=0;
    for(
    $y=0;$y<count($array);$y++){
        
    $ende=$array[$y][0]*$step+$start;
      
    imagefilledarc($image$mitte$mitte$dm$dm$start$ende,
    ImageColorAllocate ($imagerand(0255),rand(0255),rand(0255)), IMG_ARC_PIE);
        
    $start=$ende;
    }
    $start=0;

    for(
    $y=0;$y<count($array);$y++){
        
    $ende=$array[$y][0]*$step+$start;
        
            
    imageline ($image$mitte$mitte$mitte+(($dm/2)*cos(deg2rad($start))),
    $mitte+(($dm/2)*sin(deg2rad($start))), $fill_color);
            
    imagestring($image,5,$mitte+(($dm/2)*cos(deg2rad(($start+$ende)/2))),
    $mitte+(($dm/2)*sin(deg2rad(($start+$ende)/2))),$y+1,$fill_color);
        
    $start=$ende;

    "Nicht jeder Mensch kann und soll Programmieren[...]".

  • #2
    Re: imagefilledarc()

    xkl1986 wollte eigentlich schreiben
    Ich habe folgendes vor, ich erklär euch das mal kurz: [...]
    OK, ich warte ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      sry, bin mal wieder heute nicht der Meister des ausführlichen Schreibens.

      Ich möchte aus Tupeln in einer Datenbank ein Kuchendiagramm mittels gd erstellen.

      imagefilledarc() erzeugt einen Kreisausschnitt.
      Da imagefilledarc() ganzzahlen als Winkel erwartet, ist die Menge der Kreisausschnitte auf 360 begrenzt.

      Ich habe nun das Problem dass ich über 360 darzustellende Tupel komme bzw. die 360° des Kreises wegen Rundungsfehler überschreite.
      "Nicht jeder Mensch kann und soll Programmieren[...]".

      Kommentar


      • #4
        zähle die fehler mit und berücksichtige sie beim letzten sektor.

        Kommentar


        • #5
          Original geschrieben von xkl1986
          Ich möchte aus Tupeln in einer Datenbank ein Kuchendiagramm mittels gd erstellen.
          Wie bildet man den Tupel in einem Kuchendiagramm ab?

          Mit skalaren Werten kenne ich das ja - aber wie stellt man damit Tupel sinnvoll dar? (Oder was verstehst du unter Tupeln?)
          Da imagefilledarc() ganzzahlen als Winkel erwartet, ist die Menge der Kreisausschnitte auf 360 begrenzt.
          Mathematisch-theoretisch vielleicht.

          Praktisch dürfte die noch um einiges niedriger liegen, wenn man bei Darstellung auf einem pixelbasierten Anzeigegerät wie einem Monitor überhaupt unterschiedliche Kreisausschnitte erkennen können soll ...
          Ich habe nun das Problem dass ich über 360 darzustellende Tupel komme bzw. die 360° des Kreises wegen Rundungsfehler überschreite.
          Da sehe ich spontan keine Möglichkeit, das irgendwie sinnvoll lösen zu können.


          Da sollte man sich vielleicht eher die Frage stellen, ob ein Kuchendiagramm überhaupt noch eine sinnvolle Form der Visualisierung solcher Daten darstellt, darstellen kann.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            @penizillin und was ist wenn das vorletzte Element schon bei 361° anfängt oder wirklich 361 Einträge existent sind.

            @wahsaga Ausgabegerät ist ein Drucker/Plotter
            Zuletzt geändert von xkl1986; 25.07.2007, 15:05.
            "Nicht jeder Mensch kann und soll Programmieren[...]".

            Kommentar


            • #7
              wie kann das passieren, wenn du konsequent abrundest?
              ... oder wirklich 361 Einträge existent sind.
              Da sollte man sich vielleicht eher die Frage stellen, ob ein Kuchendiagramm überhaupt noch eine sinnvolle Form der Visualisierung solcher Daten darstellt, darstellen kann.
              in solchen fällen klassiert man alle einträge mit relativen häufigkeiten z.b. unter 5% in einen sektor "andere", siehe z.b. diverse wahlergebnisse.

              Kommentar


              • #8
                Original geschrieben von penizillin
                in solchen fällen klassiert man alle einträge mit relativen häufigkeiten z.b. unter 5% in einen sektor "andere", siehe z.b. diverse wahlergebnisse.
                Fragt sich nur, wie viele "Andere" es in den Daten gibt, wenn es sich um mehr als 360 Einträge handelt.

                Das kann dann vermutlich auch leicht mit einem 35° großen Tortenstück XY, und 325° "Andere" enden ...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Original geschrieben von wahsaga
                  Fragt sich nur, wie viele "Andere" es in den Daten gibt, wenn es sich um mehr als 360 Einträge handelt.

                  Das kann dann vermutlich auch leicht mit einem 35° großen Tortenstück XY, und 325° "Andere" enden ...
                  ^_^ stimmt aber je nach den Vorhanden Datensätzen kann man das als Entwickler ja erkennen und der Situation entsprechend, den Andere Auswahl algorithmus anpassen.


                  kiku

                  Kommentar


                  • #10
                    stimmt, je nach umfang und streuung der datensätze sollte man evtl. alle daten klassiert haben. eine passable pauschale schätzung für die anzahl der klassen - bei n datensätzen nicht mehr als sqrt(n) klassen.

                    Kommentar


                    • #11
                      Geistesbiltz:

                      imagefilledpolygon() und Mathematik
                      "Nicht jeder Mensch kann und soll Programmieren[...]".

                      Kommentar


                      • #12
                        wofür?

                        Kommentar


                        • #13
                          zum zeichnen eines Kreisausschnitts mittels sin&cos
                          "Nicht jeder Mensch kann und soll Programmieren[...]".

                          Kommentar


                          • #14
                            ich meine - inwiefern löst es dein problem?

                            Kommentar


                            • #15
                              ich kann pixelgenau positionieren
                              "Nicht jeder Mensch kann und soll Programmieren[...]".

                              Kommentar

                              Lädt...
                              X