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);
	
================================================================