Programmazione J2ME. Lezione 10. Mobile3D (incompleta) Di Blasi Gianpiero - D.M.I. - Università di Catania

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Programmazione J2ME. Lezione 10. Mobile3D (incompleta) Di Blasi Gianpiero - D.M.I. - Università di Catania"

Transcript

1 Di Blasi Gianpiero - D.M.I. - Università di Catania Programmazione J2ME Lezione 10 Mobile3D (incompleta)

2 Cosa impareremo oggi? L'API Mobile3D Come scoprire la presenza dell'api Mobile3D Caratteristiche generali e funzionamento del package javax.microedition.m3g

3 Introduzione (1) Questa lezione presenta L'API M3G (Mobile3D Graphics) per dispositivi J2ME Tale API (JSR 184) è un package opzionale per la creazione di ambienti tridimensionali La libreria presenta una serie di classi ed un modello di programmazione molto simile all'api Java3D Sfortunatamente però le due API non sono compatibili

4 Introduzione (2) In ogni caso la conoscenza di Java3D semplifica notevolmente lo studio di Mobile3D (ovviamente vale anche il viceversa) Non tutti i dispositivi supportano Mobile3D, ma la maggior parte degli emulatori sono già abilitati Durante questa lezione darò per scontata la conoscenza dei principi fondamentali della Computer Graphics

5 Introduzione (3) L'API supporta sia la programmazione grafica di alto livello sia quella di basso livello Nell'implementazione di alto livello (detta retained mode), lo sviluppatore lavora con un modello scene graph ed il rendering dell'ambiente 3D è automatico e tutto a carico del motore Mobile3D Nell'implementazione di basso livello (immediate mode) lo sviluppatore deve invece disegnare manualmente tutto il mondo 3D (compresi i problemi di prospettiva, di luce, di vista, ecc.)

6 Introduzione (4) Noi ci occuperemo principalmente del retained mode poiché è più semplice e simile a Java3D, daremo solo cenni invece sull'immediate mode Il sistema a basso livello si comporta esattamente come le librerie OpenGL ES OpenGL ES (OpenGL for Embedded Systems) è un'api di basso livello sottoinsieme di OpenGL specifica per i dispositivi embedded Essa fornisce un'interfaccia di basso livello tra l'applicazione ed il motore 3D del dispositivo

7 Altre API simili Mobile Media API (JSR 135): è un'api di alto livello per il controllo di diversi tipi di media (principalmente audio e video); non implementa grafica 3D; JSR 184 è stato definito per fornire le funzionalità base per la grafica 3D Java Bindings for OpenGL ES (JSR 239): un wrapper J2ME per OpenGL ES; è l'equivalente di JOGL per OpenGL e Java

8 Il package javax.microedition.m3g (1) L'API Mobile3D è definita nel package javax.microedition.m3g Tale package contiene tutte le classi necessarie per la creazione di mondi 3D La libreria definisce inoltre una struttura scene graph ed un formato di file corrispondente per gestire e distribuire contenuti 3D in modo efficiente

9 Il package javax.microedition.m3g (2) Graphics3D il contesto grafico 3D Object3D una classe astratta per gli oggetti contenuti nel mondo questo include il mondo stesso, i nodi dello scene graph, le animazioni, le texture, ecc. Transformable una classe astratta per Node e Texture2D dove sono definiti i metodi comuni per la manipolazione dei nodi e per le trasformazioni delle texture

10 Il package javax.microedition.m3g (3) Node una classe astratta per tutti i nodi dello scene graph ci sono cinque differenti tipi di nodi: Camera - definisce la posizione dell'osservatore e la proiezione da 3D a 2D Mesh - rappresenta un oggetto 3D definito come una superficie poligonale immutabile Sprite3D - rappresenta una immagine 2D con una posizione 3D Light - definisce posizione, direzione, colore ed altri attributi di una sorgente luminosa Group - un contenitore di altri nodi

11 Il package javax.microedition.m3g (4) World un nodo Group radice dello scene graph MorphingMesh un nodo dello scene graph rappresentante un oggetto 3D definito come una superficie poligonale modificabile tramite un vertex-morphing SkinnedMesh un nodo dello scene graph rappresentante un oggetto 3D definito come una superficie poligonale animabile

12 Il package javax.microedition.m3g (5) Appearance un insieme di componenti che definiscono l'aspetto di una Mesh o di uno Spring3D Material un componente di Appearance che incapsula gli attributi per il calcolo del comportamento della luce sugli oggetti altri attributi per la luce sono definiti in Light, PolygonMode e VertexBuffer

13 Il package javax.microedition.m3g (6) CompositingMode un componente di Appearance che incapsula gli attributi della composizione del colore per-pixel PolygonMode un componente di Appearance che incapsula gli attributi per i poligoni (back/front face culling, calcolo delle luci, correzione prospettica, shading, ecc.) Fog un componente di Appearance che incapsula gli attributi della nebbia

14 Il package javax.microedition.m3g (7) Texture2D un componente di Appearance che incapsula una texture e gli attributi su come applicarla ad una mesh (wrapping, filtering, blending, trasformazione delle coordinate, ecc.) Background definisce come cancellare il mondo, può essere pensato come lo sfondo di una scena Loader carica e deserializza i nodi di uno scene graph

15 Il package javax.microedition.m3g (8) AnimationController controlla la posizione, velocità e peso di una animazione; per esempio può essere usato per controllare il movimento di una luce KeyframeSequence incapsula i dati dell'animazione come una sequenza di key-frame AnimationTrack associa un KeyframeSequence con un AnimationController

16 Il package javax.microedition.m3g (9) Image2D un'immagine utilizzabile come texture, sfondo o sprite ci sono due tipi di immagini: mutable (aggiornabili in qualsiasi momento) immutable (non aggiornabili) RayIntersection conserva il riferimento ad una Mesh o uno Sprite3D intersecato e le informazioni sul punto di intersezione Transform una matrice 4x4 rappresentante una trasformazione 3D

17 Il package javax.microedition.m3g (10) TriangleStripArray definisce un array di triangoli collegati a strip in una strip, i primi tre vertici definiscono il primo triangolo, ogni ogni altro vertice definisce uno nuovo triangolo usando i due precedenti VertexArray un array di vettori interi rappresentante posizione, normali, colori e coordinate delle texture di ogni vertice

18 Il package javax.microedition.m3g (11) VertexBuffer conserva i riferimenti ai VertexArray per un insieme di vertici IndexBuffer definisce come connettere i vertici per formare una geometria

