[GD] imagefilledarc - problem

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

  • [GD] imagefilledarc - problem

    ich bin etwas ratlos,



    ich möchte ein kreisdiagramm 3dimensional zeichnen lassen, php.net hat mir schon gut weitergeholfen, doch finde ich den fehler nicht, der für 2 verrutschte "teile" verantwortlich ist.

    kann man schwer erklären, am besten einfach mal angucken.
    egal wie ich die tiefe definiere, es bleiben immer 2 "reihen" die an genau einer stelle verrutschen.
    auch wenn ich das offset (anfangswert von dem an gezeichnet wird) ändere, bleiben sind immernoch die fehler da, sie verschieben sich mit.


    ergebnis anguggen

    da die ganze klasse knapp 120 zeilen hat, hier nur mal der code vom zeichnen,
    sollte so gut wie selbsterklärend sein oder halt:

    der komplette Source des Scriptes

    PHP-Code:
            $offset $this->offset;
            
    /* 3D Effekt zeichnen */
            
    for ($i = ($this->$this->depth); $i >= $this->Y$i--) {
                foreach( 
    $werte as $key => $wert ) {
                    
    imagefilledarc
                                
    $this->image
                                
    $this->X$i
                                
    $this->widthfloor$this->height 3), 
                                
    $offset, ($offset $wert), 
                                
    $shadows[$key], 
                                
    IMG_ARC_NOFILL);
                    
    $offset $offset $wert;
                  }
            }
            
    $offset $this->offset;
            foreach( 
    $werte as $key => $wert ) {
                
    /* Oberseite */
                
    imagefilledarc
                            
    $this->image
                            
    $this->X$this->Y
                            
    $this->widthfloor$this->height 3), 
                            
    $offset, ($offset $wert), 
                            
    $colors[$key], 
                            
    IMG_ARC_FULL);
            
    $offset $offset $wert;
            } 

    kann sich das jemand erklären?

    edit: ist das normal das der beitrag so 'breit' ist?

    OffTopic:
    bbcode für OT is wohl die härte ... *G*
    Zuletzt geändert von psykadelik; 09.09.2004, 18:54.
    lg psykadeliK

    ---- schnapp ----

  • #2
    hmmm ... ich würde mal versuchen, die stellen rauszufinden vor dem versatz und direkt danach ... da stimmt imho was nicht mit der berechnung der segmente.
    Kissolino.com

    Kommentar


    • #3
      mh hier werden sie geholfen ...

      also darauf wäre ich nun gar nicht gekommen, stimmt aber wohl, ich hab mir auch schon alles einzeln zeichnen lassen und da klappte alles.
      da die werte ja nur einmal berechnet werden, sollten auch überall die gleichen zahlen drinstehen, was aber anscheind nicht ganz klappt bzw gibt round bzw floor bei identischer berechnung ne andere zahl zurück ?!?

      naja jetzt wird das ganze nicht ge'floor't, sondern gerundet und damit passt das alles.

      das ich darauf nich selbst gekommen bin ... *schulternzuck* merci
      lg psykadeliK

      ---- schnapp ----

      Kommentar


      • #4
        mal am rande gefragt: wo hast du das "IMG_ARC_FULL" her ... im manual steht nix davon und meine testumgebung wollte mit deinem code nicht so richtig.

        ps: $sum solltest du vor dem += noch definieren.
        Kissolino.com

        Kommentar


        • #5
          Original geschrieben von Wurzel
          mal am rande gefragt: wo hast du das "IMG_ARC_FULL" her ... im manual steht nix davon und meine testumgebung wollte mit deinem code nicht so richtig.
          schreibfehler meinerseits, hatte rumgetestet und dabei dann wohl irgendwann ...


          Original geschrieben von Wurzel
          ps: $sum solltest du vor dem += noch definieren.
          mh wenn ich das mit gültigkeitsbereichen von variablen usw noch richtig in erinnerung hab, sollte die variable nur solange existieren wie die funktion ausgeführt wird und selbst wenn ich die funktion nochmals ausführe startet sum wieder bei 0 bzw NULL

          und 0 bzw NULL + 180 = 180


          oder überseh ich grad wieder was ?
          lg psykadeliK

          ---- schnapp ----

          Kommentar


          • #6
            oder überseh ich grad wieder was ?
            du solltest bem ersten (lesenden) zugriff auf eine variable bei nicht-existenz eine meldung erhalten, ja ...

            unter der annahme, daß dein error-reproting vernünftig eingestellt ist ...
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Original geschrieben von psykadelik
              ... startet sum wieder bei 0 bzw NULL
              nö ... es startet bei "nix" weil nicht definiert .... erst beim 2. durchlauf hat sum einen wert, weil php durch das += einen wert zugewiesen hat ... geht ja, kann man nun sagen, sauber ist es jedoch nicht.
              Kissolino.com

              Kommentar


              • #8
                mh ok, aber ich hab php immernoch mit allen Warnungen usw drin, einzig NOTICE sind raus. (standardeinstellungen?)

                ich hätte was php betrifft noch nie was von "wilden werten" [(c) bei meinem PS I prof.] gehört was nicht initialisierte variablen betrifft
                lg psykadeliK

                ---- schnapp ----

                Kommentar


                • #9
                  einzig NOTICE sind raus. (standardeinstellungen?)
                  OffTopic:
                  ich für meinen teil mußte feststellen, daß bei der entwicklung die einstellung E_ALL entscheidend zu besserem code beiträgt. ebenso zur erhöhung der arbeitsgeschwindigkeit, besonders bei der fehlersuche. probiers mal aus edit: 'wilde werte' gibts bei php afaik nicht, aber wenn wir schon die NOTICEs beseitigen, dann alle.
                  Die Zeit hat ihre Kinder längst gefressen

                  Kommentar

                  Lädt...
                  X