esercizi di grafica con turbo pascal 1.1 su mac
testo6..... su marino10 ...testiTURBO ==============================================================
9........DISEGNARE FIGURE GEOMETRICHE REGOLARI :rettangolo
var vertici:rect;.........................variabile cui assegnare coordinate x1,y1,x2,y2:integer;.........angolo alto sinistra,basso destra sfondo:pattern;...................variabile cui assegnare tratteggio a,b:integer;...........................valori per sezionare figura
stuffhex(@sfondo,'123123123123123123');...tratteggio setrect(vertici,x1,y1,x2,y2);....assegna coordinate a vertici framerect(vertici);.....................disegna cornice rettangolare paintrect(vertici);......................disegna rettangolo pieno fillrect(vertici,colore);.............disegna rettangolo colorato fillrect(vertici,sfondo);.................disegna rettangolo tratteggiato offsetrect(vertici,a,b);..............ritaglia sezione e protegge eraserect(vertici);.............................cancella rettangolo
10........DISEGNARE FIGURE GEOMETRICHE REGOLARI :rettangolo smussato var vertici:rect;.........................variabile cui assegnare coordinate x1,y1,x2,y2:integer;.........angolo alto sinistra,basso destra sfondo:pattern;...................variabile cui assegnare tratteggio a,b:integer;...........................valori per sezionare figura c,d:integer;...........................valori per smussare angoli figura
stuffhex(@sfondo,'123123123123123123');...tratteggio setrect(vertici,x1,y1,x2,y2);....assegna coordinate a vertici frameroundrect(vertici,c,d);....disegna riquadro smussato paintroundrect(vertici,c,d);.....disegna quadro pieno smussato fillroundrect(vertici,c,d,colore);.disegna quadro colorato smus. fillroundrect(vertici,c,d,sfondo);..disegna quadro con trat.smus. offsetrect(vertici,a,b);..............ritaglia sezione e protegge eraseroundrect(vertici,c,d);........cancella rettangolo smussato
testo7..... su marino10 ...testiTURBO ==============================================================
11.......DISEGNARE FIGURE GEOMETRICHE REGOLARI :ovali
var vertici:rect;.........................variabile cui assegnare coordinate x1,y1,x2,y2:integer;.........angolo alto sinistra,basso destra sfondo:pattern;...................variabile cui assegnare tratteggio a,b:integer;...........................valori per sezionare figura
stuffhex(@sfondo,'123123123123123123');...tratteggio setrect(vertici,x1,y1,x2,y2);....assegna coordinate a vertici frameoval(vertici);.....................disegna ovale paintoval(vertici);......................disegna ovale pieno filloval(vertici,colore);.............disegna ovale colorato filloval(vertici,sfondo);.................disegna ovale tratteggiato offsetrect(vertici,a,b);..............ritaglia sezione e protegge eraseoval(vertici);.............................cancella ovale
12........DISEGNARE FIGURE GEOMETRICHE REGOLARI :archi var vertici:rect;.........................variabile cui assegnare coordinate x1,y1,x2,y2:integer;.........angolo alto sinistra,basso destra sfondo:pattern;...................variabile cui assegnare tratteggio a,b:integer;...........................valori per sezionare figura c,d:integer;...........................valori per angoli
angoli misurati in senso orario da 0-9-12-18-24 0,90....0,180...0,270...0,360..........90,150...
stuffhex(@sfondo,'123123123123123123');...tratteggio setrect(vertici,x1,y1,x2,y2);....assegna coordinate a vertici framearc(vertici,c,d);....disegna arco paintarc(vertici,c,d);.....disegna arco pieno fillarc(vertici,c,d,colore);.disegna arco colorato pieno. fillarc(vertici,c,d,sfondo);..disegna arco con tratteggio offsetrect(vertici,a,b);....... ritaglia sezione e protegge erasearc(vertici,c,d);...............cancella arco
testo8..... su marino10 ...testiTURBO ============================================================== 13........DISEGNARE FIGURE GEOMETRICHE REGOLARI :poligoni var vertici:polyhandle;...........vaariabile cui assegnare coordinate sfondo:pattern;...................variabile cui assegnare tratteggio a,b:integer;...........................valori per sezionare figura x1,y1,x2,y2,x3,y3,x4,y4:integer;
definizione poligono e assegnazione a variabile vertici: vertici:=openpoly; moveto(x1,y1); lineto(x2,y2);lineto(x3,y3);lineto(x4,y4);lineto(x1,y1); closepoly;
stuffhex(@sfondo,'123123123123123123');...tratteggi framepoly(vertici);.....................disegna poligono paintpoly(vertici);......................disegna poligono pieno fillpoly(vertici,colore);.............disegna poligono colorato fillpoly(vertici,sfondo);.................disegna poligono tratteggiato offsetpoly(vertici,a,b);..............ritaglia sezione e protegge erasepoly(vertici);.............................cancella rettangolo killpoly(vertici);.................................
14........DISEGNARE FIGURE GEOMETRICHE REGOLARI :regioni var vertici:rect;.........................variabile cui assegnare coordinate x1,y1,x2,y2:integer;.........angolo alto sinistra,basso destra sfondo:pattern;...................variabile cui assegnare tratteggio c,d:integer;...........................valori per smussare figura regione:rgnhandle;.............variabile per sezione area grafica
definizione regione area grafica: regione:=newrgn; openrgn; showpen;
stuffhex(@sfondo,'123123123123123123');...tratteggio setrect(vertici,x1,y1,x2,y2);....assegna coordinate a vertici frameroundrect(vertici,c,d);....disegna riquadro smussato paintroundrect(vertici,c,d);.....disegna quadro pieno smussato fillroundrect(vertici,c,d,colore);.disegna quadro colorato smus. fillroundrect(vertici,c,d,sfondo);..disegna quadro con trat.smus. hidepen;closergn(regione);disposergn(regione);
testo9.... su marino10.....testiTURBO =============================================================== 15....DISEGNARE CON GRAFICA 3D:
uses memtypes,quickdraw,osintf,toolintf,maxmath,graf3D;
inizializzazione:cfr.5
var x,y,z,dx,dy,dz,ruota,angolo,valore,a,b,c,ampio:fixed;
moveto3D(x,y,z);...........posiziona in punto indicato move3D(dx,dy,dz);......sposta dx,dy,dz spazi da punto corrente lineto3D(x,y,z);..........disegna da punto corrente a nuovo punto line3D(dx,dy,dz);........disegna da punto corrente dx,dy,dz spazi
moveto2D(x,y);...............posiziona in punto indicato move2D(dx,dy);...........sposta dx,dy, spazi da punto corrente lineto2D(x,y);.............disegna da punto corrente a nuovo punto line2D(dx,dy);.............disegna da punto corrente dx,dy, spazi
lookat(x1,y1,x2,y2);...assegna ampiezza area visualizzazione (-983040,655360,983040,-655360...es.) (modificabile:cambia scala disegni...) roll(ruota);.................fa ruotare disegno (1310720......modificabile,eliminabile) pitch(valore);.............fa ruotare e disegna (4915200......modificabile,eliminabile) scale(a,b,c);................assegna scala disegni (65536,65536,196608..modificabile,elim.) viewangle(angolo);....assegna lunghezza focale lente (1966080.....non eliminabile:blocca computer) yaw(ampio);................modalita' rotazione (327680.....modificabile)
----------------------------------------------------------------
testo10......su marino10....testiTURBO ============================================================== 16.... continua gestione grafica 3D:cfr.ISTOGRAMMI
valori tipo FIXED e FRAC differiscono per 16384 valori da assegnare tipo FIXED e operazioni sugli stessi: var a,b,c,d,e,f,g,h:fixed;
a:=10203040; b:=123457;
c:=fixratio(a,b); d:=fixdiv(a,b); e:=fixmul(a,b); f:=fracsqrt(a); g:=fracsin(a); h:=fraccos(a);
-------------------------------------------------------- valore base:65536.....a:tipo fixed valori derivati usati come parametri con graf3D in esempi: SCALE.....................a*3........196608 LOOKAT...................a*10,a*(-10),a*15,a*(-15) 655360,-655360,983040,-983040 ROLL.......................a*30.....1966080 PITCH.....................a*70..... 4587520 VIEWANGLE............a*30......1966080 YAW.........................a*5........327680 ------------------------------------------------- var inretto,textretto:rect; p,q:integer; insetrect(inretto,p,q);...................gestione ampiezza finestra p=verticale...q=orizzontale se negativi,finestra senza linee transform(p,q); identity; inretto:=portagrafica.portrect; insetrect(inretto,p,q);..................p=-1,1,2,10...q=-1,1,2,10... --------------------------------------------------------------
testo11...su marino10...testiTURBO ============================================================= 17...GESTIONE ATTESA E FINE PROGRAMMA GRAFICO
esempi per inserire fine o attesa in pagina grafica: cfr.ruota1,ruota2,ruota3 in marino10...cartella grafiturbo var sagoma:eventrecord;
WHILE NOToseventavail(mdownmask+keydownmask,sagoma) do; REPEAT...UNTIL oseventavail(mdownmask+keydownmask,sagoma); REPEAT...UNTIL Getosevent(mdownmask+keydownmask,sagoma);
================================================================