[python] Vykreslování grafů

Pavel Kosina geon na post.cz
Čtvrtek Květen 24 17:40:46 CEST 2007


Jakub Vojacek napsal(a):
> 1) Momentálně je pracovní plocha na výkres grafů velká 1000 x 1000 
> jednotek (pixelů). Akorát výpočet trvá celkem dlouhou dobu a 
> uživatel by mohl potřebovat menší či větší plochu, takže se ptám 
> jestli je dobré nabízet možnost jak velkou pracovní plochu mít.

1000x1000? To by se alespon mě ani nevešlo na obrazovku ;-)
> 2) Nevím jak vy byste vypočítávali body pro vykreslení grafu, ale já 
> na to mám takovoutu metodu:
>  
> cislo=spodni_hranice
> while cislo < horni_hranice:
>        x=cislo
>        y=eval(funkce.replace('x',cislo))
>        body.append([x,y])
>        cislo=cislo+preciznost
>  
> Ale výpočet se mi zdá poměrně dlouhý a tak se ptám jesetli vás 
> nenapadá něco efektivnějšího. Dále jakou hodnotu by měla mít proměnná 
> preciznost (nebo jestli by měl mít uživatel možnost ji nastavit).

Myslím, že by to takto mohlo být. Preciznost by mohla být cca setina až 
tisícina rozdílu horni hranice minus spodní hranice. Pak budeš mít 
všechny grafy víceméně stejně kvalitní. Vyzkoušej kvalitu/rychlost 
nechej uživatele nastavit 2-3 hodnoty - rychlé  - normal - kvalita

> 3) Nyní program dostává body jako souřadnice x,y a vykresluje 
> jednotlivé pixely. Pochopitelně je to způsob relativně nepřehledný, 
> protože pak může být na plátně jenom několik nic neříkajicích teček a 
> proto by je chtělo nějak spojit. Napadlo mě spojit každé dva vedlejší 
> body čárou ale pak mi došlo že to je nemožné, například kvůli grafu 
> 1/cos(x).  Nevíte jaký způsob používají jiné programy?

No, myslím, že pokud zvolíš preciznost dostatečně precizní, nikdo usečky 
neuvidí ;-) Určitě existují lepší algoritmy (spojnice), ale kde je jim v 
mé hlavě konec?


-- 
geon
Pavel Kosina



Další informace o konferenci Python