19 Scoprire la presenza del package Mobile3D (1) Poiché Mobile3D è un package opzionale, tale API potrebbe essere non disponibile su qualche dispositivo quindi è necessario un sistema per ottenere tale informazione Sfortunatamente non esiste un sistema universale per fare ciò ed ogni profilo MIDP ed ogni piattaforma potrebbero avere un sistema proprietario per tale scopo

20 Scoprire la presenza del package Mobile3D (2) Un'alternativa per scoprire la presenta dell'api Mobile3D è chiedere al dispositivo la versione dell'api stessa Infatti si può chiamare il metodo System.getProperty( microedition.m3g.version ): restituisce la versione dell'api ( 1.1 o 1.0 ) se l'api è presente, null altrimenti

21 Scoprire la presenza del package Mobile3D (3) Esempio (provare sia su MpowerPlayer sia su WTK) PackageDiscovery

22 La classe Graphics3D (1) La classe Graphics3D è il cuore di tutta l'api È il contesto grafico 3D che si occupa del rendering della scena È un oggetto singleton (ne può esistere una sola istanza) Tutto il rendering è fatto tramite i metodi render(...) L'API non contiene altro sistema per il rendering di scene 3D

23 La classe Graphics3D (2) Ci sono quattro diversi metodi render(...) operanti a diversi livelli di granularità Il primo metodo renderizza un intero World ed in tal caso si dice che l'api opera in retained mode Il secondo metodo renderizza nodi dello scene graph, mentre il terzo ed il quarto metodo renderizzano semplici mesh ed in questi tre casi si dice che l'api opera in immediate mode

24 La classe Graphics3D (3) La classe Graphics3D fa riferimento ad una camera corrente ed ad un array di luci correnti Queste sono usate solo dai metodi dell'immediate mode Il retained mode usa la camera e le luci specificate nel World, ignorando totalmente camera e luci del Graphics3D

25 La classe Graphics3D (4) Prima del rendering l'applicazione deve registrare un target al Graphics3D usando il metodo void bindtarget(object target): registra un Graphics o una Image2D modificabile come target di questo Graphics3D Quando il rendering è completato l'applicazione deve rilasciare il target con il metodo void releasetarget(): rilascia il target

26 La classe Graphics3D (5) Metodi utili static Graphics3D getinstance(): restituisce l'istanza singleton di Graphics3D Object gettarget(): restituisce il target attuale void clear(background background): cancella la scena tramite un background void setcamera(camera camera, Transform transform): imposta la camera corrente Camera getcamera(transform transform): restituisce la camera corrente (continua...)

27 La classe Graphics3D (6) Metodi utili (segue) int addlight(light light, Transform transform): aggiunge una luce alla scena void setlight(int index, Light light, Transform transform): imposta una luce nell'array delle luci correnti Light getlight(int index, Transform transform): restituisce una luce nell'array delle luci correnti int getlightcount(): restituisce il numero di luci correnti void resetlights(): cancella l'array delle luci correnti

28 La classe Graphics3D (7) Esempio (No su MPowerPlayer) Graphics3DSample

29 La classe Loader (1) Nel precedente esempio è stata introdotta anche la classe Loader Il suo funzionamento è molto semplice: scarica e deserializza file in formato M3G è capace di deserializzare istanze di qualsiasi classe derivata da Object3D (World, Group, Camera, Light, Material, Appearance, Texture2D, AnimationTrack, KeyframeSequence, ecc.) qualsiasi altro oggetto non può essere deserializzato

30 La classe Loader (2) La classe Loader è anche capace di caricare immagini in formato PNG In tal caso l'oggetto restituito è un'istanza non modificabile di Image2D il cui pixel format corrisponde al color type del PNG Alcune implementazioni Mobile3D potrebbero ovviamente supportare anche altri formati oltre al PNG

31 La classe Loader (3) Metodi utili: static Object3D[] load(byte[] data, int offset): deserializza istanze di Object3D da un array di byte iniziando da un dato offset static Object3D[] load(string name): carica e deserializza istanze di Object3D da una risorsa (interna o esterna alla midlet)

32 La classe World (1) Nel precedente esempio è stata introdotta anche la classe World Anche il funzionamento di questa classe è molto semplice World è uno speciale Group (che vedremo a breve) radice dello scene graph Uno scene graph è costituito da una gerarchia di nodi Tutti i nodi sono connessi tra loro ed hanno una radice comune: un oggetto World

33 La classe World (2)

34 La classe World (3) Costruttore World() Metodi utili (oltre a quelli di Group) Camera getactivecamera(): restituisce la camera attiva void setactivecamera(camera camera): imposta la camera attiva Background getbackground(): restituisce lo sfondo si questo mondo void setbackground(background background): imposta lo sfondo di questo mondo

35 La classe Background (1) Definisce uno sfondo per il mondo: nel retained mode viene utilizzato l'oggetto Background associato al World nell'immediate mode bisogna specificare un apposito oggetto Background da utilizzare nel metodo clear(...) di Graphics3D La cancellazione dello sfondo riguarda sia il color buffer che il depth buffer (z-buffer) Il color buffer è cancellato usando il Background, il depth buffer è cancellato impostando tutto il buffer al massimo valore possibile

36 La classe Background (2) Il Background può essere definito da un colore, da una Image2D o da entrambi: se è presente solo il colore lo sfondo sarà colorato di quel colore se è presente solo l'immagine lo sfondo sarà colorato con quell'immagine se sono presenti entrambi lo sfondo sarà colorato prima con il colore e poi con l'immagine

37 La classe Background (3) Costruttore Background() Metodi utili void setcolor(int ARGB): imposta il colore di sfondo void setimage(image2d image): imposta l'immagine di sfondo void setcolorclearenable(boolean enable): imposta la cancellazione del color buffer void setdepthclearenable(boolean enable): imposta la cancellazione del depth buffer

38 La classe Background (4) Esempi (No su MPowerPlayer) BackgroundSample_a1 BackgroundSample_a2

39 La classe Camera (1) Definisce la posizione dell'osservatore nella scena e la sua proiezione dal 3D al 2D La camera è sempre orientata verso l'asse Z negativo e può essere posizionata ed orientata come qualsiasi altro nodo attraverso le trasformazioni (che vedremo a breve) Costruttore Camera() I metodi più importanti della classe Camera si trovano nella classe Transformable e servono per posizionarla nello spazio

40 La classe Camera (2) Esempio (No su MPowerPlayer) CameraSample

