Toon posts:

[PHP5] Grafieken class met gd-libary, verhoudings probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste Tweak(st)ers,

Ik ben sinds afgelopen week werkzaam bij een bedrijf in dordrecht wat webapplicaties maakt. Omdat ik me verveelde ben ik begonnen aan een class in PHP5 die grafieken gaat bouwen. Mijn eerste versie zal alleen lijn grafieken tekenen maar ik ben van plan om in de toekomst ook subclasses voor diagrammen enzo te maken. Ik was ijverig begonnen, en was naar een tijdje zo slordig aan het programeren dat ik het ene gat vulde met het andere, toen had ik dus ook een verhoudings probleem. Ik werd er niet goed van en begon helemaal opnieuw met een strakkere indeling, betere comments etc in de hoop dat ik niet weer tegen hetzelfde probleem zou aanlopen, maar helaas heb exact hetzelfde probleem.

Ik zit er al 3 dagen mee en paar mensen hebben me al proberen te helpen maar ik kom er maar niet uit, overigens is mijn wiskunde ook niet super goed dus dat is een mede oorzaak. Maargoed eerst zal ik jullie laten zien waar ik mee bezig ben.

Source code
omdat me bericht te lang was ga naar het volgende adres:
http://www.scootxtreme.nl/lib/hostees/kees/source.phps

Oke ik dacht hiermee ga ik het probleem oplossen.
$this->size (array 0,1) geeft de totale groote aan van het plaatje welke:
700 bij 500 zijn.

Oke, de grote van de grafiek is $this->GraphBoxResolution (array 0,1)
653 bij 433

Nu gaan we kijken, of hij de $this->GridSpace goed uitrekent wat blijkt te kloppen:
gridspace afgerond = 72
aantal grids + 1 = 6
(de +1 omdat ik dus niet wilt dat de lijn van de grafiek stopt aan de bovenkant van de grafiek)
aantalgrid * 72 = 432, klopt dus.

Oke toen dacht ik dan ligt het aan de margins, $this->GraphBoxDistance (array left,top,bottom, right=0)
Dus we doen:
653 + left(47) = 700 :)
433 + (bottom(40) + top(27)) = 500 :)

Dat klopt dus ook al, dus ik werd er echt gek van haha, wat is er nu in godsnaam mis, een goede vriend van me robin hielp me en probeerde het met een afwijkings verschil op te lossen:
PHP:
1
$this->GridSpace = $this->GraphBoxResolution[1]/($this->num_grids+1+($this->num_grids/10));


Toen bleek het bijna te kloppen, maar ik vondt het onlogisch ik wil niet het ene gat vullen met het ander omdat volgens mij de afwijking dan groter wordt bij grotere resoluties enzo dus dan klopt het al niet meer lijkt mij.

Vraag?
Maargoed mijn uiteindelijke vraag is, weet iemand in godsnaam nou wat ik fout doe, of niet goed fout uitreken, of weet iemand misschien een methode hoe ik het beter kan doen?
Of weet iemand me goed opweg te helpen met goede artikelen o.i.d.?

alvast ERG bedankt!

Download hier een .rar bestand met de source + font's om het e.v.t op je eigen server te testen.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

En nu mogen wij je code gaan debuggen? Lijkt me niet de bedoeling. ;)

Waar denk je zelf dat de fout ergens kan zitten? Wat is de fout überhaupt? Heb je een voorbeeldplaatje, liefst met een ander plaatje erbij hoe het dan wel uit moet zien?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op zondag 07 augustus 2005 @ 17:33:
Oke ik dacht hiermee ga ik het probleem oplossen.
Definieer "het probleem" eens.

Edit:

Ik zie dat je in functie ForceResize() $size direct gebruikt terwijl die niet gedefinieerd is. Moet dat niet $this->size zijn? Zou je er overigens niet aan kunnen denken om wat informatievere var namen te gebruiken dan $size[0] en $size[1]? Die zeggen zo vrij weinig namelijk.

[ Voor 45% gewijzigd door Michali op 07-08-2005 18:05 ]

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Hmz ik zie het, het komt over alsof jullie het moeten debuggen dat is het niet. Ik ben inderdaad vergeten een voorbeeld erbij te zetten wat dit is:

Afbeeldingslocatie: http://www.scootxtreme.nl/lib/hostees/kees/screenshot1.jpg
Maargoed zoals je op het plaatje kan zien is het probleem dat de afstand tussen laatste grid en de grafiek border niet klopt.

Ik heb zowiezo geen fouten in me code en ik heb heus wel me moeite gedaan om het op te lossen. Zoals ik al aangaf was ik dus helemaal opnieuw begonnen met het schrijven van me class.

Tevens staat er ook in waarvan ik denk dat het probleem is, namelijk de margins van het plaatje.

Ik hoop dat je me nu wel kunt helpen.

Verwijderd

Topicstarter
Michali schreef op zondag 07 augustus 2005 @ 18:02:
[...]

Definieer "het probleem" eens.

Edit:

