Universiteto programuotojų konkursas
Kiekvienais metais mūsų universitetas rengia programuotojų konkursą. Prizas simbolinis, bet turbūt didžioji dalis vertės ateina iš garbės ir nuveikto darbo. Suprogramuoti reikia ne bet ką, o Haskell kalbos programą generuojančią kuo įdomesnį/gražesnį paveikslėlį (tikėtina - „fraktalinį“ ).
Kadangi su paprastu L sistemos paveikslėliu išsisukti nepavyks, tai teko sugalvoti kažką gudresnio. Nusprendžiau, kad įspūdingiausiai atrodys trimatis pseudo-fraktalas arba tiesiog rekurisškai aprašytas objektas. Nežinau kaip tai apibūdinti aiškiai, taigi pateikiu mano programos pavyzdį (alpha stadija, demo scena).

500×500 scenoj yra apie 500 objektų, 2 šviesos šaltiniai ir sudėtingas algoritmas - matomas vaizdas turi ir keletą esminių savybių: objektai turi šešėlius ir atspindžius. Iš esmės tai netgi daugiau matematikos nei programavimo. Visgi, kelios dienos vartant Google ir Wikipedia užpildo visas žinių spragas.
Pradinė programos versija tokį paveikslėlį sugeneruodavo per pusantros valandos, paskutinė versija - tik 5 min. Tokį paspartėjimą išgavau perdaręs šviesos atspindžių sekimą ir sugrupavęs objektus į medžio struktūrą (ką galėjau padaryti dėl viso objekto savybių). Plačiau neišsiplėsiu, nes žmonėms nesusipažinusiems su trimatės grafikos generavimu gali paskausti galva.
Dar nenusprendžiau kokį galutinį paveikslėlį pateikti konkursui - juk galiu sugeneruoti bet kokią struktūrą. Nors tiesą sakant paveikslėlyje matoma struktūra man atrodo gana graži, galbūt tik paskutinius mėlynus taškus pakeisiu į žalius, taip gaudamas struktūrą su Lietuvos motyvais. Na ir beliks tikėtis, kad paveikslėlis ir mano algoritmas sužavės vertintojus.
P.S. „gudruoliams“
Taip, aš galėjau naudoti OpenGL ir viską padaryti žymiai paprasčiau, bet to nedariau, nes manau, kad mano pačio sukurtas grafikos variklis yra žymiai vertingesnis visais atžvilgiais. Be to, žinau, kad generavimo laikas toli gražu nėra spartus (paspartinsiu perkeldamas į gijas).
wow.. neblogai sakyčiau ;) OpenGL dariau savo diplominį tai joa, ten viskas 100x more simple. Bet man id4ja tavo patinka labai.
Tik per savo ziopluma nesupratau, kad savo programa leidziu per interpretatoriu, o ne kompiliatoriu. Ispradziu sukompiliaves ir tik tada paleides galiu sugeneruoti per keleta sekundziu :)
Dabar mano programa sugeneruoja 9000 objektu 960×960 ekrane per maziau nei minute. Tai atrodo taip: http://img84.imageshack.us/img84/5036/screenshotjuozaskaziukeon6.png. * Reikia padidinti rezoliucija, kad maziausieji taskai geriau matytusi.
Mano nuomone trukumas yra tik vienas… manau turi nelikti juodos vietos
nah .. juoda gerai chia. Nu spalviniai gerai isipaisho. Mano asmenine nuomone ;)
Su thread’ais tik prarandi greitį, jeigu kompe tik vienas procas.
Žinau kaip jie veikia. Du branduoliai dabar duoda 40% pagreitėjimą.