41 La classe Object3D Con gli esempi finora presentati abbiamo avuto modo di iniziare a conoscere alcune classi foglie dell'api e capire come funziona il retained mode Adesso bisogna andare a studiare le classi root La classe Object3D è una classe astratta base di tutti gli oggetti che possono essere parte di un mondo 3D Contiene ovviamente i metodi comuni a tutte le classi

42 La classe Object3D animazione (1) Una delle caratteristiche principali di questa classe è la possibilità di essere animata Le animazioni sono applicate all'oggetto ed a tutti i suoi discendenti nello scene graph Per fare ciò bisogna utilizzare il metodo int animate(int time): aggiorna tutte le proprietà animabili di questo oggetto e di tutti i suoi discendenti nello scene graph

43 La classe Object3D animazione (2)

44 La classe Object3D l'id (1) Ogni Object3D può avere assegnato un ID, attraverso il metodo void setuserid(int userid): imposta l'id dell'oggetto Ovviamente esiste il corrispondente int getuserid(): restituisce l'id dell'oggetto Gli ID possono essere usati ad esempio per recuperare un oggetto da una scena ottenuta da stream

45 La classe Object3D l'id (2) Per recuperare un oggetto si utilizza il metodo Object3D find(int userid): recupera un oggetto con un dato userid e raggiungibile da questo oggetto Il metodo find(...) cerca in tutti gli oggetti raggiungibili da questo oggetto Se ci sono oggetti con lo stesso ID ne verrà restituito uno qualsiasi (non c'è modo di decidere quale)

46 La classe Object3D l'id (3)

47 La classe Object3D dati utente Infine la classe Object3D ha un campo riservato per i dati dell'utente Questo campo può contenere qualsiasi Object ed il suo utilizzo dipende dall'applicazione che si sta sviluppando I metodi per impostare e recuperare tale campo sono void setuserobject(object userobject): imposta un dato dell'utente Object getuserobject(): recupera un dato dell'utente

48 La classe Object3D Altri metodi utili void addanimationtrack(animationtrack animationtrack), void removeanimationtrack(animationtrack animationtrack): aggiunge/rimuove un gestore di animazioni AnimationTrack getanimationtrack(int index): restituisce il gestore di animazioni alla posizione index int getanimationtrackcount(): restituisce il numero di gestori delle animazioni associati a questo Object3D Object3D duplicate(): duplica questo Object3D int getreferences(object3d[] references): restituisce numero ed oggetti direttamente referenziati da questo Object3D

49 La classe Transformable (1) La classe Transformable è una classe astratta per Node e Texture2D e definisce i metodi comuni per la manipolazione delle trasformazioni di nodi e texture Le trasformazioni di nodi e texture consistono di quattro componenti: traslazione (T), rotazione (R), scala (S) ed una generica matrice 4x4 (M) Un vettore omogeneo p = (x, y, z, w), rappresentante un vertice (Node) o una coordinata di texture (Texture2D), è trasformato nel vettore p' = (x', y', z', w') = T R S M p

50 La classe Transformable (2) Metodi utili void getcompositetransform(transform transform): restituisce la matrice composita C = T R S M void gettranslation(float[] xyz): restituisce la componente di traslazione void getorientation(float[] angleaxis): restituisce la componente di rotazione void getscale(float[] xyz): restituisce la componente di scala void gettransform(transform transform): restituisce la matrice generica 4x4 M (continua...)

51 La classe Transformable (3) Metodi utili (segue) void settranslation(float tx, float ty, float tz): imposta la componente di traslazione void translate(float tx, float ty, float tz): aggiunge una traslazione alla componente di traslazione void setorientation(float angle, float ax, float ay, float az): imposta la componente di rotazione void settransform(transform transform): imposta la matrice generica 4x4 M (continua...)

52 La classe Transformable (4) Metodi utili (segue) void postrotate(float angle, float ax, float ay, float az): moltiplica a destra la componente di rotazione per la rotazione data void prerotate(float angle, float ax, float ay, float az): moltiplica a sinistra la componente di rotazione per la rotazione data void setscale(float sx, float sy, float sz): imposta la componente di scala void scale(float sx, float sy, float sz): moltiplica la componente di scala per la scala data

53 La classe Transform (1) Transform (classe di appoggio di Transformable) è una generica matrice 4x4 rappresentante una qualsiasi trasformazione 3D Anche se Transform permette di definire qualsiasi matrice 4x4 conviene usare soltanto matrici invertibili (non singolari) Questo poiché l'utilizzo di una matrice non invertibile potrebbe portare al verificarsi di eccezioni a run-time

54 La classe Transform (2) Costruttori: Transform() Transform(Transform transform) Metodi utili void get(float[] matrix): restituisce il contenuto di questa trasformazione in un array di 16 elementi void set(float[] matrix), void set(transform transform): imposta questa trasformazione (continua...)

55 La classe Transform (3) Metodi utili (segue) void setidentity(): imposta questa trasformazione all'identità void invert(): inverte questa matrice, se possibile void transpose(): calcola la trasposta di questa matrice void transform(float[] vectors): moltiplica il vettore 4D dato per questa trasformazione void transform(vertexarray in, float[] out, boolean W): moltiplica i vertici di in per questa matrice e conserva il risultato nel vettore out, W vale true per impostare la componente w a 1, false per impostarla a 0 (continua...)

56 La classe Transform (4) Metodi utili (segue) void postmultiply(transform transform): moltiplica a destra questa trasformazione per la trasformazione data void postrotate(float angle, float ax, float ay, float az), void postrotatequat(float qx, float qy, float qz, float qw): moltiplica a destra questa trasformazione per la rotazione data void postscale(float sx, float sy, float sz): moltiplica a destra questa trasformazione per la scala data void posttranslate(float tx, float ty, float tz): moltiplica a destra questa trasformazione per la traslazione data

57 La classe Node La classe astratta per tutti i nodi dello scene graph Ogni nodo definisce un sistema di coordinate locali che può essere trasformato relativamente al sistema di coordinate del nodo padre Tale trasformazione consiste sempre delle quattro componenti T, R, S ed M

58 La classe Node allineamento (1) Un nodo può essere allineato rispetto ad un nodo di riferimento Questo significa che il nodo allineato è (su richiesta) automaticamente orientato in modo tale che il suo sistema di coordinate corrisponda al sistema di coordinate del nodo di riferimento Un caso classico di utilizzo è per la creazione delle billboard, ovvero oggetti che guardano sempre verso la camera (maggiori dettagli nel corso di Computer Graphics)

