ugrás a tartalomhoz

Görbe rajzolása GD-vel

tiku I tikaszvince · 2005. Szep. 16. (P), 10.26
Sziasztok!

Egy diagram rajzoló osztályon munkálkodom egy ideje.
Egy vonaldiagramot úgy készítek el, hogy az egyes megjelenített pontok közé egy egy egyenest húzok.

for ($i=1;$i<count($pontok);$i++) {
  $j=$i-1;
  ImageLine($im, $pontok[$j]['x'], $pontok[$j]['y'], $pontok[$i]['x'], $pontok[$i]['y'], $szin);
}
Minél többet tesztelem, annál jobban szemet szúr ennek a módszernek a hátránya: egy-egy ilyen diagram rettenetesen "fűrészfogas" tud lenni. Arra gondoltam, hogy "sebaj, majd illesztek görbét a pontsoromra", de miután két napot végig bogarásztam, arra a megállapításra jutottam, hogy csak swf, és pdf képek/dokumentumok generálásakor lehet görbét (curve) rajzolni.

Szóval a hosszú bevezető után, íme a kérdésem:
Megoldható-e GD-vel, hogy görbét illesszek egy sor pontra?
 
1

ImageArc

Poetro · 2005. Szep. 16. (P), 10.47
Az ImageArc, illetve az imagefilledarc függvénnyel lehet görbét rajzolni, azazhogy egy elipszisdarabot rajzolni. Persze nem egyszerű ehhez megfelelő matematikát kitalálni, de azért annyira nem összetett.
Ezen kívül még hasznos lehet az imageantialias használata is, ezzel elkerülendő a fűrészfogakat.
--------
Poetro
2

elmélet

tiku I tikaszvince · 2005. Szep. 16. (P), 11.44
Az imageantialias-al nincs problema, (a "fűrészfog" kifejezést ezek szerint rosszul használtam). Maga a vonaldiagram hasonlít egy fűrész lapra, ha az adatsornak nagy a "kilengése" (biztos, hogy nem ez a pontos kifejezés. ez az én szégyenem, mert tanultam statisztikát. (what a shame!)).
Na én ezt a nagyon durva kiugró, értékek megjelenítését szeretném finomítani. Merthogy egy vonaldiagram (szerintem) egy folyamatot ábrázol, úgy, hogy csak bizonyos időpontokban történt mérés. Erre egy nagyon jó példa lehet a hőmérséklet változás, mert nincs folyamatos mintavétel, de az egyes mintavételek között, ugye, van átmenet. Na én ezt az átmenetetet szeretném kicsit finomítani.
Ez volt az elmélet :)

Az ImageArc/ImageFilledArc függvényeket én is megtaláltam, de eszembe sem jutott, hogy egy görbét elipszis darabokból is össze lehet rakni. A hozzászólások között találtam egy ImageCurveDown nevű functiont, de mivel sosenem voltam egy matek zseni, képtelen vagyok értelmezni, és rájönni, hogy hogyan is működik.
Persze nem egyszerű ehhez megfelelő matematikát kitalálni, de azért annyira nem összetett.

Akkor ebben kérhetek egy kis seítséget?

TikuVoltam
Ma is holnap fekszünk le, mint tegnap