[PHP] gd grafiek grid maken, verkeerde logica

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Ben ijverig begonnen aan het mysterie dat GD heet,
Ik wil een mooie grafieken gaan bouwen voor mijn statistieken dus begonnen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$imageWidth=400;
/////////////////////
//lets make a grid///
////////////////////
//imageline  ( resource $image  , int $x1  , int $y1  , int $x2  , int $y2  , int $color  )
//we start with our vertical lines
//we always want 10 stripes vertical so lets calculate the width of them
$vertLineWidth=$imageWidth/10;
$a=0;
for($i=0;$i<15;$i++){ 
    imageline($image, $a, 0, $a, $imageHeight, $verticalLineColor); 
    $a+=$vertLineWidth; //distance +...
} 
//we draw a border around our image BUT  -1 because else we are 1 px off our image and the
//border isnt visible anymore
imagerectangle($image,0,$imageWidth-1,$imageHeight-2,0,$borderColor);


Nu dit werkt leuk was het niet zo dat mijn lijnen niet uitkomen...
Dus mijn berekening is fout.
De gedachte gang die ik had

men begint op een positie x (0 in dit geval) te tekenen dan valt de eerste lijn samen met de linkerrand van mijn afbeelding, vervolgens doen we de breedte van onze afbeelding / 10 optellen bij de vorige lijn en zo verder

echter krijg ik het volgende:
| | | | | | | ||

Ergens ga ik dus fout in de beredenering, maar waar? ik wil dit berekenen omdat ik er later een classe van wil maken met variabele breedtes voor mijn afbeelding ($imagewidth)

Modelbouw - Alles over modelbouw, van RC tot diorama


Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 21-09 02:46

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Ten eerste mis ik ergens een declaratie/initialisatie van $a?

En ten tweede: je doet gedeeld door 10, maar vervolgens ga je wel 15 lijnen lopen tekenen :?

En als het maar een klein plaatje betreft dan kan het best fout gaan doordat er bij die 'gedeeld door 10' afgerond wordt?

[ Voor 110% gewijzigd door Orion84 op 31-01-2008 16:08 ]

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Orion84 schreef op donderdag 31 januari 2008 @ 16:03:
Ten eerste mis ik ergens een declaratie/initialisatie van $a?

En ten tweede: je doet gedeeld door 10, maar vervolgens ga je wel 15 lijnen lopen tekenen :?

Maar wat je bedoeld te zeggen is dat de afstand tussen de laatste lijn en de border niet gelijk is aan de afstand tussen alle andere lijnen?

Dan zal de breedte van je plaatje wel niet lekker deelbaar zijn door tien hè ;)
Klopt $a vergeten excuses, 15 had ik gepakt zodat ik 100% zeker was dat ik genoeg lijnen tekende...

de breedte van mijn afbeelding is 400 en is dus goed deelbaar door 10, informatie ontbrak echter in mijn post... vrij cruciaal om te weten toch ;)

Ik zat eerst aan afronding te denken maar aangezien 400/10 mooi uitkomt...

edit: even mijn startpost geupdate

Modelbouw - Alles over modelbouw, van RC tot diorama


Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 21-09 02:46

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Hmm, ok, mja sowieso besefte ik me dat bij een wat groter plaatje die afronding ook niet zo'n heel erg merkbaar verschil zou opleveren.

Maar die 10 strepen zijn excl. de border? Dan moet je de breedte van het plaatje wel door 11 delen, want dan zijn er 11 secties zegmaar, 1 tussen de border en de linker lijn en een stuk rechts van elke lijn. Dus 1 + 10 = 11.

Als de linker en rechter verticale lijn moeten overlappen met de border, dan wil je dus in feite gewoon 8 lijnen tekenen en dan moet het dus gedeeld door 9.

[ Voor 18% gewijzigd door Orion84 op 31-01-2008 16:13 ]

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Orion sorry voor het nutteloos meedenken, ben erg stom geweest niet alle code te posten wat bleek het te zijn

PHP:
1
$image = imagecreate($imageHeight, $imageWidth); // create a image with the size we want

gewisselt met
PHP:
1
$image = imagecreate($imageWidth, $imageHeight); // create a image with the size we want


Nu klopt het wel! met gedeeld door 9 overigens ;)

[ Voor 94% gewijzigd door Sjoerd op 31-01-2008 16:17 ]

Modelbouw - Alles over modelbouw, van RC tot diorama


Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 21-09 02:46

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Mja, dat gedeeld door 11of 9 zou ook niet geholpen hebben voor een nette verdeling, enkel voor een correct aantal lijntjes.

Maargoed, mooi dat het inmiddels werkt :)

The problem with common sense is that it's not all that common. | LinkedIn | Flickr

Pagina: 1