Ik zie dat je in functie ForceResize() $size direct gebruikt terwijl die niet gedefinieerd is. Moet dat niet $this->size zijn? Zou je er overigens niet aan kunnen denken om wat informatievere var namen te gebruiken dan $size[0] en $size[1]? Die zeggen zo vrij weinig namelijk.
Uhm, met ForceResize ben ik nog bezig heb wat code uit een ander script van me eigen gehaalt en moet het nog helemaal aanpassen en goed erin bouwen, want ik wil eigenlijk dat hij hem alleen resized als het nodig is. Want het probleem is, als de grafiek te klein is wordt het lelijk, als je hem bijvoorbeeld 600 x 400 maakt en dan geforceerd resized naar 300 x 150 ofzo het resultaat er beter uitziet. Maargoed hier vindt ik wel een oplossing voor.
En betreft de naam $this->size heb je enigzins gelijk, niet betreft de index 0,1 vindt ik duidelijk, zo is het ook met de output van getimagesize() die geeft ook een numerieke index terug waarvan 0 de breedte is en 1 de hoogte.
Als je suggesties hebt, of tegen argumenten altijd welkom :)

edit:
probleem staat hierboven, met de laatste grid..

[ Voor 4% gewijzigd door Verwijderd op 07-08-2005 18:11 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op zondag 07 augustus 2005 @ 18:10:
[...]

En betreft de naam $this->size heb je enigzins gelijk, niet betreft de index 0,1 vindt ik duidelijk, zo is het ook met de output van getimagesize() die geeft ook een numerieke index terug waarvan 0 de breedte is en 1 de hoogte.
Als je suggesties hebt, of tegen argumenten altijd welkom :)

edit:
probleem staat hierboven, met de laatste grid..
Je zegt het zelf al, $size[0] is width en $size[1] is height. Waarom zou je dan niet vars $width en $height maken?

Je kunt zelfs als dit doen:
PHP:
1
list($this->width, $this->height) = getimagesize($afbeelding);

Noushka's Magnificent Dream | Unity


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Verwijderd schreef op zondag 07 augustus 2005 @ 17:33:
Ik ben sinds afgelopen week werkzaam bij een bedrijf in dordrecht wat webapplicaties maakt. Omdat ik me verveelde [...]
Offtopic, maar waarvoor ben je aangenomen als je je nu al verveelt :D :X

| Toen / Nu


Verwijderd

Topicstarter
Whahaha nou het is niet de bedoeling dat ik echt een opdracht krijg maar moet zelf komen met ideeen, en ik verveelde me op dat moment wist nog niet veel af van php5 en ik dacht laat ik eens een grafieken class maken, wat ze erg goed konden gebruiken.

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 13:43
SuperRembo schreef op zondag 07 augustus 2005 @ 19:18:
[...]


Offtopic, maar waarvoor ben je aangenomen als je je nu al verveelt :D :X
Omdat het zondag is.... :/

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 19:17

aex351

I am the one

Jpgraph voor degene die niet het wiel opnieuw willen uitvinden :9

< dit stukje webruimte is te huur >


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Kunnen we het misschien ontopic houden? :)
aex351 schreef op zondag 07 augustus 2005 @ 20:35:
Jpgraph voor degene die niet het wiel opnieuw willen uitvinden :9
In een programmeerforum zitten we per definitie continu nieuwe prototypes van het wiel uit te vinden. Verbeterde versies welteverstaan. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Mensen het probleem is opgelost, bedankt!

  • mark_gl
  • Registratie: September 2001
  • Laatst online: 30-04 08:14
@wipkip, het zou ook erg leerzaam zijn als je laat weten wat er nu fout was en misschien de correcte code parsen?

Verwijderd

Topicstarter
Na jullie loze en niet waarderende reacties, denk jij echt dat ik de oplossing ga posten? Dacht het niet he, zowiezo heb ik het antwoord al niet dankzij jullie en heeft niemand maar ook iets geholpen door ook maar een hint te geven ofzo.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 23:55

Gerco

Professional Newbie

Heel volwassen van je. Je weet toch hopelijk wel dat een community als dit draait op het delen van kennis? As iedereen zou doen wat jij nu doet zou GoT helemaal niet kunnen bestaan, wees een mens en deel je rijkdom.

Bovendien ben je nu ook nog eens flink onbeschoft tegen die mensen hierboven die hebben geprobeerd om je te helpen en dus de moeite hebben genomen om inderdaad je code voor je te gaan debuggen.

