INFORMATICA GRAFICA!

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "INFORMATICA GRAFICA!"

Transcript

1 Knowledge Aided Engineering Manufacturing and Related Technologies INFORMATICA GRAFICA! 13 Maggio! Texture! Michele Antolini

2 Texture! Tessitura si può considerare come il vestito dei nostri oggetti 3D! Si tratta di un array di pixel che vengono adagiati su una superficie! Servono ad aumentare il dettaglio della scena!

3 Texture! Esempio: modellazione di un muro di mattoni senza texture! Il muro è una parete piana...ma è formata in realtà da vari mattoni disposti in una certa maniera! Possiamo accostare una serie di parallelepipedi rossi secondo lo schema di un muro generico! Il risultato sarebbe troppo regolare e pulito per sembrare (almeno un poʼ) reale! In più...i mattoni sono porosi, non sono parallelepipedi perfetti!

4 Texture! Esempio: modellazione di un muro con texture! Usiamo una parete piana (un rettangolo o un parallelepipedo)! Applichiamo (come fosse un poster) una texture presa da un muro reale! Lʼimmagine verrà distorta correttamente a seconda del punto di vista!

5 Texture mapping! Il caso del muro è molto semplice! In generale una texture non viene posta su un rettangolo, ma su un poligono o una superficie generica! Eʼ necessario specificare lʼalgoritmo di texture mapping!

6 Textures! Fasi da seguire:! 1. Creare un oggetto da texturizzare! 2. Specificare una texture per tale oggetto! 3. Indicare come deve essere applicata la texture (per ogni pixel)! 4. Abilitare il texture mapping! 5. Disegnare la scena, fornendo coordinate geometriche e delle texture!

7 Texture - Dimensioni! Una texture non è necessariamente bidimensionale! Esistono texture monodimensionali (linee) o tridimensionali (come le fette create da una TAC)! Un elemento di una texture spesso si definisce textel (contrazione di texture pixel)! Ogni textel può essere definito da due, tre o quattro valori a seconda dellʼinterpretazione della texture (ad esempio RGB, RGBA, componente di profondità)!

8 Texture! Ci sono vari modi di applicare il colore di un textel con un frammento di superficie! replace: il frammento di superficie viene rimpiazzato dai textel! modulate: il colore del frammento di superficie viene usato per modulare/scalare il colore del textel! blend: il colore del frammento è mescolato al textel!

9 Texture - Abilitazione! Per abilitare o disabilitare le textures si usano le consuete funzioni glenable() e gldisable() con argomento una tra le seguenti costanti:! GL_TEXTURE_1D! GL_TEXTURE_2D! GL_TEXTURE_3D! GL_TEXTURE_CUBE_MAP!

10 Texture e geometry coords! Prima di applicare una texture bisogna definire come viene incollata sullʼoggetto! Una texture bidimensionale ha una coppia di coordinate il cui range è (0.0, 1.0) in entrambe le direzioni! le coordinate della texture sono (0.0,0.0), (0.0,1.0), (1.0,0.0), (1.0,1.0) per i quattro vertici di un muro (ad esempio)! Una texture può essere ripetuta, in tal caso:! le coordinate della texture non sono sono più le stesse per i vertici esterni del muro, ma sono scalate in base al numero di ripetizioni necessarie! Bisogna specificare il comportamento della texture quando le sue coordinate escono dal range (0.0, 1.0)! Le texture devono essere affiancabili (vincolo necessario solo per finalità estetiche)!

11 " Texture - Esempio! In questo esempio viene creata una scacchiera, generando un array 2D tramite codice! /*!Create checkerboard texture!*/" #define!checkimagewidth 64" #define!checkimageheight 64" static GLubyte checkimage[checkimageheight][checkimagewidth][4];" " void makecheckimage(void)" {" }! int i, j, c;" for (i = 0; i < checkimageheight; i++) {" for (j = 0; j < checkimagewidth; j++) {" }" }" c = ((((i&0x8)==0)^((j&0x8))==0))*255;" checkimage[i][j][0] = (GLubyte) c;" checkimage[i][j][1] = (GLubyte) c;" checkimage[i][j][2] = (GLubyte) c;" checkimage[i][j][3] = (GLubyte) 255;"

