Fondamenti di Informatica per Ingegneria Prof Ing Fabio
Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione 5 Dip. di Informatica e Telecomunicazioni Università di Trento 1
Linguaggi Rappresentazione Grafici • Rappresenta forme/ambienti interattivi 3 D – Descrive oggetti geometrici – Descrive relazioni (temporali/animazione) tra essi • VRML = Virtual Reality Modeling Language • Semantica dei file con estensione. wrl – Editor di testo = mostra linguaggio – VRML Browser = interpreta linguaggio = costruisce oggetti grafici • VRML helper-application • VRML plug-in di browser HTML (IE, Netscape, Opera) Fabio Massacci Programmazione ad Oggetti 2
Scrivere Linguaggi Grafici • Costruzione di file VRML – editor di testi • flessibile, controllo dettagliato ma lungo e difficile – applicazione ad-hoc (world builder) con interfaccia grafica • facile ma può produrre VRML non efficiente – modellatore 3 D (interfaccia grafica) e trasformazione • facile ma non reversibile e VRML non sempre efficiente – programmi utente che generano forme opportune • Auto. CAD esempio di modellatore 3 D statico Fabio Massacci Programmazione ad Oggetti 3
Generatori/Visualizzatori VRML • Editing di file VRML – Editor di testo: Notepad/Wordpad – Editor specializzato VRMLpad (Parallel Graphics) - Aula A 1 – Internet Space Builder (Parellel Graphics) - Aula A 1 incorpora anche file Auto. CAD • Visualizzazione di file VRML – Plug-in di IE e Netscape (Cosmo Player - Cortona) - Internet – Internet Space Builder (Parellel Graphics) - Aula A 1 • Altri visualizzatori/editor VRML – http: //www. vrml. org Fabio Massacci Programmazione ad Oggetti 4
Rappresentare Oggetti in VRML • File VRML descrive un mondo – Sistema di assi cartesiani X/Y/Z – Tutti gli oggetti sono costruiti nel sistema di assi cartesiani – Default: oggetti centrati nell’origine Fabio Massacci Programmazione ad Oggetti 5
Componenti VRML • File header – informazioni per l’interprete (versione/codifica/etc) • Commenti • Nodi (Node) – Oggetti fisici (Cubi, Sfere, Superfici) o matematici (orologio, funzione che descrive il movimento) etc. • Campi (Fields) per ogni nodo – Attributi di ciascun oggetto/nodo (dimensione, colore, parti) • Valori (Values) per ciascun campo – Valori di un attributi: numeri, coppie e triple (coordinate XYZ), vettori, altri oggetti fisici o matematici Fabio Massacci Programmazione ad Oggetti 6
Esempio di file VRML #VRML V 2. 0 utf 8 # Commento: un bel cilindro # di altezza 2 m e raggio 1. 5 m Shape { appearance. . . geometry Cylinder { height 2. 0 radius 1. 5 } } Fabio Massacci Programmazione ad Oggetti 7
Componenti VRML - header • Header #VRML V 2. 0 utf 8 • #VRML: il file contiene testo VRML • V 2. 0: il testo è conforme alla sintassi della versione 2. 0 • utf 8: il testo usa i caratteri UTF 8 • UTF è un formato di caratteri internazionale – utf 8 = UCS (Universal Character Set) Transformation Format, 8 -bit – Codifica oltre 24, 000 caratteri di molte lingue Fabio Massacci Programmazione ad Oggetti 8
Componenti VRML - Nodi • Nodo - descrive oggetti, forme, luci, suoni – ha un tipo (Shape, Cylinder, etc. ) – delimitato da coppia di parentesi graffe – zero o più campi al suo interno (proprietà del nodo) Shape { appearance. . . geometry Cylinder { height 2. 0 radius 1. 5 } } Fabio Massacci Programmazione ad Oggetti 9
Componenti VRML - Nodi (cont) • I tipi dei nodi sono case sensitive – ogni parola inzia con una maiuscola – il resto della parola è in caratteri minuscoli – tutto in inglese • Esempi Shape Appearance Cylinder Material Elevation. Grid Font. Style Image. Texture Indexed. Face. Set Fabio Massacci - Forma Apparenza Cilindro Materiale Curve. Di. Livello Stile. Carattere Tessitura. Immagine Insieme. Di. Facce. Indicizzate Programmazione ad Oggetti 10
Componenti VRML - Campi • Il Campo/Field è una proprietà del nodo – ha un nome (height, radius, etc. ) – ha un tipo (float, integer, nodo etc. ) – un valore di default • Il valore di default viene utilizzato dall’interprete se non si mette il campo esplicitamente Cylinder { height 2. 0 radius 1. 5 } Fabio Massacci Programmazione ad Oggetti 11
Componenti VRML - Campi (cont) • I nomi dei campi sono case sensitive – – la prima parola inzia con una minuscola ogni altra parola inizia con una maiuscola il resto della parola è in caratteri minuscoli tutto in inglese • Esempi height material radius coord. Index diffuse. Color font. Style texture. Transform Fabio Massacci - altezza materiale raggio indice. Coordinate colore. Rifratto stile. Carattere trasformazione. Tessitura Programmazione ad Oggetti 12
Componenti VRML - Campi (cont) • Ogni nodo ha i suoi campi differenti – Cilindro (altezza), Sfera (raggio), Apparenza (colore. Rifratto) • Tutti i campi sono opzionali – un valore di default viene usato se il campo è omesso • I campi possono essere in qualsiasi ordine • L’ordine non cambia il risultato – Ovvio per ling. rappresentazione: descrive il mondo come è – Errato per ling. programmazione: descrive cosa fare per cambiare il mondo Cylinder { height 2. 0 radius 1. 5 height 2. 0 } Fabio Massacci Programmazione} ad Oggetti 13
VRML - Oggetti Geometrici • Shape (Forma) nodo base in VRML • Forma geometrica è componente elementare – Box (Parallelepipedo) – Cone (Cono) – Cylinder (Cilindro) – Sphere (Sfera) – Text (Testo) – Testo non è propriamente geometrico ma più semplice considerarlo oggetto elementare Fabio Massacci Programmazione ad Oggetti 14
VRML - Oggetti Geometrici (cont) • Un nodo Shape serve a costruire una forma� • Campi comuni a tutte le forme – appearance - apparenza • Include colore e tessitura • per ora omesso: default è bianco sporco uniforme – geometry - geometria • include la forma vera e propria o la struttura Shape { appearance. . . geometry. . . } Fabio Massacci Programmazione ad Oggetti 15
VRML - Oggetti Geometrici (Sphere) • Sfera – Forma (Shape) in cui l’attributo geometria (geometry) ha il valore Sphere {. . . } • Proprietà: radius (raggio) – numero reale Shape { geometry Sphere { radius 1. 0 } } Fabio Massacci Programmazione ad Oggetti 16
VRML - Oggetti Geometrici (Box) • Parallelepipedo (Box) – Forma (Shape) in cui l’attributo geometria (geometry) ha il valore Box {. . . } • Proprietà: size – tripla di reali (larghezza, altezza, profondità in metri) Shape { geometry Box { size 2. 0 } } Fabio Massacci Programmazione ad Oggetti 17
VRML - Oggetti Geometrici (Cone) • Cono a punta in alto (Cone) – Forma (Shape) in cui l’attributo geometria (geometry) ha il valore Cone {. . . } • Proprietà: height (altezza), bottom. Radius (raggio. Base) – numeri reali Shape { geometry Cone { height 2. 0 bottom. Radius 1. 0 } } Fabio Massacci Programmazione ad Oggetti 18
VRML - Oggetti Geometrici (Cone) cont • Proprietà di base del cono: – height, bottom. Radius numeri reali • Proprietà visuali: bottom (fondo), side (lato) – valori booleani: TRUE/FALSE – significato: c’è il fondo/c’è la parete laterale del cono • bottom TRUE = cono con il fondo visibile • bottom FALSE = cono cavo – valore di default è TRUE – Domanda: se non c’è il lato, che cono è? Un cono invisibile, come un cono d’ombra, ad esempio. . . Fabio Massacci Programmazione ad Oggetti 19
VRML - Oggetti Geometrici (Cylinder) • Cilindro verticale – Forma (Shape) in cui l’attributo geometria (geometry) ha il valore Cylinder {. . . } • Proprietà: height (altezza), radius (raggio) – numeri reali Shape { geometry Cylinder { height 2. 0 radius 1. 0 } } Fabio Massacci Programmazione ad Oggetti 20
VRML - Oggetti Geom. (Cylinder) cont • Proprietà di base del cilindro: – height, radius numeri reali • Proprietà visuali: bottom (tappo inferiore), side (lato), top (tappo superiore), – valori booleani: TRUE/FALSE – significato: c’è il fondo/c’è la parete laterale del cilindro/c’è il tappo superiore del cilindro • bottom TRUE = cilindro chiuso in fondo • top FALSE = cilindro aperto in cima – valore di default è TRUE Fabio Massacci Programmazione ad Oggetti 21
Cilindro in VRML #VRML V 2. 0 utf 8 # A cylinder geometry Cylinder { height 2. 0 radius 1. 5 } } Fabio Massacci Programmazione ad Oggetti 22
VRML - Oggetti Geometrici (Text) • Testo – Forma (Shape) in cui l’attributo geometria (geometry) ha il valore Text {. . . } • Proprietà: string (stringa da scrivere), font. Style� – lista di stringhe di caratteri (parentesi quadre per delimitare, virgola per andata a capo) Shape { geometry Text { string [ "Text", "Shape" ] } } Fabio Massacci Programmazione ad Oggetti 23
VRML - Oggetti Geom. (Text) cont • Proprietà di base del Testo: – string lista di stringhe di caratteri • Proprietà di formattazione: font. Style – – – Valore è a sua volta un nodo di tipo Font. Style con proprietà size - altezza (in metri) del carattere spacing - spazio (in metri) tra le righe/colonne horizontal - allineamento orizzontale (TRUE), verticale (FALSE) left. To. Right, top. To. Bottom - direzione scrittura (TRUE/FALSE) justify - allineamento con origine degli assi e stringhe (FIRST, BEGIN, MIDDLE, END) – family - famiglia di font (SERIF, SANS, TYPEWRITER) – style - stile (BOLD, ITALIC, BOLDITALIC, PLAIN) Fabio Massacci Programmazione ad Oggetti 24
Molteplicità di Oggetti Geometrici • Un file VRML può contenere molteplici oggetti • Default: ogni oggetto è centrato nell’origine • Gli oggetti si sovrappongono quando costruiti nello stesso posto Fabio Massacci Programmazione ad Oggetti 25
Molteplicità di Oggetti (cont) • La nave spaziale è data dalla costruzione di • Un cubo – Box { size 1. 0 } • Una sfera – Sphere { radius 0. 7 } • Quattro cilindri – – Cylinder { radius 1. 25 Cylinder { radius 0. 4 Cylinder { radius 0. 3 Cylinder { radius 0. 1 Fabio Massacci height 0. 05 } height 2. 0 } height 3. 0 } height 6. 0 } Programmazione ad Oggetti 26
Molteplicità di Oggetti (cont) #VRML V 2. 0 utf 8 Shape { geometry Box { size 1. 0 } } Shape { geometry Sphere { radius 0. 7 } }. . . Fabio Massacci Programmazione ad Oggetti 27
- Slides: 27