59 La classe Node allineamento (2) Quando un nodo è allineato la sua componente di rotazione originale R è sovrascritta con una rotazione di allineamento A Le altre componenti sono lasciate inalterate La trasformazione dal sistema di coordinate locali di un nodo allineato al sistema di coordinate del suo nodo padre è p' = T A S M p Quando necessario l'applicazione deve esplicitamente invocare l'allineamento su un nodo

60 La classe Node allineamento (3) Per allineare un nodo bisogna chiamare il metodo void align(node reference): allinea il nodo al nodo reference void setalignment(node zref, int ztarget, Node yref, int ytarget): allinea il nodo ai nodi di riferimento ztarget ed ytarget posso assumere i valori: NONE nessun allineamento ORIGIN allinea l'asse in modo tale che punti all'origine del sistema di coordinate del nodo di riferimento X_AXIS, Y_AXIS, Z_AXIS allinea l'asse con l'asse x, y, o z del sistema di coordinate del nodo di riferimento

61 La classe Node allineamento (4) Altri metodi utili per l'allineamento sono Node getalignmentreference(int axis): restituisce il nodo di riferimento per l'asse axis int getalignmenttarget(int axis): restituisce l'asse target per l'asse axis

62 La classe Node proprietà ereditate (1) Oltre alle trasformazioni ci sono altre tre proprietà i cui valori sono influenzati dai nodi padre Queste proprietà sono: il fattore alpha, il flag di rendering ed il flag di picking Il fattore alpha è un valore nel range [0, 1] che definisce la trasparenza di un oggetto L'effettiva fattore alpha di un nodo è il prodotto del suo fattore alpha e dell'effettivo fattore alpha del nodo padre (definizione ricorsiva)

63 La classe Node proprietà ereditate (2) Il flag di rendering (picking) permette a gruppi di nodi di essere invisibili al rendering (picking) ovvero non sono visualizzati ( acchiappati ) L'effettivo flag di un nodo è la AND logica del suo flag e dell'effettivo flag del nodo padre (definizione ricorsiva) Ciò vuol dire che rendere un nodo visibile o acchiappabile non avrà l'effetto desiderato se qualche nodo superiore non lo è

64 La classe Node proprietà ereditate (3) Per recuperare ed impostare le proprietà si usano i metodi float getalphafactor(): recupera il fattore alpha void setalphafactor(float alphafactor): imposta il fattore alpha boolean isrenderingenabled(): recupera il flag di rendering void setrenderingenable(boolean enable): imposta il flag di rendering boolean ispickingenabled(): recupera il flag di picking void setpickingenable(boolean enable): imposta il flag di picking

65 La classe Node scope (1) Lo scope di un Node è un bitmask integer che permette ai nodi di uno scene graph di formare gruppi logici indipendenti dalla gerarchia fisica dello scene graph In altre parole nodi appartenenti a Group diversi possono appartenere allo stesso scope e viceversa Due nodi A e B appartengono allo stesso scope se scopea & scopeb!= 0

66 La classe Node scope (2) Lo scope serve principalmente in tre casi: visibilità solo gli oggetti che appartengono allo stesso scopo della camera sono renderizzati; questo da un modo aggiuntivo al flag di rendering per controllare l'insieme di oggetti visibili illuminazione una sorgente di luce ha effetto solo sugli oggetti che appartengono al suo scope (utile per migliorare le prestazioni e per poter creare scene complesse) picking solo gli oggetti che appartengono allo stesso scopo dell'oggetto acchiappante possono essere acchiappati

67 La classe Node scope (3) Lo scope di default è -1 (in binario una stringa del tipo ) Ciò implica che di default tutti i nodi appartengono a tutti gli scope Quindi di default tutti gli oggetti sono visibili da tutte le camere ed illuminati da tutte le sorgenti di luce Metodi per impostare e recuperare lo scope int getscope(), void setscope(int scope): recupera ed imposta lo scope di un nodo

68 La classe Group (1) Un Group è un nodo dello scene graph capace di conservare una lista (non ordinata) di altri nodi figli Può essere visto come un semplice raggruppatore logico (non fisico) di nodi La relazione padre-figlio è bidirezionale: se il nodo A è figlio del nodo B allora B è l'unico e solo genitore di A

69 La classe Group (2) Costruttore: Group() Metodi utili: void addchild(node child): aggiunge un nodo al gruppo void removechild(node child): rimuove un nodo dal gruppo Node getchild(int index): restituisce il nodo di posto index int getchildcount(): restituisce il numero di figli

70 Da Scrivere Descrizione completa ed esempi per le altre classi

Di Blasi Gianpiero - D.M.I. - Università di Catania. Lezione 6. Luci

Di Blasi Gianpiero - D.M.I. - Università di Catania. Lezione 6. Luci Di Blasi Gianpiero - D.M.I. - Università di Catania Java3D Lezione 6 Luci Cosa impareremo oggi? Il modello di illuminazione di Java3D Come creare luci Come fare interagire gli oggetti visuali con le luci

Dettagli

Programmazione J2ME. Lezione 9. Il Bluetooth. Di Blasi Gianpiero - D.M.I. - Università di Catania

Programmazione J2ME. Lezione 9. Il Bluetooth. Di Blasi Gianpiero - D.M.I. - Università di Catania Di Blasi Gianpiero - D.M.I. - Università di Catania Programmazione J2ME Lezione 9 Il Bluetooth Cosa impareremo oggi? L'API JSR-82 per la comunicazione tramite tecnologia Bluetooth Utilizzo dei protocolli

Dettagli

Computer Graphics. La disciplina fornisce metodi per creare elaborare memorizzare visualizzare. immagini di oggetti o scene mediante un computer

Computer Graphics. La disciplina fornisce metodi per creare elaborare memorizzare visualizzare. immagini di oggetti o scene mediante un computer Computer Graphics La disciplina fornisce metodi per creare elaborare memorizzare visualizzare immagini di oggetti o scene mediante un computer Image Processing La disciplina fornisce metodi per acquisire

Dettagli

Introduzione a Java3D. Di Blasi Gianpiero - D.M.I. - Università di Catania

Introduzione a Java3D. Di Blasi Gianpiero - D.M.I. - Università di Catania Introduzione a Java3D Di Blasi Gianpiero - D.M.I. - Università di Catania L'evoluzione Hardware Le schede 3D producono oggi grafica interattiva paragonabile agli effetti speciali cinematografici Java è