12 " " " " Texture - Esempio! Allʼinterno della init() si definiscono i parametri della texture, che viene alla fine caricata nella memoria della scheda video! Gluint texture;" void init(void) {" glclearcolor (0.0, 0.0, 0.0, 0.0);" glshademodel(gl_flat);" }! glenable(gl_depth_test);" makecheckimage();" glgentextures(1, &texture);! glbindtexture(gl_texture_2d, texture);! glpixelstorei(gl_unpack_alignment, 1);" gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_S, GL_REPEAT);" gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_REPEAT);" gltexparameteri(gl_texture_2d, GL_TEXTURE_MAG_FILTER, GL_NEAREST);" gltexparameteri(gl_texture_2d, GL_TEXTURE_MIN_FILTER, GL_NEAREST);" glteximage2d(gl_texture_2d, 0, 4, checkimagewidth, checkimageheight," 0, GL_RGBA, GL_UNSIGNED_BYTE, checkimage);"

13 Texture - Esempio! glpixelstorei( GL_UNPACK_ALIGNMENT, 1 );! Definisce la dimensione dei dati dellʼarray. In questo caso si tratta di un array di byte. Valori possibili: 1,4,8! glgentextures( 1, &texname );! richiede di creare un oggetto texture! glbindtexture( GL_TEXTURE_2D, texname);! definisce la texture come bidimensionale!

14 Texture - Esempio! gltexparameteri()! GL_TEXTURE_2D: si riferisce alla dimensione della texture! GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: impostano il comportamento di ripetizione della texture! GL_CLAMP (no ripetizione), GL_REPEAT (ripetizione)! GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER: imposta come la texture deve essere scalata (MAGNIFIED o MINIMIZED) se lʼarea non corrisponde a quella della destinazione! GL_NEAREST (punto più vicino), GL_LINEAR (interpolazione lineare)! glteximage2d()! Copia i dati della texture nella memoria della scheda video!

15 " " " Texture - Esempio! void display(void)" {" glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT);" glenable(gl_texture_2d);" }! Display()! glbindtexture(gl_texture_2d, texture);! " gltexenvf(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_DECAL);" glbegin(gl_quads);" gltexcoord2f(0.0, 0.0); glvertex3f(-2.0, -1.0, 0.0);" gltexcoord2f(0.0, 3.0); glvertex3f(-2.0, 1.0, 0.0);" gltexcoord2f(3.0, 3.0); glvertex3f(0.0, 1.0, 0.0);" gltexcoord2f(3.0, 0.0); glvertex3f(0.0, -1.0, 0.0);" gltexcoord2f(0.0, 0.0); glvertex3f(1.0, -1.0, 0.0);" gltexcoord2f(0.0, 3.0); glvertex3f(1.0, 1.0, 0.0);" gltexcoord2f(3.0, 3.0); glvertex3f( , 1.0, );" gltexcoord2f(3.0, 0.0); glvertex3f( , -1.0, );" glend();" glflush();" gldisable(gl_texture_2d);"

16 Texture - Esempio! gltextenvf()! GL_TEXTURE_ENV_MODE:Imposta la modalità con cui la texture viene messa sulla superficie! può valere GL_ADD, GL_MODULATE, GL_DECAL, GL_BLEND, GL_REPLACE, GL_COMBINE! glbindtexture( GL_TEXTURE_2D, texname )! Imposta la texture attiva! gltexcoord2f()! Imposta le coordinate della texture per il vertice successivo! Valori > 1.0 indicano una scalatura e una eventuale ripetizione a seconda del valore dei parametri GL_TEXTURE_WRAP_S oppure T!

17 Texture - Esempio! keyboard callback! void keyboard (unsigned char key, int x, int y)" {" switch (key) {" case 's':" }! }" gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_S, GL_CLAMP);" glutpostredisplay();" break;" case 'S':" gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_S, GL_REPEAT);" glutpostredisplay();" break;" case 't':" gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_CLAMP);" glutpostredisplay();" break;" case 'T':" gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_REPEAT);" glutpostredisplay();" break;" default:" break;"

18 Texture - Esempio!

