Programmazione grafica 1

Slides:



Advertisements
Presentazioni simili
L’ IPERBOLE.
Advertisements

Sistema di riferimento sulla retta
Il linguaggio della Matematica: Insiemi e operazioni
OMOLOGIA.
COORDINATE POLARI Sia P ha coordinate cartesiane
GLUT & OpenGL Ing. Tommaso Coviello Politecnico di Bari
La scelta del paniere preferito
Introduzione alle curve ellittiche
ELETTROMAGNETISMO APPLICATO ALL'INGEGNERIA ELETTRICA ED ENERGETICA
Grafica Raster La grafica in 2D con coordinate intere viene detta grafica raster. In questa parte tratteremo le operazioni fondamentali per disegnare su.
Algoritmo di Ford-Fulkerson
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 prove.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 prove generali.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Computer Graphics Marco Tarini Lezione 7: rasterizzazione la fabbrica dei frammenti Università dellInsubria Facoltà di Scienze MFN - Varese Corso di Laurea.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Costruzione di Interfacce Lezione 8 Rasterizzazione
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Seminario su clustering dei dati – Parte II
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
CORSO DI MODELLI DI SISTEMI BIOLOGICI
coordinate utente e di finestra
OPERAZIONI CON TRINOMI DI II° GRADO
l' algoritmo di Bresenham
Strutture di controllo in C -- Flow Chart --
Scan conversione di poligoni
1 Modelli di Illuminazione Daniele Marini. 2 Obiettivo Visualizzare scene cercando di simulare al meglio la realtà Interazione luce-materiali –Modellare.
1 Superfici nascoste Daniele Marini. 2 Ray casting adatto a CSG o superfici parametriche dipende dal punto di vista è una sorta di campionamento spaziale.
1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending.
Lavorare con le matrici in OGL
1 Programmazione grafica 1 Daniele Marini. 2 Linguaggio di riferimento OpenGL: libreria di procedure che realizza un API (application programmers interface)
14 giugno 2011 Rasterizzazione Prof. Roberto Pirrone.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Determinazione delle superfici visibili
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
TRASFORMAZIONI GEOMETRICHE
Elementi di Geometria Geometria.
Diagrammi 2D e 3D Funzioni di ordine superiore
LA PARABOLA.
1101 = x 10 x 10 x x 10 x = CORRISPONDENZE
LA CIRCONFERENZA.
Daniele Marini, Maurizio Rossi
Texturing - Tessiture Daniele Marini.
Daniele Marini Con contributi di Maurizio Rossi
Dal modello alla visualizzazione: Verso il foto realismo Daniele Marini.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Le trasformazioni Daniele Marini.
Voronoi-Based K Nearest Neighbor Search for Spatial Network Databases
Le proiezioni e la prospettiva
Le proiezioni e la prospettiva
Superfici nascoste Daniele Marini.
1 Visualizzazione scientifica Daniele Marini. 2 Visualizzazione scientifica Trovare un modo per rendere i risultati di un calcolo scientifico, o rilevati.
Modelli di Illuminazione
Controllare le proiezioni
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Trasformazioni Daniele Marini.
Corso di Programmazione Grafica e Laboratorio Introduzione a OpenGL Prof. Daniele Marini.
Corso Di Programmazione Grafica
Rotazioni e quaternioni
Controllare la prospettiva
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
lun mar mer gio ven SAB DOM FEBBRAIO.
Rasterizzazione Antonio Cisternino
Clipping Antonio Cisternino Parte di queste slides sono a cura del Dott. Cignoni.
Costruzione di interfacce Paolo Cignoni
Transcript della presentazione:

Programmazione grafica 1 Daniele Marini

Dal modello alla sua raffigurazione Come passo dalla descrizione astratta, geometrica di un modello alla sua raffigurazione? Le librerie grafiche permettono di descrivere e rappresentare tutti gli elementi del modello permettono anche di controllare il modo della raffigurazione (prospettiva, rendering, ..)

Librerie grafiche Librerie di funzioni che permettono di descrivere e raffigurare un modello geometrico (una forma), es: OpenGL: libreria di procedure che realizza un API (application programmer’s interface) Standard de facto Disponibile su windows, mac, IRIX, Solaris Linux dispone di librerie free Mesa - subset di OpenGL La struttura semantica è simile a quella di altre librerie: GKS, Direct3D, Java3D

Funzioni essenziali Tutte le librerie devono prevedere funzioni essenziali per definire e manipolare elementi geometrici essenziali: punti, segmenti prevedono anche funzioni per definire e manipolare strutture più complesse: poligoni, poliedri, ecc.

Caratteristiche di una libreria grafica maschera le funzioni device dependent È strutturata in primitive, attributi, funzioni di visualizzazione, funzioni di trasformazione funzioni di input, funzioni di controllo Function call output User program Graphics system API I/O devices input data

Il livello più elementare: Disegnare al tratto - “Line drawing” Il plotter a penna, le funzioni: moveto (x,y) lineto (x,y) le funzioni vengono interpretate da un driver Anche il controllo di un display può essere descritto in questo stesso modo