Dettagli

OpenSceneGraph & OSG4Web

OpenSceneGraph & OSG4Web OpenSceneGraph & OSG4Web Parte 1 OpenSceneGraph Introduzione alla creazione di una Applicazione 3D e OpenGL Basi di OpenSceneGraph Demo e prove pratiche Parte 2 Navigazione e Virtual Worlds su larga scala

Dettagli

Le ombre in OpenGl. Daniele Varin LS Ing. Informatica Corso di Elementi di Grafica Digitale http://varindaniele.altervista.org

Le ombre in OpenGl. Daniele Varin LS Ing. Informatica Corso di Elementi di Grafica Digitale http://varindaniele.altervista.org Le ombre in OpenGl Daniele Varin LS Ing. Informatica Corso di Elementi di Grafica Digitale http://varindaniele.altervista.org Punto di partenza In OpenGl le luci non proiettano ombre 2 Perché si introducono

Dettagli

La Pipeline Grafica. Vediamo come avviene il rendering, ovvero la visualizzazione di oggetti. Introduzione. La Pipeline Grafica.

La Pipeline Grafica. Vediamo come avviene il rendering, ovvero la visualizzazione di oggetti. Introduzione. La Pipeline Grafica. La Pipeline Grafica Vediamo come avviene il rendering, ovvero la visualizzazione di oggetti. Introduzione La Pipeline Grafica Spazio vista Spazio 3D-screen Shading Rasterizzazione Rimozione delle facce

Dettagli

Informatica Grafica. Prof. Massimiliano Dellisanti Fabiano Vilardi. (2a parte) a.a. 2011/2012