19 Texture - Subimage! Eʼ possibile aggiungere altre texture sopra quelle già definite! gltexsubimage2d(! GL_TEXTURE_2D, //tipo di texture! 0,!!!!!! //livello di dettaglio! 12, //offset x! 44, //offset y! subimagewidth,! subimageheight,! GL_RGBA, //formato textel! GL_UNSIGNED_BYTE, //tipo di dati! subimage ); //array textel!

20 Texture Caricamento file immagine! OpenGL non gestisce formati di file compressi (JPG, GIF, TGA, PNG...)! La lettura (e la conversione in array) vanno effettuate con estensioni di OpenGL o librerie esterne! Esistono le funzioni glcompressedteximage*d ma lʼimplementazione dipende da come è implementata la libreria OpenGL locale!!

21 Texture Caricamento file immagine! Un trucchetto è quello di!! Aprire/creare unʼimmagine con GIMP! Salvarla come C source! Non selezionare Use Glib types! Attivare/disattivare lʼalpha channel a seconda del caso, ma usare GL_RGB o GL_RGBA di conseguenza!! Rinominare il file come.h ed includerlo nel progetto! Viene creata una struttura che contiene dimensione e dati dellʼimmagine! Inserire i valori corretti nella glteximage2! gimp_image.width, gimp_image.height! gimp_image.pixel_data!

22 Texture Caricamento file immagine! In alternativa, utilizzare librerie come DevIL! ImageData myimage ilinit(); ilenable(il_origin_set); ilenable(il_file_overwrite); ILuint handle; ilgenimages(1, &handle); ilbindimage(handle); ILboolean loaded = illoadimage((const wchar_t*) myimage.jpg ); if (!loaded) printf( error loading image\n"); myimage.m_width = ilgetinteger(il_image_width); myimage.m_height = ilgetinteger(il_image_height); myimage.m_data = (unsigned char*)malloc(myimage.m_width*myimage.m_height*3*sizeof (unsigned char)); ilcopypixels(0,0,0, myimage.m_width, myimage.m_height,1, IL_RGB, IL_UNSIGNED_BYTE, myimage.m_data); ildeleteimages(1, &handle);

23 Texture - MipMap! " MipMap sta per multum in parvo (molti in un piccolo spazio)! Permette di memorizzare diverse versioni di una texture, a seconda del livello di dettaglio che si vuole ottenere (es. a seconda della risoluzione o della distanza)! OpenGL sceglierà automaticamente la texture da utilizzare!!! void init() {"!..." " gltexparameteri(gl_texture_2d, GL_TEXTURE_MIN_FILTER, "!!!!GL_NEAREST_MIPMAP_NEAREST);" glteximage2d(gl_texture_2d, 0, GL_RGBA, 32, 32, 0,"!!! GL_RGBA, GL_UNSIGNED_BYTE, mipmapimage32);" glteximage2d(gl_texture_2d, 1, GL_RGBA, 16, 16, 0,"!!! GL_RGBA, GL_UNSIGNED_BYTE, mipmapimage16);" glteximage2d(gl_texture_2d, 2, GL_RGBA, 8, 8, 0,"!!! GL_RGBA, GL_UNSIGNED_BYTE, mipmapimage8);" glteximage2d(gl_texture_2d, 3, GL_RGBA, 4, 4, 0,"!!! GL_RGBA, GL_UNSIGNED_BYTE, mipmapimage4);" glteximage2d(gl_texture_2d, 4, GL_RGBA, 2, 2, 0,"!!! GL_RGBA, GL_UNSIGNED_BYTE, mipmapimage2);" glteximage2d(gl_texture_2d, 5, GL_RGBA, 1, 1, 0,"!!! GL_RGBA, GL_UNSIGNED_BYTE, mipmapimage1);

24 Texture Sphere mapping! Lo sphere mapping permette di circondare un oggetto con una texture, vedendone il riflesso sulla superficie (effetto Terminator 2 )! Il passaggio chiave è la chiamata a gltexgeni, che crea lo sphere mapping per le coordinate S e T della texture! sphere = glunewquadric();" gluquadricdrawstyle( sphere, GLU_FILL);" gluquadricnormals( sphere, GLU_SMOOTH);" gluquadricorientation( sphere, GLU_OUTSIDE);" gluquadrictexture( sphere, GL_TRUE);" " gltexgeni(gl_s, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);!!!// Set Up Sphere Mapping" gltexgeni(gl_t, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);!!!// Set Up Sphere Mapping" " " glcolor3f(0.0, 1.0, 0.0);" glusphere( sphere, 0.6, 16, 16);

25 Texture Cube mapping! Simile allo sphere mapping, ma permette di impostare sei texture differenti (una per ogni faccia di un cubo)!

26 Texture Cube mapping! Chiamate successive alla glteximage2d, con primo argomento:! GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT Abilitare/Disabilitare cube mapping:! glenable(gl_texture_cube_map_ext); gldisable(gl_texture_cube_map_ext);

27 Cube mapping! Questo esempio imposta in modo sintetico le sei texture per il cube mapping (ordine delle texture nellʼarray: x+, x-, y+, y-, z+, z-)! GLubyte face[6][64][64][3]; for (i=0; i<6; i++) { glteximage2d(gl_texture_cube_map_positive_x_ext + i, 0, //level GL_RGB8, //internal format 64, //width 64, //height 0, //border GL_RGB, //format GL_UNSIGNED_BYTE, //type &face[i][0][0][0]); // pixel data }

INFORMATICA GRAFICA. 19 Maggio Texture. Michele Antolini

INFORMATICA GRAFICA. 19 Maggio Texture. Michele Antolini Knowledge Aided Engineering Manufacturing and Related Technologies INFORMATICA GRAFICA 19 Maggio Texture michele.antolini@mail.polimi.it Texture Tessitura si può considerare come il vestito dei nostri

Dettagli

Texture. Tessitura si può considerare come il ves$to dei nostri ogge7 3D. Si tra;a di un array di pixel che vengono adagia?

Texture. Tessitura si può considerare come il ves$to dei nostri ogge7 3D. Si tra;a di un array di pixel che vengono adagia? Textures Texture Tessitura si può considerare come il ves$to dei nostri ogge7 3D Si tra;a di un array di pixel che vengono adagia? su una superficie Servono ad aumentare il de;aglio della scena Texture

Dettagli

Introduzione SOMMARIO

Introduzione SOMMARIO SOMMARIO Introduzione alle librerie grafiche e a OpenGL Implementazioni hw e sw e supporto multipiattaforma Esempi di programma con OpenGL Sistemi di coordinate 2D e 3D Proiezioni Primitive 3D Pipeline

Dettagli

Computer Graphics. Memoria RAM nelle schede grafiche. Texture Mapping: paradigma di memoria. Concetto. Tessiture: Caso più comune.

Computer Graphics. Memoria RAM nelle schede grafiche. Texture Mapping: paradigma di memoria. Concetto. Tessiture: Caso più comune. Computer Graphics Memoria RAM nelle schede grafiche Lezione 3: Università dell Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 202/3 molti dettagli a poco prezzo:

Dettagli

Corso di GraficaComputazionale

Corso di GraficaComputazionale Corso di GraficaComputazionale OpenGL Docente: Massimiliano Corsini Laurea Specialistica in Informatica Università degli Studi di Siena Introduzione Open Graphics Language Libreria C Cross-platform Qualche

Dettagli

Il texture fetch (o: texture lookup) Operazione molto semplice in GLSL, es: e si memorizza le coord texture (s,t) per ogni vertice

Il texture fetch (o: texture lookup) Operazione molto semplice in GLSL, es: e si memorizza le coord texture (s,t) per ogni vertice e si memorizza le coord texture (s,t) per ogni vertice Index Buffer Verex Buffer s 0 t 0 s t s t coord texture per ogni vertice Vertici in obj. space + attributi s t vertex shader pass down di ( s, t )

Dettagli

Corso di Grafica Computazionale

Corso di Grafica Computazionale Corso di Grafica Computazionale OpenGL Docente: Massimiliano Corsini Laurea Specialistica in Informatica Università degli Studi di Siena Introduzione Open Graphics Language Libreria C Cross-platform Qualche

Dettagli

Texture Mapping. Texture Mapping. Coordinate di texture. Esempi. Coordinate Texture

Texture Mapping. Texture Mapping. Coordinate di texture. Esempi. Coordinate Texture Texture Mapping Cotruzione di Interfacce Lezione 9 Texturing cignoni@iei.pi.cnr.it http://vcg.iei.pi.cnr.it/~cignoni Data un immagine bidimenionale (ad e. una immagine fotografica cannerizzata) viene ritagliata,

Dettagli

Bump Mapping & Under-Water Effects. Dott. Stefano Tubini

Bump Mapping & Under-Water Effects. Dott. Stefano Tubini Bump Mapping & Under-Water Effects Dott. Stefano Tubini Bump Mapping Il bump mapping è un metodo per simulare superfici scabrose, con rilievi, con textures bidimensionali. Per esempio: se realizziamo un

Dettagli

Texture Mapping. Texture Mapping. Coordinate di texture. Esempi. Coordinate Texture

Texture Mapping. Texture Mapping. Coordinate di texture. Esempi. Coordinate Texture Texture Mapping Cotruzione di Interfacce Lezione 22 Texturing cignoni@iei.pi.cnr.it http://vcg.iei.pi.cnr.it/~cignoni Data un immagine bidimenionale (ad e. una foto) viene ritagliata, tirata o comprea

Dettagli

Corso di grafica 3D con C++ e OpenGL. Alessandro Bugatti ITIS B. Castelli

Corso di grafica 3D con C++ e OpenGL. Alessandro Bugatti ITIS B. Castelli Corso di grafica 3D con C++ e OpenGL Utilizzo di quadriche Una quadrica in 3D è ogni superficie rappresentata da un'equazione polinomiale del secondo ordine nelle variabili spaziali (coordinate). Esempi

Dettagli

INFORMATICA GRAFICA. 12 Maggio Display lists, blending, fog. Michele Antolini

INFORMATICA GRAFICA. 12 Maggio Display lists, blending, fog. Michele Antolini Knowledge Aided Engineering Manufacturing and Related Technologies INFORMATICA GRAFICA 12 Maggio Display lists, blending, fog michele.antolini@mail.polimi.it BLENDING Blending Il blending (letteralmente

Dettagli

INFORMATICA GRAFICA!

INFORMATICA GRAFICA! Knowledge Aided Engineering Manufacturing and Related Technologies INFORMATICA GRAFICA! 18 Maggio! Vertex array, VBO, Display lists! Michele Antolini michele.antolini@mail.polimi.it! Prestazioni! Abbiamo

Dettagli

WEBGL FOR DUMMIES [PARTE SETTE]: USO DELLE TEXTURE

WEBGL FOR DUMMIES [PARTE SETTE]: USO DELLE TEXTURE WEBGL FOR DUMMIES [PARTE SETTE]: USO DELLE TEXTURE Per dare infatti più realismo alla scena e contemporaneamente arricchirla, una pratica molto usata è quella di "incollare" sulle nostre superfici delle

Dettagli

Corso di Tecniche Avanzate per la Grafica Texturing

Corso di Tecniche Avanzate per la Grafica Texturing Corso di Tecniche Avanzate per la Grafica Texturing Docente: Massimiliano Corsini Laurea Specialistica in Informatica Università di Ferrara Texturing Il concetto di texturing è importante Si tratta di

Dettagli

INFORMATICA GRAFICA. 28 Aprile Trasformazioni - Illuminazione. Michele Antolini

INFORMATICA GRAFICA. 28 Aprile Trasformazioni - Illuminazione. Michele Antolini Knowledge Aided Engineering Manufacturing and Related Technologies INFORMATICA GRAFICA 28 Aprile Trasformazioni - Illuminazione michele.antolini@mail.polimi.it Trasformazioni Durante il ridisegno della

Dettagli

Corso di Tecniche Avanzate per la Grafica

Corso di Tecniche Avanzate per la Grafica Corso di Tecniche Avanzate per la Grafica Render-to-texture Docente: Massimiliano Corsini Laurea Specialistica in Informatica Università di Ferrara Overview Render-to-texture glreadpixels(...), gldrawpixels(...)

Dettagli

Modellazione poligonale in Maya

Modellazione poligonale in Maya Informatica Grafica ][ Modellazione poligonale in Maya La tecnica di modellazione poligonale permette di costruire oggetti tridimensionali basati su poligoni. Malgrado gli oggetti poligonali siano spigolosi

Dettagli

Corso di Grafica Computazionale

Corso di Grafica Computazionale Corso di Grafica Computazionale Texturing Docente: Massimiliano Corsini Laurea Specialistica in Ing. Informatica Università degli Studi di Siena Texturing Il concetto di texturing è importante Si tratta

Dettagli

LEZIONI DI LABORATORIO. Texture mapping (1)

LEZIONI DI LABORATORIO. Texture mapping (1) BLENDER LEZIONI DI LABORATORIO Texture mapping (1) Utilizzo di texture per effetti più realistici. Ottenibili con: Procedure (mediante formule matematiche) Senza procedure (con immagini, video, mappe ecc)

Dettagli

Computer Graphics. Immagine sul Raster Display. Grafica 3D: analogia con fotocamera. La matrice di Pixel è memorizzata nel FRAME BUFFER

Computer Graphics. Immagine sul Raster Display. Grafica 3D: analogia con fotocamera. La matrice di Pixel è memorizzata nel FRAME BUFFER Computer Graphics Immagine sul Raster Display Il RASTER è costituito da più SCAN LINES Ogni Scan Line è formata da più PIXEL La matrice di Pixel è memorizzata nel FRAME BUFFER Grafica 3D: analogia con

Dettagli

BLENDER LEZIONI DI LABORATORIO

BLENDER LEZIONI DI LABORATORIO BLENDER LEZIONI DI LABORATORIO Texture mapping (1) Utilizzo di texture per effetti più realistici. Ottenibili con: Procedure (mediante formule matematiche) Senza procedure 8con immagini, video, mappe ecc)

Dettagli

Grafica al Calcolatore Tecniche di mappatura - 1. Introduzione

Grafica al Calcolatore Tecniche di mappatura - 1. Introduzione Grafica al Calcolatore Tecniche di mappatura - 1 Introduzione Grafica al Calcolatore Tecniche di mappatura - 2 Texture mapping Grafica al Calcolatore Tecniche di mappatura - 3 La texture può essere applicata

Dettagli

Le texture. Le texture. Informatica Grafica ][ Le texture. Le texture. Le texture. Le texture

Le texture. Le texture. Informatica Grafica ][ Le texture. Le texture. Le texture. Le texture Informatica Grafica ][ Come visto nel corso di IG1, le texture peremttono di applicare immagini sulle superfici di oggetti tridimensionali. Nella grafica in tempo reale esse assumono un'importanza ancora

Dettagli

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura: Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata

Dettagli

INFORMATICA GRAFICA. 5 Maggio Interattività. Michele Antolini

INFORMATICA GRAFICA. 5 Maggio Interattività. Michele Antolini Knowledge Aided Engineering Manufacturing and Related Technologies INFORMATICA GRAFICA 5 Maggio Interattività michele.antolini@mail.polimi.it Input Libreria glut interfaccia con il window system gestione

Dettagli

Introduzione al linguaggio C Primi programmi

Introduzione al linguaggio C Primi programmi Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Aggiornamento o modifica di un DEM con l'ausilio di QGIS

Aggiornamento o modifica di un DEM con l'ausilio di QGIS Documento interno al servizio dott. Ruggero Valentinotti. ing. Diego Moar 01/03/2016 Aggiornamento o modifica di un DEM con l'ausilio di QGIS Il presente documento illustra come procedere per modificare

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017

Dettagli

Modulo 1: Le I.C.T. UD 1.3a: La Codifica Digitale delle Immagini

Modulo 1: Le I.C.T. UD 1.3a: La Codifica Digitale delle Immagini Modulo 1: Le I.C.T. : La Codifica Digitale delle Immagini Prof. Alberto Postiglione Corso di Informatica Generale (AA 07-08) Corso di Laurea in Scienze della Comunicazione Università degli Studi di Salerno

Dettagli

Montaggio e post-produzione

Montaggio e post-produzione Informatica Grafica I Montaggio e post-produzione Una volta creata un'animazione, occorre eseguirne il rendering per crearne un filmato. Il procedimento e' simile al rendering di immagini statiche, ma

Dettagli

Inizializzare oggetti

Inizializzare oggetti Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Primi programmi in C

Primi programmi in C Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Uso del compilatore gcc Struttura di un programma

Dettagli

I tipi strutturati e i record in C++

I tipi strutturati e i record in C++ I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Passare argomenti al programma

Passare argomenti al programma Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di

Dettagli

Grafica al calcolatore - Computer Graphics

Grafica al calcolatore - Computer Graphics Grafica al calcolatore - Computer Graphics 9 Tecniche di Mapping 24/11/12 Grafica 2013-9 1 Introduzione Il modello di illuminazione di Phong è abbastanza versatile: con una scelta opportuna dei vari parametri

Dettagli

Oggetti. Definizioni di Classi II

Oggetti. Definizioni di Classi II Programmazione a Oggetti Definizioni di Classi II Sommario Costruzioni di oggetti Campi e metodi di classe Overloading Istanziazione di oggetti Costruzione di un oggetto Processo complesso che comprende

Dettagli

Array. Aggragati di variabili omogenee...

Array. Aggragati di variabili omogenee... Array Aggragati di variabili omogenee... Cosa è un array È un insieme di variabili omogenee identificato da un indice, ad esempio Se devo leggere 1 numeri dallo standard input e memorizzarli all'interno

Dettagli

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Ingresso ed Uscita in C. Informatica 1 / 15

Ingresso ed Uscita in C. Informatica 1 / 15 Ingresso ed Uscita in C Informatica 1 / 15 Input e Output in C Linguaggio C: progettato per essere semplice e con poche istruzioni Non esistono istruzioni di ingresso / uscita (I/O)!!! Ingresso ed uscita

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

Il linguaggio C. Istruzioni, funzioni, dati strutturati

Il linguaggio C. Istruzioni, funzioni, dati strutturati Il linguaggio C Istruzioni, funzioni, dati strutturati Istruzioni Servono a dirigere il flusso di esecuzione di un programma controllano l ordine di esecuzione delle espressioni, quindi dei loro side effects

Dettagli

1.3a: La Codifica Digitale delle Immagini

1.3a: La Codifica Digitale delle Immagini Prof. Alberto Postiglione Scienze della e Facoltà di Lettere e Filosofia Università degli Studi di Salerno 1.3a: La Codifica Digitale delle Immagini Informatica Generale (Laurea in Scienze della e) Sistemi

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Puntatori a funzioni 1 Funzioni che restituiscono puntatori Il valore di ritorno restituito da una funzione può essere di qualsiasi tipo, compreso il tipo puntatore.

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016

Dettagli

La codifica delle immagini

La codifica delle immagini Un immagine può occupare molto spazio anche se non tutti i 16777216 colori sono CONTEMPORANEAMENTE usati Si può usare un sottoinsieme dei colori Si considera una tavolozza (palette) di colori (codificati

Dettagli

UNIVERSITÀ DEGLI STUDI DI PARMA

UNIVERSITÀ DEGLI STUDI DI PARMA UNIVERSITÀ DEGLI STUDI DI PARMA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA VISUALIZZAZIONE IN GRAFICA 3D DI RIFLESSIONI DINAMICHE MEDIANTE ENVIRONMENT MAPPING Relatore Chiar.mo Prof.

Dettagli

CODIFICA IMMAGINI IN BIANCO E NERO

CODIFICA IMMAGINI IN BIANCO E NERO Rappresentazione delle immagini Anche le immagini possono essere codificate mediante una sequenza di 0 e 1., questa operazione si chiama digitalizzazione. La prima cosa da fare è dividere l immagine in

Dettagli

Texture Mapping Realtà Virtuale: il presente, il pass T a e t x o u, r i e l f M u a t p u pi ro ng

Texture Mapping Realtà Virtuale: il presente, il pass T a e t x o u, r i e l f M u a t p u pi ro ng Texture Mapping Texture Mapping Texture coordinates associate ai vertici del triangolo =>> t corrispondenza tra spazio dello schemo (fragment)) e texture-space space. Colore di ogni pixel determinato in

Dettagli

Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet

Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment esterno Per riferimento

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Le Funzioni in C Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2010/2011 docente: prof. Michele Salvemini 1/24 Sommario Le funzioni Il

Dettagli

Formati e compressioni

Formati e compressioni Sistemi Multimediali Marco Gribaudo marcog@di.unito.it, gribaudo@elet.polimi.it Formati e compressioni Anche se in memoria le immagini vengono quasi sempre memorizzate come una sequenza di colori RGB,

Dettagli

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 6 Aprile 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int x = -1; Scrivere la porzione di codice che inserisce

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Linguaggio C: strutture di controllo

Linguaggio C: strutture di controllo Linguaggio C: strutture di controllo Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C: strutture di controllo

Dettagli

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case

Dettagli

Guida a Getrix: Indice Multimedia Planimetria

Guida a Getrix: Indice Multimedia Planimetria Guida a Getrix: Indice Multimedia Planimetria Multimedia - PLANIMETRIA: Crea Modifica Cancella Ottieni URL (Multimedia Planimetria) pag. 2 - Creare una Planimetria: Costruzione (Multimedia Planimetria

Dettagli

La codifica delle immagini

La codifica delle immagini Per distinguere 16777216 colori sono necessari 24 bit per la codifica di ciascun pixel: la codifica di un'immagine formata da 640X480 pixel richiederà 7.372.800 bit (921.600 byte) Esistono delle tecniche

Dettagli

FILE DI TESTO e SOTTOPROGRAMMI

FILE DI TESTO e SOTTOPROGRAMMI FILE DI TESTO e SOTTOPROGRAMMI Prof. Enrico Terrone A. S: 2008/09 I file di testo in C++ I file di testo sono una forma di input/output alternativa alla tastiera e al monitor (con il vantaggio della persistenza).

Dettagli

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project Database and data mining group, SQL Server 2005 Integration Services SQL Server 2005: ETL - 1 Database and data mining group, Integration Services Project Permette di gestire tutti i processi di ETL Basato

Dettagli

Linguaggi di Programmazione I Lezione 9

Linguaggi di Programmazione I Lezione 9 Linguaggi di Programmazione I Lezione 9 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 6 maggio 28 Variabili 3 Ambiti................................................................

Dettagli

Istruzioni di selezione in Java 1

Istruzioni di selezione in Java 1 Ordine di esecuzione Istruzioni di selezione in Java Corso di laurea in Comunicazione digitale Nei metodi l ordine di esecuzione delle istruzioni è sequenziale se non specificato altrimenti Alcune istruzioni

Dettagli

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while) Laboratorio Due 1) Switch 2) Costrutti Iterazione (For, While, do while) GLI ARGOMENTI DI OGGI Istruzione switch I costrutti di iterazione (For, while, do while) Le funzioni (e ricorsione) Terza Esercitazione

Dettagli

Grafica Computazionale. Texturing. Fabio Ganovelli a.a

Grafica Computazionale. Texturing. Fabio Ganovelli a.a Grafica Computazionale Texturing Fabio Ganovelli fabio.ganovelli@isti.cnr.it a.a. 2005-2006 Texture Mapping Nelle operazioni per frammento si può accedere ad una RAM apposita la Texture RAM strutturata

Dettagli

BufferedImage: immagine gestita completamente in RAM Raster: gestione dei dati che formano l'immagine:

BufferedImage: immagine gestita completamente in RAM Raster: gestione dei dati che formano l'immagine: Immagini in Java BufferedImage Raster ColorModel SampleModel DataBuffer ColorSpace Bande e pixel BufferedImage: immagine gestita completamente in RAM Raster: gestione dei dati che formano l'immagine: DataBuffer:

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Indici ed introduzione a Maya

Indici ed introduzione a Maya Informatica Grafica ][ Indici ed introduzione a Maya Supponiamo di voler disegnare un oggetto a forma di farfalla: Marco Gribaudo marcog@di.unito.it E' costituito da 8 vertici, le cui coordinate sono:

Dettagli

A. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica

A. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica informatica Java basi del linguaggio Alberto Ferrari Informatica struttura di un programma Java /** * Classe EsempioProgramma * Un esempio di programmazione in Java * @author 4A Informatica */ public class

Dettagli

Sempre piu difficile. Pallina che ruota sull anello. Doppio Anello. Rotolamento pallina 2. Rotolamento pallina 1. Aggiungiamo nell ordine

Sempre piu difficile. Pallina che ruota sull anello. Doppio Anello. Rotolamento pallina 2. Rotolamento pallina 1. Aggiungiamo nell ordine Sempre piu difficile Costruzione di Interfacce Lezione 9 Esercitazione Shading Aggiungiamo nell ordine L anello che e formato da una doppia striscia Una pallina che rotola sull anello L anello che ruota

Dettagli

Puntatori e array. Violetta Lonati

Puntatori e array. Violetta Lonati Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array

Dettagli

Costruiamo un'immagine o qualcosa di simile.

Costruiamo un'immagine o qualcosa di simile. Costruiamo un'immagine...... o qualcosa di simile. Se consideriamo la C che si trova in fondo a destra, ci accorgiamo che un'immagine non è altro che una tabella di valori. Nel caso in cui si consideri

Dettagli

Creare un nuovo simbolo

Creare un nuovo simbolo Creare un nuovo simbolo Premessa In Allplan è possibile creare o importare profili 2D in modo da salvarli nella Library ed utilizzarli per la creazione di elementi 3D (pilastri, travi, etc ) Creazione

Dettagli

Le immagini digitali

Le immagini digitali Le immagini digitali Formati e caratteristiche di digitalizzazione Processo complessivo 1. Documento originale (eventuale restauro del supporto) Argomento della lezione 2. Scansione 3. Oggetto digitale

Dettagli

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto Usare e costruire oggetti Variabili e Oggetti Lo spazio di memoria di Java Le API di Java Gli oggetti sono entità di un programma che si possono manipolare invocando i metodi System.out oggetto della classe

Dettagli

Linguaggi di Programmazione I Lezione 10

Linguaggi di Programmazione I Lezione 10 Linguaggi di Programmazione I Lezione 10 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 8 maggio 2008 Array 3 Dichiarazione...........................................................

Dettagli

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

Estensioni Opengl. Estensioni Opengl. Opengl 1.2 e 1.3. Come si usano

Estensioni Opengl. Estensioni Opengl. Opengl 1.2 e 1.3. Come si usano Estensioni Opengl Costruzione di Interfacce Lezione 27 Estensioni Opengl, Multitexturing, cignoni@iei.pi.cnr.it http://vcg.isti.cnr.it/~cignoni Opengl è guidato dal consorzio Opengl ARB (Architecture Review

Dettagli

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)

Dettagli

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Titolo presentazione INFORMATICA A sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario

Dettagli

Introduzione alla Grafica

Introduzione alla Grafica GRAFICA Introduzione alla Grafica Teoria del colore Stampa Offset - Deretinatura Stampa digitale Immagini raster Immagini vettoriali - Pdf Briefing con il cliente Riepilogo... cerchio di Itten al centro

Dettagli

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

Esercitazione Google Maps

Esercitazione Google Maps Esercitazione Google Maps Esercizio 1 Visualizzare i risultati della API comuni.php su una mappa geografica. Soluzione Come prima cosa, occorre creare una chiave di utilizzo della libreria Google Maps.

Dettagli

PROVA SCRITTA 23 MARZO 2010

PROVA SCRITTA 23 MARZO 2010 PROVA SCRITTA 23 MARZO 2010 In un file binario, MY_FILE.DAT, si memorizzano per ciascuno studente universitario: nome e cognome (stringhe, 20 char), matricola (intero), codice del corso di laurea (stringa

Dettagli

Basi di Dati Spaziali

Basi di Dati Spaziali Corso di Basi di Dati Spaziali Rappresentazione di oggetti spaziali Angelo Montanari Donatella Gubiani Modelli dei dati spaziali e modi di rappresentazione Esistono varie modalità di modellazione e rappresentazione

Dettagli