Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: GD-dartstaulu

jideko [04.10.2005 21:47:09]

#

Olis tarkotus tehdä sellanen dartstilasto systeemi joka piirtää dartstaulun ja jokaiseen sen osaan kirjottais montako prosenttia tikoista on siihen osunut.
Olisko teillä jotain ideoita miten tuollasta kannattais lähtee toteuttamaan?
Ja vielä kun saisi jokaisen taulun osan värjättyä prosenttejen mukaan. Eli värit feidaisi punaisesta vaikka vihreeseen prosenttejen mukaan.

Antti Laaksonen [05.10.2005 10:36:33]

#

Onko sinulla siis valmiina tietty tulosaineisto, jonka haluat esittää graafisesti? GD-kirjaston avulla pitäisi tosiaan onnistua melko helposti. Melkeinpä riittää, että piirrät joukon sisäkkäisiä ympyröitä ja tulostat luvut sopiviin kohtiin, esim. vaakasuorasti kunkin ympyrän alaosaan.

https://www.php.net/manual/en/function.imageellipse.php
https://www.php.net/manual/en/function.imagestring.php

Jos taulun osat ovat yksivärisiä, voit piirtää ympyrät suurimmasta pienimpään tällä funktiolla:

https://www.php.net/manual/en/function.imagefilledellipse.php

Jos kuitenkin väriliu'un pitää olla tasainen myös osien sisällä, taulu olisi ehkä parasta värittää piste kerrallaan. Pisteen etäisyyden ympyrän keskipisteestä saa helposti Pythagoraan lauseella. Tämän perusteella pitää sitten laskea, kuinka suuri osa tikoista mahtuu tämän alueen sisälle ja missä kohtaa väriliukua ollaan.

https://www.php.net/manual/en/function.imagecreatetruecolor.php
https://www.php.net/manual/en/function.imagecolorallocate.php

Tämän oppaan olet varmaan jo lukenutkin:

https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=gdlb

jideko [07.10.2005 18:05:13]

#

mulla on nytten yksi dartstaulun sektoreista piirrettynä. Mitenkä saisin jokaiseen tuollaiseen pieneen osaan laitettua radionapin?
Tuollaisia kuvia tulis kolme rinnakkain ja jokaiseen 15 radionappia.

<?php

//lähetetään tunniste selaimelle
header("Content-type: image/png");

//luodaan 200x100-pikselin kokoinen kuva
$kuva=imagecreate(150,400);

//määritetään taustaväri ja kaksi muuta väriä
$valkonen=imagecolorallocate($kuva, 255, 255, 255);
$musta=imagecolorallocate($kuva,0,0,0);
$punanen=imagecolorallocate($kuva,255,0,0);
$vihrea=imagecolorallocate($kuva,0,255,0);

ImageFilledArc($kuva, 75,350, 670, 670, -99, -81, $punanen,IMG_ARC_PIE);
ImageFilledArc($kuva, 75, 350, 630, 630, -99, -81, $musta,IMG_ARC_PIE);
ImageFilledArc($kuva, 75, 350, 420,420, -99, -81, $punanen,IMG_ARC_PIE);
ImageFilledArc($kuva, 75, 350, 380, 380, -99, -81, $musta,IMG_ARC_PIE);

imageline($kuva,75,350,75,15,$valkonen);
ImageArc($kuva, 75, 350, 525, 525, -99, -81, $valkonen);
ImageArc($kuva, 75, 350, 225, 225, -99, -81, $valkonen);

imagefilledellipse($kuva,75,350,70,70,$vihrea);
imagefilledellipse($kuva,75,350,30,30,$punanen);

//lähetetään kuva PNG-muodossa
imagepng($kuva);

//poistetaan kuva muistista
imagedestroy($kuva);
?>

Sitten taas on tilastojen piirtämisessä vähän ongelmia. Ajattelin piirtää dartstaulun tollasista kaaren muotosista osista. Siihen ei taida olla mitään funktiota valmiina, vai? No ajattelin tehdä funktion itse, mutta en saa sitä toimimaan. Valittaa että koodissa on virhe.

<?php

function pala($x,$y,$alku,$loppu) {
ImageFilledArc($kuva, $x,$y, $loppu, $loppu, -99, -81, $punanen, IMG_ARC_PIE);
ImageFilledArc($kuva, $x,$y, $alku, $alku, -99, -81, $valkonen, IMG_ARC_PIE);
}
?>

Eli ideanan on että lasken jokaisen tuollaisen osan prosentit ja värjään jokaisen osan eri värillä määräytyen prosenttejen mukaan. Totta kai noihin asteisiin täytyy pistää joku muuttuja vielä, mutta kunhan ensin sais noin toimimaan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta