APPLICATIONSPROGRAMMATION ★ TOčKE IN čRTE V VSEH NAčINIH (MOJ MICRO) ★

Točke in črte v vseh načinih (Moj Micro)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

V prejšnji številki smo obravnavali spreminjanje velikosti zaslona, število barv in razne zaslonske načine. Zdaj bomo razložili, kako risati točke oziroma črte. Računalniki PC poznajo v basi-cu solidne grafične ukaze: rutine vrste plot in draw za vse načine, omejiti je mogoče grafično okno tako. da pokriva poljubni del zaslona in tudi izhodišče koordinatnega sistema je moč kakorkoli spreminjati. Skraja je izhodišče v spodnjem levem kotu in je grafično okno zato v prvem kvadrantu. Vsaki sosednji koordinati Y rišeta isto točko (PLOT 0,0 in PLOT 0,1 obarvata isto točko), koordinate X pa so zasnovane tako, da vsaka posamezna (MODE 2), vsak par (MODE 1) oziroma vsake štiri sosednje (MODE 0) obarvata na zaslonu eno vidno točko. S tem je zagotovljena grafična združljivost programov za vse načine, pri čemer je seveda ločljivost največja v načinu 2, najmanjša pa v načinu 0 (glede števila barv je ravno nasprotno).

Eno samo točko sploh ni težko narisati: poiščemo masko, s katero izločimo druge točke v bytu (z logično operacijo AND) in jo potem postavimo na pravo mesto (z OR). Težave pa se pojavijo pri univerzalnem programu, ki dela v vseh načinih; toda z rutinami ROM jih zelo elegantno rešimo. Točko pa je moč narisati na več načinov: ne oziraje se na staro točko, ki je na istem mestu ali s kako (logično) operacijo s staro barvo, ki postavi prioriteto posameznih barv.

Slika 1
B I T
P O Z A
D I N E
B I T
B O J E
REZULTAT U MODE
0 FORCE1 XOR2 AND3 OR
000000
011101
100101
111011

Z amstradom rišemo na oba načina ne oziraje se na staro barvo (FORCE MODE) ali s kako logično operacijo (XOR, AND ali OR MODE). Vsaka operacija poteka posamič za vsak bit barve. Način 0 pozna samo barvi 0 in 1, način 1 barve 00. 01.10 in 11. način 0 pa barve 0000.... 1111 binarno. Na sliki 1 je tablica vseh načinov risanja, listing 1 pa vsebuje primere za uporabo.

Poleg načina FORCE je koristen tudi način XOR, ker točka, narisana dvakrat z isto barvo, na zaslonu da prvotno barvo To uporabljamo v igrah, ker po tej poti brez težav zbrišemo gibljive sličice, čeprav so narisane na pisanem ozadju (s tem posebnim vprašanjem se bomo ukvarjali pozneje, ko bomo govorili o gibljivih sličicah).

V basicu se grafični način risanja spremeni z izpisom kontrolnega znaka CHR$(23)"< mode >. Primer: ?CHR$(23)"1" določi risalni način XOR S CPC 6128 je to moč doseči tudi z zadnjim parametrom pri DRAW in PLOT.

Risanje črt je eno od osnovnih opravil grafičnega programa. Z matematičnega stališča je problem preprost, saj poiščemo samo enačbo smeri, ki teči skozi določene točke:

Y-Y1 Y2-Y1
X-X1 X2-X1

X1 in Y1 sta koordinati prve točke. X2 in Y2 koordinati druge. X in

Y pa sta neodvisni spremenljivki Oblika končnega rezultata (ko X1 , Y1, X2 in Y2 zamenjamo s stvarnimi vrednostmi) je takale:

Y=A(X-X1)+B

Pri tem je A koeficient smeri. B pa premik smeri po osi Y , V zanki moramo spremenljivko X -vrteti- od X1 do X2 (s korakom, manjšim od 1!) in s formulo za vsak tak X iz zanke izračunati Y. Smernega koeficienta ne smemo zaokrožiti, temveč ga moramo pomnožiti s spremenljivko X v realnem formatu (predstavljajte si črto, ki jo rišemo od točke 0.0 do 2,100; jasno je, da X ne more imeti samo vrednosti 0.1 in 2. saj tedaj nikakor ne bi mogli dobiti koordinat Y za vseh 100 točk do druge črie). Delo z realnimi števili je seveda prepočasno in posledica so precej počasne rutine. Za risanje črt moramo torej poiskati kak drug način. Imeniten primer je rutina za risanje črt, ki je pri CPC v ROM.