Informatica Grafica. Prof. Massimiliano Dellisanti Fabiano Vilardi. (2a parte) a.a. 2011/2012 Informatica Grafica (2a parte) a.a. 2011/2012 Prof. Massimiliano Dellisanti Fabiano Vilardi 1 Grafica 3D Con Grafica 3D si indicano quelle tecniche informatiche finalizzate alla descrizione (e rappresentazione

Dettagli

1.1 Modello di un Processo di Rendering. Gestore delle Geometrie (Ricostruzione delle Geoemtrie e Clipping)

1.1 Modello di un Processo di Rendering. Gestore delle Geometrie (Ricostruzione delle Geoemtrie e Clipping) Capitolo 1 Esercizi sulla Pipeline di Rendering 1.1 Modello di un Processo di Rendering Componenti dell Architettura di Rendering: Processore Bus di Comunicazione Scheda Grafica Moduli della Pipeline di

Dettagli

Livello di approfondimento della lezione. Texture mapping di solito spiegato in corsi di CG di base

Livello di approfondimento della lezione. Texture mapping di solito spiegato in corsi di CG di base Texture mapping Davide Gadia, Daniele Marini Corso di Programmazione Grafica per il Tempo Reale Laurea Magistrale in Informatica per la Comunicazione a.a. 2013/2014 Livello di approfondimento della lezione

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Lezione1. Cos è la computer grafica. Lezione del 10 Marzo 2010. Michele Antolini Dipartimento di Ingegneria Meccanica Politecnico di Milano

Lezione1. Cos è la computer grafica. Lezione del 10 Marzo 2010. Michele Antolini Dipartimento di Ingegneria Meccanica Politecnico di Milano Lezione1 Informatica Grafica Cos è la computer grafica Lezione del 10 Marzo 2010 Grafica OpenGL vs Direct Dipartimento di Ingegneria Meccanica Politecnico di Milano 1.1 Tubo a Raggi Catodici Cathode Ray

Dettagli

Programmazione J2ME. Lezione 1. Le MIDlet. Di Blasi Gianpiero - D.M.I. - Università di Catania

Programmazione J2ME. Lezione 1. Le MIDlet. Di Blasi Gianpiero - D.M.I. - Università di Catania Di Blasi Gianpiero - D.M.I. - Università di Catania Programmazione J2ME Lezione 1 Le MIDlet Cosa impareremo oggi? Cosa è J2ME I profili MIDP ed i livelli di configurazione Il sistema di sicurezza di J2ME

Dettagli

Introduzione alla Computer Graphics

Introduzione alla Computer Graphics Introduzione alla Computer Graphics Informatica Grafica CdLS a ciclo unico in Ingegneria Edile-Architettura a.a. 2008/09 Computer Graphics e Image Processing Image processing Insieme di teorie ed algoritmi

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

Laboratorio di IUM. Lezione 8. L'AWT che serve. Di Blasi Gianpiero - D.M.I. - Università di Catania

Laboratorio di IUM. Lezione 8. L'AWT che serve. Di Blasi Gianpiero - D.M.I. - Università di Catania Di Blasi Gianpiero - D.M.I. - Università di Catania Laboratorio di IUM Lezione 8 L'AWT che serve Cosa impareremo oggi? L'API per la stampa La clipboard di sistema Il Drag'n'Drop L'API per la stampa (1)

Dettagli

Parte 17. GUI Parte terza. [M.Chagall The Wedding Candles, 1945] 17.1 - AA. 2013/14

Parte 17. GUI Parte terza. [M.Chagall The Wedding Candles, 1945] 17.1 - AA. 2013/14 Parte 17 GUI Parte terza - AA. 2013/14 [M.Chagall The Wedding Candles, 1945] 17.1 17.2 Immagini e figure geometriche La libreria GTK+ utilizza a sua volta le funzioni di più basso livello delle librerie

Dettagli

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002 Tricks & Tips [Access] - Michele de Nittis - Tutorial - ActiveX - Controllo Tree View Versione: 1 Data Versione: venerdì 30 agosto 2002 1 SOMMARIO PREMESSA...3 INSERIMENTO DEL CONTROLLO...3 AGGIUNTA DELLE

Dettagli

Programmazione a Oggetti Modulo B

Programmazione a Oggetti Modulo B Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione

Dettagli

Grafica 3D Interattiva

Grafica 3D Interattiva Informatica Grafica ][ Marco Gribaudo marcog@di.unito.it Grafica 3D Interattiva sono una libreria di funzioni a basso livello per facilitare la scrittura di videogiochi e di applicazioni multimediali.

Dettagli

Introduzione a Classi e Oggetti

Introduzione a Classi e Oggetti Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto

Dettagli

UML Diagrammi delle classi. UML Diagramma classi 1

UML Diagrammi delle classi. UML Diagramma classi 1 UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio

Dettagli

Connessione ad internet

Connessione ad internet Introduzione al C++ Connessione ad internet Istruzioni per la connessione internet: - una volta connessi, aprire un browser (firefox) - in Modifica/preferenze/avanzate/rete/impostazioni - attivare la modalità

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

SOMMARIO. Introduzione - OpenInventor. Introduzione - OpenInventor. OpenInventor

SOMMARIO. Introduzione - OpenInventor. Introduzione - OpenInventor. OpenInventor OpenInventor SOMMARIO (riferimento: J. Wernecke, The Inventor Mentor Ed.: Addison-Wesley) Scene database e i scene graph Nodi Coin3D (riferimento: www.coin3d.org) Esempi Introduzione - OpenInventor OpenInventor

Dettagli

Rendering I - geometric processing

Rendering I - geometric processing Rendering I - geometric processing Dove si descrivono i principali metodi di alto livello utilizzati per ottenere una immagine a partire da una descrizione degli oggetti 3D Introduzione Trasformazioni

Dettagli

Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 11 + Credits I lucidi di questa lezione sono stati preparati da: Professor Stefano Mizzaro Professor Paolo Coppola e sono stati modificati e completati dal Dr. Paolo

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Lezione 19: Grafica in tempo reale. I problemi del Real Time. I problemi del Real Time. I problemi del Real Time. I problemi del Real Time

Lezione 19: Grafica in tempo reale. I problemi del Real Time. I problemi del Real Time. I problemi del Real Time. I problemi del Real Time I problemi del Real Time Lezione 19: Grafica in tempo reale Come visto nelle precedenti lezioni, i calcoli necessari a generare immagini 3D sono numerosi e complessi. I programmi di grafica 3D impiegano

Dettagli

LPR 2005/ 2006 Lezione n.9. Elementi di grafica per lo svolgimento del progetto Double Buffering Caricamento delle immagini Gestione degli eventi

LPR 2005/ 2006 Lezione n.9. Elementi di grafica per lo svolgimento del progetto Double Buffering Caricamento delle immagini Gestione degli eventi LPR 2005/ 2006 Lezione n.9 Elementi di grafica per lo svolgimento del progetto Double Buffering Caricamento delle immagini Gestione degli eventi JAVA 2D PROGRAMMING Schermo : Matrice rettangolare composta

Dettagli

ScuolaSI computer grafica 3d

ScuolaSI computer grafica 3d ScuolaSI computer grafica 3d pagina stampata dal sito ScuolaSI http://www.scuolasi.it pubblicato il 22/04/2011 Grafica - La computer grafica 3D è un ramo della computer grafica che basa la creazione di

Dettagli

LA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI

LA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI 1 LA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI ( I.D. Falconi ~ 24.01.09) INTRODUZIONE La programmazione orientata agli oggetti (OOP) rappresenta una modalità di programmazione strutturata attraverso la quale

Dettagli

Ereditarietà e classi astratte

Ereditarietà e classi astratte Ereditarietà e classi astratte 6 Temi del capitolo 1. Il concetto di ereditarietà 2. Programmazione grafica con ereditarietà 3. Classi astratte 4. Il pattern TEMPLATE METHOD 5. Interfacce protected 6.

Dettagli

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50 Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra

Dettagli

Grafica vettoriale. applicazioni di tipo fotografico

Grafica vettoriale. applicazioni di tipo fotografico Grafica vettoriale Come abbiamo visto in un certo dettaglio, la grafica raster si basa sull'idea di definire certe proprietà (colore, trasparenza, ecc.) di ogni pixel applicazioni di tipo fotografico Al

Dettagli

Class Diagram. Catia Trubiani. Laboratorio di Ingegneria del Software a.a. 2013-2014

Class Diagram. Catia Trubiani. Laboratorio di Ingegneria del Software a.a. 2013-2014 Università degli Studi dell Aquila Laboratorio di Ingegneria del Software a.a. 2013-2014 Catia Trubiani Dipartimento di Ingegneria e Scienze dell'informazione e Matematica (DISIM)- Università degli Studi

Dettagli

Modelli per i materiali

Modelli per i materiali Texture mapping 1 Modelli per i materiali Il realismo visivo può essere ottenuto mediante i modelli di illuminazione e dei materiali Per modellare i materiali si possono utilizzare delle immagini dette

Dettagli

Marco Faella Classi enumerate

Marco Faella Classi enumerate Marco Faella Classi enumerate 22 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com A.A. 2009-2010 Il problema

Dettagli

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore Relazioni tra oggetti e classi : Generalizzazione Fondamenti di Informatica II 20. Laboratorio 6 Collegamenti e associazioni Le relazioni di tipo generalizzazione (specializzazione), servono per poter

Dettagli

AMBIENTE VIRTUALE UTENTE

AMBIENTE VIRTUALE UTENTE Moduli logici di un Ambiente Virtuale Sintesi Campionamento Comportamenti Proprietà AMBIENTE VIRTUALE Management Rendering Interazione UTENTE È il processo che porta alla descrizione di un oggetto (modello),

Dettagli

Supermarket Progetto di Programmazione Febbraio 2010

Supermarket Progetto di Programmazione Febbraio 2010 Supermarket Progetto di Programmazione Febbraio 2010 1 Supermercato Dovete realizzare un insieme di classi e interfacce che riguardano la gestione di un supermercato. nella Sezione 2 verranno descritte

Dettagli

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi

Dettagli

Trasformazioni 2D. Grande differenza rispetto alla grafica raster!

Trasformazioni 2D. Grande differenza rispetto alla grafica raster! Trasformazioni 2D Il grande vantaggio della grafica vettoriale è che le immagini vettoriali descrivono entità matematiche È immediato manipolare matematicamente tali entità In quasi tutte le manipolazioni

Dettagli

Grafica Real-Time, Hardware Grafico e Linguaggi di Shading. Alessandro Martinelli

Grafica Real-Time, Hardware Grafico e Linguaggi di Shading. Alessandro Martinelli Grafica Real-Time, Hardware Grafico e Linguaggi di Shading Alessandro Martinelli Grafica Real Time Il concetto di 'Real Time' in ambito grafico ha una valenza molto particolare: Fino agli anni '80, solo

Dettagli

Mon Ami 3000 Touch Interfaccia di vendita semplificata per monitor touchscreen

Mon Ami 3000 Touch Interfaccia di vendita semplificata per monitor touchscreen Prerequisiti Mon Ami 3000 Touch Interfaccia di vendita semplificata per monitor touchscreen L opzione Touch è disponibile per le versioni Vendite, Azienda Light e Azienda Pro; per sfruttarne al meglio

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Lezione 3: Grafica 3D*

Lezione 3: Grafica 3D* Lezione 3: Grafica 3D* Informatica Multimediale Docente: Umberto Castellani *I lucidi sono tratti da una lezione di Maura Melotti (m.melotti@cineca.it) Sommario Il processo grafico La modellazione 3D Rendering

Dettagli

Java? Sì, grazie. Scopo del corso

Java? Sì, grazie. Scopo del corso Modulo di Java? Sì, grazie Il linguaggio di Internet? Portabilità su qualunque piattaforma (non solo calcolatori): It works everywhere Supporto e disponibilità di strumenti, librerie e documentazione garantiti

Dettagli

Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM. Davide Barbieri

Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM. Davide Barbieri Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM Davide Barbieri Contatti skype: davbar86 mail: davide.barbieri@ghostshark.it Panoramica corso Introduzione al mondo delle GPU Modello GPGPU Nvidia

Dettagli

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Relazioni tra classi Ereditarietà Generalizzazione Specializzazione Aggregazione Composizione Dipendenza Associazione Sommario Relazioni

Dettagli

Premessa. GUI: organizzazione generale

Premessa. GUI: organizzazione generale Premessa Luxology Modo è un software di grafica 3D di ultima generazione. Non è un software con una vocazione specifica, ma piuttosto un sistema estremamente flessibile che comprende modellazione solida

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

AMBIENTE VIRTUALE. Moduli logici di un Ambiente Virtuale. Modellazione. Management Rendering Interazione. Sintesi. Comportamenti.

AMBIENTE VIRTUALE. Moduli logici di un Ambiente Virtuale. Modellazione. Management Rendering Interazione. Sintesi. Comportamenti. Moduli logici di un Ambiente Virtuale Sintesi Campionamento Comportamenti Proprietà AMBIENTE VIRTUALE Management Rendering Interazione UTENTE È il processo che porta alla descrizione di un oggetto (modello),

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

Sistemi Mobili e Wireless Android Introduzione alla piattaforma

Sistemi Mobili e Wireless Android Introduzione alla piattaforma Sistemi Mobili e Wireless Android Introduzione alla piattaforma Stefano Burigat Dipartimento di Matematica e Informatica Università di Udine www.dimi.uniud.it/burigat stefano.burigat@uniud.it Cos'è Android?

Dettagli

Modelli relazionali. Esistono diversi modi di modellare un database. Il modello piu' usato al momento e' il modello relazionale

Modelli relazionali. Esistono diversi modi di modellare un database. Il modello piu' usato al momento e' il modello relazionale Cenni sui DATABASE Cos'e' un database Un database puo' essere definito come una collezione strutturata di record (dati) I dati sono memorizzati su un computer in modo opportuno e possono essere recuperati

Dettagli

Class File bytecode. Class loader. Verifier JIT. Run-time System

Class File bytecode. Class loader. Verifier JIT. Run-time System Un file.class è ottenuto compilando il codice sorgente Java. Esso contiene il bytecode, ovvero la sequenza di istruzioni per la JVM, ed anche molte informazioni simboliche. Il bytecode è il linguaggio

Dettagli

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca)

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca) Ministero dell Istruzione, dell Università e della Ricerca Istituto Tecnico Industriale Statale Enrico Mattei Via Martiri di Cefalonia 46-20097 San Donato Milanese Tel. 0255691411 - Fax 025276676 itisando@tin.it

