Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoFelisa D alessio Modificato 10 anni fa
1
Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione 7 Dip. di Informatica e Telecomunicazioni Università di Trento
2
Fabio Massacci Programmazione ad Oggetti 2 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 nellorigine –Oggetti nella stessa locazione si sovrappongono parzialmente
3
Fabio Massacci Programmazione ad Oggetti 3 Oggetti Geometrici - Trasformazioni Rappres. base VRML –Tutti gli oggetti sono costruiti nel sistema di assi cartesiani –Default: oggetti centrati nellorigine, alto verso lasse Y, asse X a destra, faccia verso lasse Z (uscente dallo schermo) Trasformazioni di Oggetti –Traslazioni in qualsiasi punto XYZ –Rotazioni contemporanee su tre assi –Scalature anche Anamorfiche (differenti proporzioni su differenti assi
4
Fabio Massacci Programmazione ad Oggetti 4 Trasformazioni di Coordinate Nodo di tipo Trasform crea nuovo sistema di coordinate XYZ –Traslato –Ruotato –Scalato rispetto al sistema di coord. originario Oggetti nel sistema XYZ Trasformato –sono traslati, ruotati e scalati solidarmente al nuovo sistema Intuizione –costruisco oggetti nellorigine, li rimpicciolisco od ingrandisco, poi li ruoto, e li sposto nel posto appropriato
5
Fabio Massacci Programmazione ad Oggetti 5 Trasformazioni di Coordinate (cont) Sintassi VRMLper la Trasformazione Transform { translation... rotation... scale... children [... ] } translation, rotation, scale: ovvia operazione children: tutti gli oggetti a cui applicare la trasformazione. Qualche operazione può essere omessa
6
Fabio Massacci Programmazione ad Oggetti 6 Trasformazioni di Coordinate (cont) Tra le children sono ammesse ricorsivamente altre trasform La combinazione ricorsiva di due operazioni non è uguale alla esecuzione contemporanea Transform { translation... children [ Shape {... } Transform {... } ] }
7
Fabio Massacci Programmazione ad Oggetti 7 Trasformazioni - Traslazioni Traslazioni lungo gli assi Transform { #lungo asseXYZ translation2.00.0-1.5 children [... ] } Trasla tutti gli oggetti in children –verso destra lungo lasse X di 2m –stessa altezza sullasse Y –indietro di 1.5m lungo lasse Z
8
Fabio Massacci Programmazione ad Oggetti 8 Trasformazioni - Traslazioni (codice) Traslazioni lungo lasse X di un cilindro Transform { translation2.00.00.0 children[ Shape { geometry Cylinder { height 2.0 radius 1.0 } ] }
9
Fabio Massacci Programmazione ad Oggetti 9 Trasformazioni - Traslazioni (cont) Sistema di assi Iniziale Assi traslati di 2.0 lungo asse X Oggetto costruito su nuovi assi
10
Fabio Massacci Programmazione ad Oggetti 10 Trasformazioni - Rotazioni Rotazioni intorno agli assi Transform { #lungo asseXYZRadianti translation0.00.01.00.52 children [... ] } Ruota tutti gli oggetti in children –intorno allasse Z di 0.52 radianti (30 gradi) Angoli misurati in radianti –radians = degrees / 180.0 * 3.141
11
Fabio Massacci Programmazione ad Oggetti 11 Trasformazioni - Rotazioni (cont) Asse di rotazione definisce un polo intorno a cui ruotare gli oggetti –Analogo allasse Nord/Sud della terra Esempi di rotazione tipici di r radianti –asse X1.00.00.0r –asse Y0.01.00.0r –asse Z0.00.01.0r Possibili ruotazioni miste (vari numeri non a 0) –Sconsigliata per novizi: gli essere umani hanno pessime intuizioni su cosa succede facendo ruotazioni contemporanee su assi diversi
12
Fabio Massacci Programmazione ad Oggetti 12 Trasformazioni - Rotazioni (codice) Rotazioni intorno asse Z di un cilindro Transform { translation0.00.01.00.52 children[ Shape { geometry Cylinder { height 2.0 radius 1.0 } ] }
13
Fabio Massacci Programmazione ad Oggetti 13 Trasformazioni - Rotazioni (cont) Sistema di assi Iniziale Assi ruotati di 30g intorno a Z Oggetto costruito su nuovi assi
14
Fabio Massacci Programmazione ad Oggetti 14 Trasformazioni - Rotazioni (cont) Rot. positive in senso antiorario, counterclockwise Regola della mano destra –aprire la mano –distendere il pollice e puntarlo nella direzione positiva dellasse –curvare le dita intorno allasse (come per stringerlo in mano) –la curvatura corrisponde ad una rotazione positiva
15
Fabio Massacci Programmazione ad Oggetti 15 Trasformazioni - Scalature Scalature lungo agli assi Transform { #lungo asseXYZ scale1.00.52.0 children [... ] } Scala tutti gli oggetti in children –lascia inalterate le dimensioni lungo lasse X –dimezza laltezza (dim lungo lasse Y) –raddoppia la profondità (dim lungo lasse Z) Scalatura Anamorfa (Isomorfa tutti num uguali)
16
Fabio Massacci Programmazione ad Oggetti 16 Trasformazioni - Scalature (codice) Scalatura Isomorfa di 0.5m in ogni direzione Transform { scale0.50.50.5 children[ Shape { geometry Cylinder { height 2.0 radius 1.0 } ] }
17
Fabio Massacci Programmazione ad Oggetti 17 Trasformazioni - Scalature (cont) Sistema di assi Iniziale Assi scalati di metà (0.5) in ogni dimensione Oggetto costruito su nuovi assi
18
Fabio Massacci Programmazione ad Oggetti 18 Trasformazioni - Operazioni Multiple Scalatura, rotazione e traslazione di un sistema di coordinate Transform { translation2.00.00.0 rotation0.00.01.00.52 scale0.50.50.5 children [... ] } I figli sono scalati, ruotati e poi traslati Lordine è fissato, indipendentemente dallordine con cui appaiono
19
Fabio Massacci Programmazione ad Oggetti 19 Trasformazioni - Multiple Operaz. (cont) Sistema di assi Iniziale Oggetto scalato della metà ruotato di 30g spostato di 2m lungo lasse X
20
Fabio Massacci Programmazione ad Oggetti 20 Trasformazioni - Multiple (cont) Attenzione combinazione di trasformazioni –aspetti subdoli: rotation+ traslation, scale+traslation Scale+Traslation insieme Palazzo10mVerde {...} Transform { translation20.00.00.0 scale0.50.50.5 children [ Palazzo10mRosso {...} ] } Risultato è un palazzo di 10m verde con affianco, a 20m di distanza un palazzo di 5m rosso
21
Fabio Massacci Programmazione ad Oggetti 21 Trasformazioni - Multiple (cont) Palazzo10mVerde {...} Transform { scale0.50.50.5 children [ Transform { translation20.00.00.0 children [ Palazzo10mRosso {...} ] } ] } Risultato è un palazzo di 10m verde con affianco, a 10m di distanza (notare scalatura) un palazzo di 5m rosso
22
Fabio Massacci Programmazione ad Oggetti 22 Trasformazioni - Multiple (cont) Traslazioni e rotazioni abbastanza imprevedibili Facile: rotazione e poi traslazione Palazzo10mVerde {...} Transform { traslation20.00.00.0 rotation0.01.00.01.57 children [ Palazzo10mRosso {...} ] } Risultato è un palazzo di 10m verde con affianco, a 20m di distanza un palazzo di 10m rosso ruotato di 90gradi su se stesso a destra
23
Fabio Massacci Programmazione ad Oggetti 23 Trasformazioni - Multiple (cont) Palazzo10mVerde {...} Transform { rotation0.00.10.01.57 children [ Transform { translation20.00.00.0 children [ Palazzo10mRosso {...} ] } ] } Risultato è un palazzo di 10m verde con... dove è finito il palazzo rosso?
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.