Črto razdeli na dele in črt torej ne rišemo več točko za točko, temveč po delih. Računalnik izračuna, ali je več delov v vodoravni ali v navpični smeri, potem pa se temu prilagodi tako. da kar najmanj računa in kar največ riše. Spremenljivka je torej včasih X. včasih Y. Samo pred začetkom zanke je eno deljenje mte-ger (z jemanjem ostanka), v sami zanki pa so zgolj operacije seštevanja in odštevanja.

Listing 3 vsebuje program v basicu. v katerem brž opazimo algoritem. Toda pozor! Če hočete ta program uporabiti v drugih načinih, morate logične koordinate najprej preračunati v fizične. V programu ni niti opisano, kako računalnik preverja, ali je črta v oknu. kar je sicer potrebno za vsak del črte posebej. Vendar je v tem primeru vse lepo in prav. saj uporabljam standardno rutino PLOT.

Pri računalnikih CPC je vsak dostop do video pomnilnika prek povezave IND:SCR WRITE. S spreminjanjem te povezave (linka) prekinemo rutino DRAW in naredimo kaj svojega. Šolski primer za uporabo te možnosti je listing 4 To je rutina, ki upočasni vsak dostop do video pomnilnika, s tem pa tudi rutine DRAW in PLOT Hitrost lahko menjamo v drugi vrstici strojnega programa. Opcijo izključimo tako. da s CALL &BBBD pokličemo rutino GRA RESET.

Tako naredimo tudi šablono za črto. ki jo rišemo in pri tem nadzorujemo vsako točko, ki jo program v ROM hoče narisati. Takšna šablona je na voljo za CPC 6128. ne pa za CPC 464. Listing 5 vsebuje program, ki nadzoruje šablone z ukazom RSX - MASK , < bit maska 0 . . . 255 > , < prekinjevalnik prve točke v črti 0/1 > . Šablona kontrolira 8 točk in jih binarno interpretira. Prvo točko črte je včasih koristno izključiti, če rišemo zapletene like. uporabljamo pa risalni način XOR. ki briše točko, narisano dvakrat na istem mestu. Prvo točko izključimo z 1. vključimo pa jo z 0. Drugi parameter ni obvezen. V istem listingu je tudi ukaz |DASH , < string spremenljivka >$ , < dolžina črte >

Dash je ukaz. s katerim rišemo like tako. da črte premikamo v raznih smereh. V spremenljivko string vnesemo smeri za risanje. Pred prvim parametrom je obvezen znak tj. CHR$(64). Smeri so naslednje:

0-MOVE levo , 1-MOVE desno. 2-MOVE dol , 3-MOVE gor , 4-DRAW levo , 5-DRAW desno , 6-DRAW dol , 7-DRAW gor.

Najprej vtipkamo program z listinga 6 in ga posnamemo s SAVE "DASHMASK.BAS". Po resetiranju pretipkamo listing 7. Ko program poženemo, se bo takoj naložil v strojni del. če je vse v redu. Zdaj je na kaseti (disketi) relokatibilen program. Demonstracijo lahko vtipkate z listinga 8.

V prihodnji številki bomo nekaj besed posvetili trigonometriji in razložili. kako jo uporabljamo za grafiko računalnikov CPC.

Moj Micro

★ PUBLISHER: Moj Micro
★ ANNÉES: 1987 , 1988
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTHOR: SINIŠA JAGODIČ
 

Page précédente : Format zaslona, prekinitve, okna
★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Tocke  in  Crte  v  Vseh  Nacinih    (Moj  Micro)    LISTING    SLOVENIANDATE: 2021-11-20
DL: 139
TYPE: PDF
SiZE: 748Ko
NOTE: 5 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Windowmanager (CPC Amstrad International)
» Applications » Streifen-Script (CPC Amstrad International)
» Applications » Files 1 (Nick Godwin)
» Applications » Trace in Windows
» Applications » RSX Window (CPC Magazin)
» Applications » Coursewinner
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop
Page créée en 013 millisecondes et consultée 554 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.