Dettagli

Processo di rendering

Processo di rendering Processo di rendering 1 Trasformazioni di vista Trasformazioni di vista Il processo di visione in tre dimensioni Le trasformazioni di proiezione I parametri della vista 3D I sistemi di coordinate 2 I parametri

Dettagli

Programmazione in Java Parte I: Fondamenti

Programmazione in Java Parte I: Fondamenti Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella Riferimenti Testi consigliati: Progettazione del software e design pattern in Java di C.S. Horstmann Apogeo Gli esempi di codice

Dettagli

Grafica e Geometria Computazionale

Grafica e Geometria Computazionale Grafica e Geometria Computazionale Andrea Torsello e Giuseppe Maggiore DAIS, CdL Informatica Via Torino, 155, Venezia Mestre Slides scaricabili da http://www.dsi.unive.it/~grafica/pls/slides.pdf Cos è

Dettagli

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione a Oggetti Lezione 10. Ereditarieta Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare

Dettagli

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori Programmazione ad oggetti in Java Daniela Micucci Outline La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori 2 Programmazione ad oggetti in Java 1 OOP Java

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Informazioni generali Docente: Samuel Rota Bulò @email: srotabul@dais.unive.it Homepage: http://www.dais.unive.it/~srotabul/ ooprogramming2012.html

Dettagli

Iprogrammi scritti in Java sono formati da Classi che

Iprogrammi scritti in Java sono formati da Classi che Capitolo 3. Pesci e Animali Domestici Le Classi di Java Translated by Francesco Orciuoli Iprogrammi scritti in Java sono formati da Classi che rappresentano gli oggetti del mondo reale. Sebbene le persone

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture

Dettagli

Grafica al calcolatore - Computer Graphics

Grafica al calcolatore - Computer Graphics Grafica al calcolatore - Computer Graphics 7 Pipeline di rasterizzazione 23/11/13 Grafica 2013 1 Rasterization pipeline Sappiamo implementare ray casting (o ray tracing). Abbiamo tuttavia già visto che

Dettagli

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 3 Programmazione Java Alfonso Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Programmazione Java 1 Contenuti

Dettagli

PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY

PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY Giampiero Allamprese 0000260193 PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY Reti di Calcolatori LS prof. Antonio Corradi A.A. 2007/2008 ABSTRACT L obiettivo di questo progetto è la realizzazione

Dettagli

Modulo 1. Rappresentazione e trasformazione dello spazio 3d.

Modulo 1. Rappresentazione e trasformazione dello spazio 3d. Modulo 1. Rappresentazione e trasformazione dello spazio 3d. Un primissimo passo nel percorso che porta dalla astrazione di una scena tridimensionale ad una sua realizzazione grafica è come rappresentare

Dettagli

SQL - Tipi di dato Il linguaggio SQL

SQL - Tipi di dato Il linguaggio SQL SQL - Tipi di dato Il linguaggio SQL I tipi di dato in SQL:1999 si suddividono in tipi predefiniti tipi strutturati tipi user-defined ci concentreremo sui tipi predefiniti i tipi predefiniti sono suddivisi