Disegno al tratto Tracciare linee definite in uno spazio cartesiano piano Modalità molto diffusa ma con limiti: come lavorare in 3D? Come gestire strutture geometriche più evolute?

Disegno al tratto Possiamo pensare un disegno piano come la proiezione di un disegno tridimensionale Oppure come un disegno definito nello spazio 3d ma con punti su un medesimo piano di equazione z=0

p(x,y,z)o, nel piano, p(x,y,0) Disegno al tratto I punti sono descritti da vettori: p(x,y,z)o, nel piano, p(x,y,0) Coppie o n-uple di vettori permettono di definire segmenti, spezzate o poligoni

I tipi principali sono: punti segmenti spezzate poligoni p1 p2 p3 p4 p5 p1 p2 p3 p4 p5 p1 p2 p3 p4 p5 p1 p2 p3 p4 p5

Poligoni Hanno diversi aspetti Possono essere semplici e intrecciati Convessi o non convessi

aggregati di poligoni p1 p3 p5 p7 p0 p2 p4 p6 strisce di: triangoli, quadrangoli o ventagli di triangoli p0 p2 p4 p6 p1 p3 p5 p7

Il processo base di raffigurazione di una geometria determinare quale parte della geometria raffigurare: trasformazione window_to_viewport decidere quali linee sono visibili e quali esterne alla window: clipping convertire la geometria in pixel: scan conversione di linee e poligoni

trasformazione window_to_viewport

Le coordinate schermo La figura precedente è definita in uno spazio cartesiano indipendente dal dispositivo di visualizzazione (display, carta, …) In passato il disegno veniva descritto direttamente in coordinate del dispositivo (es. il plotter) La conversione tra coordinate ‘mondo’ - “world co-ordinates” e coordinate dispositivo - “device co-ordinates” si chiama trasformazione window-to-viewport

Spazio mondo / Spazio schermo

SC screen co-ordinates Coordinate mondo WC world co-ordinates (xmax,ymax) (umax,vmax) viewport window (umin,vmin) (xmin, ymin) Coordinate schermo SC screen co-ordinates Coordinate mondo WC world co-ordinates Window in WC: (xmin, ymin), (xmax,ymax) Viewport in WC: (umin,vmin), (umax,vmax)

Traslazione: (-xmin,-ymin) Scala: Traslazione inversa : (umin,vmin)

clipping

Clipping di segmenti Algoritmo di Cohen Sutherland Classificare punti rispetto alle rette che delimitano la finestra - codice a 4 bit: outcode esclusione o inclusione triviale con test sull’outcode per altri segmenti: cercare intersezione con equazione parametrica del segmento

ATTENZIONE a segmenti paralleli ai bordi! Outcode: 4 casi o1=o2=0 tutto interno o1 ≠ 0 o2 = 0 un estremo interno uno esterno, il codice o1 indica quale bordo interseca o1 & o2 ≠ 0 controllare se stanno dalla stessa parte se sì il segmento viene scartato o1 & o2 = 0 entrambi gli estermi sono esterni ma in semipiani diversi, controllare Il controllo richiede solo operazioni booleane Per calcolare l’intersezione con un bordo si usa l’equazione della retta y = mx + q ATTENZIONE a segmenti paralleli ai bordi!

scan conversione di linee e poligoni

Dalla geometria ai pixel: scan conversione di linee Convertire un segmento i cui estremi sono espressi come coppie di numeri reali, in una serie di PIXEL sullo schermo del computer. Problema di conversione da numero reale a intero e di campionamento su una griglia regolare di punti. Un metodo inadeguato dà luogo a “alias” molto evidenti; Aliasing è comunque sempre presente.

Requisiti Velocità luminosità uniforme stile linea antialiasing

Algoritmo base Calcola rapporto incrementale dy/dx genera punti sulla retta con l’equazione esplicita: yi = mxi +b ad ogni passo arrotonda i valori all’intero prossimo: Round(yi)=Floor(0.5+yi) complessità alta: 1 moltiplicazione, 1 somma, 1 arrotondamento ad ogni passo

(xi+1, Round(yi+m)) (xi,yi) (xi, Round(yi)) (xi+1, yi+m)

L’algoritmo opera su rette con |m|<=1, e incrementa ad ogni passo x di una unità (rette con pendenza compresa tra -45° e +45°): Per |m|>1 si applica l’equazione x=f(y) e si incrementa (o decrementa) y di una unità:

Metodo incrementale Si evita il prodotto yi+1 = mxi+1 + b = m(xi + dx) + b = yi + mdx Se dx=1 allora yi+1 = yi + m questo metodo è chiamato DDA, Digital Differential Analyzer

Algoritmo DDA procedure line(x0,y0,x1,y1:float; value:integer); var x:integer; dx,dy,y,m: float; begin dy:=y1-y0; dx:=x1-x0; m:=dy/dx; y:=y0; for x:=x0 to x1 do begin WritePixel(x,Round(y),value); y:=y+m end end.