fabio massacci programmazione ad oggetti 1 fondamenti di informatica per ingegneria prof. ing. fabio...
TRANSCRIPT
![Page 1: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/1.jpg)
Fabio Massacci Programmazione ad Oggetti 1
Fondamenti di Informaticaper Ingegneria
Prof. Ing. Fabio Massacci (A-L)
Ing. Enrico Blanzieri (M-Z)
Lezione 7
Dip. di Informatica e Telecomunicazioni Università di Trento
![Page 2: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/2.jpg)
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 nell’origine
– Oggetti nella stessa locazione si sovrappongono parzialmente
![Page 3: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/3.jpg)
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 nell’origine, alto verso l’asse Y, asse X a destra, faccia verso l’asse 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
![Page 4: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/4.jpg)
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 nell’origine, li rimpicciolisco od
ingrandisco, poi li ruoto, e li sposto nel posto appropriato
![Page 5: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/5.jpg)
Fabio Massacci Programmazione ad Oggetti 5
Trasformazioni di Coordinate (cont)• Sintassi VRMLper la TrasformazioneTransform {
translation . . .
rotation . . .
scale . . .
children [ . . . ]
}
• translation, rotation, scale: ovvia operazione
• children: tutti gli oggetti a cui applicare la trasformazione.
• Qualche operazione può essere omessa
![Page 6: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/6.jpg)
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 { . . . }Shape { . . . }Transform
{ . . . }]
}
![Page 7: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/7.jpg)
Fabio Massacci Programmazione ad Oggetti 7
Trasformazioni - Traslazioni• Traslazioni lungo gli assiTransform {
#lungo asse X Y Z
translation 2.0 0.0 -1.5
children [ . . . ]
}
• Trasla tutti gli oggetti in children– verso destra lungo l’asse X di 2m– stessa altezza sull’asse Y– indietro di 1.5m lungo l’asse Z
![Page 8: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/8.jpg)
Fabio Massacci Programmazione ad Oggetti 8
Trasformazioni - Traslazioni (codice)• Traslazioni lungo l’asse X di un cilindroTransform {
translation 2.0 0.0 0.0
children [
Shape {
geometry Cylinder {
height 2.0
radius 1.0
}
}
]
}
![Page 9: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/9.jpg)
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
![Page 10: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/10.jpg)
Fabio Massacci Programmazione ad Oggetti 10
Trasformazioni - Rotazioni• Rotazioni intorno agli assiTransform {
#lungo asse X Y Z Radianti
translation 0.0 0.0 1.0 0.52
children [ . . . ]
}
• Ruota tutti gli oggetti in children– intorno all’asse Z di 0.52 radianti (30 gradi)
• Angoli misurati in radianti– radians = degrees / 180.0 * 3.141
![Page 11: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/11.jpg)
Fabio Massacci Programmazione ad Oggetti 11
Trasformazioni - Rotazioni (cont)• Asse di rotazione definisce un polo intorno a cui
ruotare gli oggetti– Analogo all’asse Nord/Sud della terra
• Esempi di rotazione tipici di r radianti– asse X 1.0 0.0 0.0 r
– asse Y 0.0 1.0 0.0 r
– asse Z 0.0 0.0 1.0 r
• 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
![Page 12: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/12.jpg)
Fabio Massacci Programmazione ad Oggetti 12
Trasformazioni - Rotazioni (codice)• Rotazioni intorno asse Z di un cilindroTransform {
translation 0.0 0.0 1.0 0.52
children [
Shape {
geometry Cylinder {
height 2.0
radius 1.0
}
}
]
}
![Page 13: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/13.jpg)
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
![Page 14: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/14.jpg)
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 dell’asse
– curvare le dita intorno all’asse (come per stringerlo in mano)
– la curvatura corrisponde ad una rotazione positiva
![Page 15: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/15.jpg)
Fabio Massacci Programmazione ad Oggetti 15
Trasformazioni - Scalature• Scalature lungo agli assiTransform {
#lungo asse X Y Z
scale 1.0 0.5 2.0
children [ . . . ]
}
• Scala tutti gli oggetti in children– lascia inalterate le dimensioni lungo l’asse X– dimezza l’altezza (dim lungo l’asse Y)– raddoppia la profondità (dim lungo l’asse Z)
• Scalatura Anamorfa (Isomorfa tutti num uguali)
![Page 16: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/16.jpg)
Fabio Massacci Programmazione ad Oggetti 16
Trasformazioni - Scalature (codice)• Scalatura Isomorfa di 0.5m in ogni direzioneTransform {
scale 0.5 0.5 0.5
children [
Shape {
geometry Cylinder {
height 2.0
radius 1.0
}
}
]
}
![Page 17: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/17.jpg)
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
![Page 18: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/18.jpg)
Fabio Massacci Programmazione ad Oggetti 18
Trasformazioni - Operazioni Multiple• Scalatura, rotazione e traslazione di un sistema di
coordinate Transform {
translation 2.0 0.0 0.0
rotation 0.0 0.0 1.0 0.52
scale 0.5 0.5 0.5
children [ . . . ]
}
• I figli sono scalati, ruotati e poi traslati• L’ordine è fissato, indipendentemente dall’ordine con
cui appaiono
![Page 19: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/19.jpg)
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 l’asse X
![Page 20: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/20.jpg)
Fabio Massacci Programmazione ad Oggetti 20
Trasformazioni - Multiple (cont)• Attenzione combinazione di trasformazioni
– aspetti subdoli: rotation+ traslation, scale+traslation• Scale+Traslation insiemePalazzo10mVerde {...}
Transform {
translation 20.0 0.0 0.0
scale 0.5 0.5 0.5
children [ Palazzo10mRosso {...} ]
}
• Risultato è un palazzo di 10m verde con affianco, a 20m di distanza un palazzo di 5m rosso
![Page 21: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/21.jpg)
Fabio Massacci Programmazione ad Oggetti 21
Trasformazioni - Multiple (cont)Palazzo10mVerde {...}
Transform {
scale 0.5 0.5 0.5
children [
Transform {
translation 20.0 0.0 0.0
children [ Palazzo10mRosso {...} ]
}
]
}
• Risultato è un palazzo di 10m verde con affianco, a 10m di distanza (notare scalatura) un palazzo di 5m rosso
![Page 22: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/22.jpg)
Fabio Massacci Programmazione ad Oggetti 22
Trasformazioni - Multiple (cont)• Traslazioni e rotazioni abbastanza imprevedibili• Facile: rotazione e poi traslazionePalazzo10mVerde {...}
Transform {
traslation 20.0 0.0 0.0
rotation 0.0 1.0 0.0 1.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
![Page 23: Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione](https://reader035.vdocuments.site/reader035/viewer/2022070312/5542eb58497959361e8c2cb7/html5/thumbnails/23.jpg)
Fabio Massacci Programmazione ad Oggetti 23
Trasformazioni - Multiple (cont)Palazzo10mVerde {...}
Transform {
rotation 0.0 0.1 0.0 1.57
children [
Transform {
translation 20.0 0.0 0.0
children [ Palazzo10mRosso {...} ]
}
]
}
• Risultato è un palazzo di 10m verde con ... dove è finito il palazzo rosso?