Dettagli

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici Il linguaggio SQL Il linguaggio SQL il linguaggio SQL è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose (California) è diventato

Dettagli

Ricostruzione e visualizzazione 3D di un cervello da acquisizioni manuali di sezioni istologiche

Ricostruzione e visualizzazione 3D di un cervello da acquisizioni manuali di sezioni istologiche Ricostruzione e visualizzazione 3D di un cervello da acquisizioni manuali di sezioni istologiche Sergio Demelio e Enrico Gobbetti CRS4 Centro di Ricerca, Sviluppo e Studi Superiori in Sardegna VI Strada

Dettagli

Synchronized (ancora)

Synchronized (ancora) Synchronized (ancora) Riscriviamo l esempio di prima. Usiamo una struttura modulare, con una classe Notificatore che ha opportuni metodi. La classe ha due campi privati, la lista buftext e un suo thread.

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

LA RAPPRESENTAZIONE DELLE INFORMAZIONI

LA RAPPRESENTAZIONE DELLE INFORMAZIONI ISTITUTO TECNICO E LICEO SCIENTIFICO TECNOLOGICO ANGIOY LA RAPPRESENTAZIONE DELLE INFORMAZIONI Prof. G. Ciaschetti DATI E INFORMAZIONI Sappiamo che il computer è una macchina stupida, capace di eseguire

Dettagli

VIRTUAL REALITY TOOLBOX

VIRTUAL REALITY TOOLBOX VIRTUAL REALITY TOOLBOX Il Virtual Reality Toolbox permette di visualizzare e di interagire con le simulazioni di sistemi dinamici in un ambiente di realtà virtuale a 3 dimensioni. Il toolbox collega MATLAB

Dettagli

Componenti multimediali per il Web. Modulo 14

Componenti multimediali per il Web. Modulo 14 Componenti multimediali per il Web Modulo 14 Obiettivi Valutare e usare strumenti di utilità e produzione grafica anche animata per inserire e modificare componenti multimediali (immagini, immagini animate,

Dettagli

Android. Memorizzazione di dati

Android. Memorizzazione di dati Android Memorizzazione di dati Introduzione In questa lezione vedremo quali sono i metodi principali messi a disposizione da una applicazione Android per memorizzare dei dati in maniera permanente e successivamente

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it Programmazione II Lezione 4 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 30/09/2011 1/46 Programmazione II Lezione 4 30/09/2011 Sommario 1 Esercitazione 2 Panoramica della Programmazione Ad Oggetti 3

Dettagli

JDBC di base. Le classi/interfacce principali di JDBC

JDBC di base. Le classi/interfacce principali di JDBC JDBC di base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte completa indipendenza del codice dal tipo di database o di

Dettagli

4. Proiezioni del piano e dello spazio

4. Proiezioni del piano e dello spazio 4. Proiezioni del piano e dello spazio La visualizzazione di oggetti tridimensionali richiede di ottenere una vista piana dell'oggetto. Questo avviene mediante una sequenza di operazioni. Innanzitutto,

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java

Dettagli

Le texture. Mappatura avanzata. Informatica Grafica per le arti. Mappatura avanzata. Mappatura avanzata. Mappatura avanzata. Mappatura avanzata

Le texture. Mappatura avanzata. Informatica Grafica per le arti. Mappatura avanzata. Mappatura avanzata. Mappatura avanzata. Mappatura avanzata Informatica Grafica per le arti Le texture Oltre alla proiezione piana, esistono altri tipi di proiezione, che possono risultare utili in alcune circostanze. Queste sfruttano altri sistemi di coordinate

Dettagli

WebGL. Lezione 18: 15 Maggio 2014

WebGL. Lezione 18: 15 Maggio 2014 WebGL Lezione 18: 15 Maggio 2014 Cronologia: Grafica 3D nell Hardware In principio (giurassico informatico) postazioni specializzate La Silicon Graphics si afferma come produttrice di workstation grafiche

Dettagli

BLENDER. LEZIONI DI LABORATORIO Lezione 1

BLENDER. LEZIONI DI LABORATORIO Lezione 1 BLENDER LEZIONI DI LABORATORIO Lezione 1 Sito ufficiale: www.blender.org BLENDER Sito ufficiale italiano: www.blender.it Wiki: http://wiki.blender.org/ Quick start: http://wiki.blender.org/index.php/file:quickstart_guide.png

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

OpenGL: Principi base di rendering di Federico NinjaCross Coletto

OpenGL: Principi base di rendering di Federico NinjaCross Coletto OpenGL: Principi base di rendering di Federico NinjaCross Coletto Dopo una panoramica iniziale sulle potenzialità che OpenGL offre, la nostra esplorazione prosegue con un primo approccio alle strutture

Dettagli

Java3D. Lezione 0. Introduzione. Di Blasi Gianpiero - D.M.I. - Università di Catania

Java3D. Lezione 0. Introduzione. Di Blasi Gianpiero - D.M.I. - Università di Catania Java3D Lezione 0 Introduzione Di Blasi Gianpiero - D.M.I. - Università di Catania L'evoluzione Hardware Le schede 3D producono oggi grafica interattiva paragonabile agli effetti speciali cinematografici

Dettagli

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC JDBC: Introduzione Java Database Connectivity (JDBC): parte 1 Gianluca Moro DEIS - Università di Bologna gmoro@deis.unibo.it Java Database Connectivity è il package Java per l accesso a database relazionali

Dettagli

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Tipi Tipo Astratto di Permette di specicare dati in modo astratto Astratto Indipendentemente

Dettagli

Corso di Amministrazione di Reti A.A. 2002/2003

Corso di Amministrazione di Reti A.A. 2002/2003 Struttura di Active Directory Corso di Amministrazione di Reti A.A. 2002/2003 Materiale preparato utilizzando dove possibile materiale AIPA http://www.aipa.it/attivita[2/formazione[6/corsi[2/materiali/reti%20di%20calcolatori/welcome.htm

Dettagli

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA Salerno Formazione, società operante nel settore della didattica, della formazione professionale e certificata

Dettagli

Esercitazioni in Maple

Esercitazioni in Maple Esercitazioni in Maple 6 giugno 2007 Capitolo 1 Prima esercitazione 1.1 Anelli di polinomi Per cominciare bisogna dichiarare un anello di polinomi. Possiamo lavorare con un qualsiasi anello di tipo dove

Dettagli