[ Voor 32% gewijzigd door Gerco op 08-08-2005 11:04 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op maandag 08 augustus 2005 @ 10:49:
Na jullie loze en niet waarderende reacties, denk jij echt dat ik de oplossing ga posten? Dacht het niet he, zowiezo heb ik het antwoord al niet dankzij jullie en heeft niemand maar ook iets geholpen door ook maar een hint te geven ofzo.
Doe eens even normaal. Welke reacties waren dan loos en niet waarderend? Ik probeer je enkele tips te geven mbt. de leesbaarheid van je code. Verder was je uitleg zo onduidelijk dat niemand behalve jij het probleem snapte. Hoe wil je dan dat iemand een oplossing gaat posten? Je hoeft hier echt niet te verwachten dat we je code gaan bestuderen om er achter te komen wat er precies fout gaat, zonder dat je er een duidelijk uitleg bij geeft. Het is overigens vrij normaal om na het vinden van de oplossing (wel of niet mbv. iemand hier op het forum) hem ook hier neer te zetten. Hier leer je sowieso zelf van, je krijgt wat meer inzicht op het probleem en andere zouden er ook nog van kunnen leren. Dan is je topic niet geheel voor niets geweest.

Noushka's Magnificent Dream | Unity


  • Room42
  • Registratie: September 2001
  • Niet online
Go wipkip! Wat bedoel je met Loze en niet waarderende reacties! Heb je je post-history wel es gezien. Help jij wel eens iemand? 99% van de threads heb je zelf gestart.

Het is hier geven en daarna krijgen, hoor.

Koop al mijn ads!


Verwijderd

Topicstarter
Room42 schreef op maandag 08 augustus 2005 @ 11:24:
Go wipkip! Wat bedoel je met Loze en niet waarderende reacties! Heb je je post-history wel es gezien. Help jij wel eens iemand? 99% van de threads heb je zelf gestart.

Het is hier geven en daarna krijgen, hoor.
Ik denk na voordat ik reageer, ik help alleen mensen indien ik weet dat ik iemand kan helpen. Dat zit er voor mij niet in aangezien de vragen vaak op mijn niveau liggen en als ik reageer dat ik dan daarop weer negatieve reacties krijg.

Uiteraard wil ik niet iederen beschuldigen, maar ik vindt het best als je commentaar geeft op me code maar niet als je alleen daarvoor reageert het gaat uiteindelijk toch om het probleem. Overigens vindt ik dat het probleem redelijk duidelijk is na mijn 2e post met plaatje, zoniet had je het kunnen vragen.

Overigens deel ik mijn kennis zowiezo al door mijn problemen te posten op GOT.

Maargoed de oplossing was dat hij de grafiek box in het midden tekende. Ook was de $this->GraphBoxDistance['top'] gelijk aan de bottom, en dat klopte dus niet. Dus nu de laagste positie van de de grafiek rand is ($this->size[1]-$this->GraphBoxDistance['bottom']).
Ofwel, een structuur foutje :)
Help jij wel eens iemand? 99% van de threads heb je zelf gestart
Inderdaad ik heb veel threads gestart, en heb 9,4% mensen proberen te helpen, en 2 topics "gewoon" gereageerd.

Maargoed zoals hierboven al uitgelegd, ga ik niet in topics reageren waar ik mensen niet kan helpen door bijvoorbeeld iemand aan te spreken op zijn code terwijl het probleem totaal ergens anders over gaat.

[ Voor 16% gewijzigd door Verwijderd op 08-08-2005 11:41 ]


  • Room42
  • Registratie: September 2001
  • Niet online
Ik vind het vooral jammer dat je de reacties als negatief ervaart. Ik denk dat men het vooral als opbouwende kritiek bedoeld, waar jij je voordeel weer mee kan doen. Ik zeg ook niet altijd nuttige dingen en die worden altijd vriendelijk de grond in gestampt, terecht. Daar leer ik van.

Reacties als "En nu mogen wij je code gaan debuggen?" en "Definieer "het probleem" eens." (wat trouwens een parse error geeft achter "Defineer" ;) ) klinken wel wat bot, maar zo zijn vaak de meeste 1e reacties hier op GoT. Ze bedoelen je vriendelijk te vragen wat je precies bedoeld en of je meer informatie kunt geven :)

En zeker loze opmerkingen als "Offtopic, maar waarvoor ben je aangenomen als je je nu al verveelt" moet je gewoon negeren en niets van aantrekken.

Al met al probeer ik te zeggen dat je het je niet persoonlijk aan moet trekken. Sommige reageren nou eenmaal anders dan de andere, maar de spirit hier op GoT is toch vooral dat men elkaar graag wilt helpen met hun probleem.

[ Voor 32% gewijzigd door Room42 op 08-08-2005 12:52 ]

Koop al mijn ads!


Verwijderd

Topicstarter
Oke, bij deze trek mijn botte reacties terug, misschien deed ik ook wel zo omdat ik er 4 dagen mee zat.
Maargoed mijn excuus voor mijn botte reacties, ik zal trouwens wel de source posten als de class af is.

Verwijderd

Topicstarter
Beste mensen,

Misschien zullen mods het niet zo leuk vinden als ik nu nog reageer op dit topic, maar ik had belooft om de source te posten en dat bedacht ik me ineens dus vandaar.

Omdat de source extreem veel regels is heb ik maar even een *.phps bestand geupload. Onderaan de source vindt je een werkend voorbeeld.
Dit script werkt alleen met PHP5 en GD-Libary uiteraard.

link: http://www.scootxtreme.nl/lib/hostees/kees/tweakers.phps

Voor degene die het leuk vinden, geniet :P
Pagina: 1