★ CODING ★ LISTINGS ★ CIRCLE RUTINU (RACUNARI MAGAZINE)|Racunari Magazine) ★![]() |
CIRCLE rutinu (Racunari Magazine) | Coding Listings |
Krug za pet stotinki Danas programeri izvlače neverovatno brzu grafiku iz šesnaestobltnih računara, ali velika brzina nije nedostupna ni na osmobltnlm mi kraćim a. Amstradov procesor poseduje veoma moćne naredbe za rad sa grafikom: 16 bitna aritmetika i SET, RES i BIT skupovi naredbi. Njima se može direktno paliti bit u bajtu, tj. tačka u MODE 2. Zahvaljujući ovim pogodnostima, uz primenu dobrog algoritma na „amstradu“ se može postići veoma brza grafika. Rutina koju smo pripremili za ovaj broj crta 199 krugova (poluprečnika od 1 do 199) u petlji za oko 13,4 sekundi. Merenje je izvršeno TEST rutinom iz bejzik primera, prilikom merenja omogućiti interapt). Vreme potrebno da se jedan krug nacrta je oko 0.06 sekundi (efektno 0.05 s, brže nego što ljudsko oko može da registruje), i pri tome se ništa ne gubi na kvalitetu kružnice! Rutina se izvodi različitom brzinom zavisno od radijusa kružnice. Ova rutina je oko 1,8555 puta brža od najbrže ekvivalentne rutine ranije objavljene u domaćim časopisima (za „amstrad“, skoro sve su objavljene u „Računarima”). Po brzini se opasno primakla i CIRCLE rutini GEM-a (testiran GEM PAINT „šnajder PC1512", 8086, 16 bita. 8 MHz, 64 KVIDEO memorije), a po kvalitetu nacrtane kružnice rutina iz primera je pretekla GEM za dva reda veličine. Brzina rutine se može izmeriti bejzik programom iz primera (naravno, iz rutine izbaciti Dl naredbu). Po utrošenom vremenu je. ipak, bolja od sličnih rutina na osmobitnim računarima koje ne koriste tabele. U CIRCLE rutini su koriščene super brze PLOT i A-HL rutine, koje su ranije objavljene u ,,Računarima“ („Crtanje na mašincu"), i detaljno objašnjene Ulazni registri su standardni i određuju x, y koordinatu centra i radijus (poluprečnik) kruga: DE — x koordinata centra kružnice (0 < = x < = 639), Sama CIRCLE rutina počinje od 200 linije, a potprogram od 10 do 160 linije predstavlja petlju koja demonstrira brzinu rutine. Rutina je čista, što znači da ne formira nikakve tabele i ne zauzima dodatnu memoriju. Ova rutina je brža od ostalih zato što se jedno izračunavanje koordinate grafičke linije izvodi za dve tačke, a u jednom prolazu se nacrta osam tačaka. Izbačeni su realni brojevi — koriste se samo ćeli, manji od 65535 koji se mogu obrađivati procesorskom aritmetikom. Na žalost brzina je uzela svoj danak, pa rutina ima i nekih mana: kružnica ne sme da izađe van ekrana (ali se to može lako prevazi ci ugradnjom soft filtra) I ne sme se koristiti hardverski SCROLL. Ranije su u „Računarima objavljeni skoro isto tako brzi softverski skrolovi, koje možete koristiti u svojim programima. Može li još brže? Da. naravno! Koriščenjem tabelarne A--HL rutine, ili potpuno novim algoritmima (za PLOT ili čak CIRCLE rutinu), kao što je. na primer, bejzik rutina Iz primera 2, koja crta elipsu na potpuno nov način. Rutina na početku uzima konstante (početne vrednosti) SIN-usa i Cos-inusa. iz kojih kasnije izračunava ostale vrednosti potrebne za crtanje elipse. Rutina nije naročito brza. jer je pisana u bejziku. Brzina joj se može povećati prevođenjem u mašinac nekim kompajlerom. Svetislav Zahar, Racunari Magazine
|