Computer Graphics. Stack di matrici di modellazione: reminder! (vedi lez 13) comporre una scena con la Model Transform. Note implementative

Documenti analoghi
Game Dev Insubria 2014/ /10/2015. Funzione matematica prende punti 3D / vettori 3D restituisce punti 3D / vettori 3D

Nell ultimo esercizio della lezione 5 le sequenze A, B

Laboratorio di Python

Figura 1: 1) Si scriva la formulazione del problema come problema di PLI (con un numero minimo di vincoli) e la matrice dei vincoli.

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Laboratorio di Python

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Algoritmi e Strutture Dati

Tipi di dato e Strutture dati elementari

Dr. Stefano Sarti Dipartimento di Fisica

Coordinate 3D. Coordinate cartesiane. Coordinate 3D. Coordinate cartesiane. Coordinate cartesiane. Sinistrorsa. Destrorsa

International Olympiad in Informatics 2013

Algoritmi e Strutture Dati

ADT Coda con priorità

Laboratorio di Python

Questa soluzione va contemplata quando le lunghezze stimate dalle liste usate sono significativamente maggiori delle dimensioni di un elemento.

Anno 4 Matrice inversa

Ordine delle trasformazioni

Laboratorio di Algoritmi e Strutture Dati. Code con Priorità

7. Integrazione delle funzioni di più variabili (II)

Algoritmi e Strutture Dati Laboratorio 15/12/2008. Daniele Loiacono

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

Esercizi di Algoritmi e Strutture Dati

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Laboratorio di Programmazione Lezione 3. Cristian Del Fabbro

Programmazione I - Laboratorio

ELETTROMAGNETISMO APPLICATO ALL'INGEGNERIA ELETTRICA ED ENERGETICA_3d (ultima modifica 01/10/2012)

Lezione 5 Le pile. Informatica. 29 Aprile 2015

1, v 3 = 1. A che spazio. 7. Sapresti trovare esplicitamente una loro combinazione lineare che fa 0? Sapresti trovarle tutte?

Pile: implementazione. Pile: implementazione. Pile: implementazione con array. Pile: implementazione con array. Pile: implementazione con array

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Note per la Lezione 6 Ugo Vaccaro

Lezione 6 Le pile. Informatica. 28 Aprile 2016

Assembly (3): le procedure

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

La simulazione con DERIVE Marcello Pedone LE SIMULAZIONI DEL LANCIO DI DADI CON DERIVE

Prodotto Cross. Prodotto Vettoriale ("cross-product", "external product"): Proprietà. Prodotto cross

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione

Note per la Lezione 4 Ugo Vaccaro

Corso: Fondamenti di Informatica (Canale 5) a.a Corsi di laurea: Ing. Settore Informazione

Sincronizzazione Le sezioni scritiche

1 (6) 2 (7) 3 (7) 4 (7) 5 (6)

REGISTRO DELLE LEZIONI

December 16, solidi_generalità e prisma_sito scuola.notebook. da studiare solo sul file. La geometria solida. nov

Corso di Reti di Calcolatori L-A

0 < x 3. x 2 mod 5 x 0 mod 3. x 27 mod 7. 1 [7 punti] Risolvere il seguente sistema di congruenze:

Mini-Corso di Informatica

Trave con saette D8. Guida dell'utente. Friedrich + Lochner GmbH F+L im Internet

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Esercizi 2. Soluzioni. 1. Siano dati i vettori 1 1, 1 R 3.

Registro Lezioni di Algebra lineare del 15 e 16 novembre 2016.

UNIVERSITA DEGLI STUDI LA SAPIENZA DI ROMA POLO DI RIETI FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA DELL AMBIENTE E DEL TERRITORIO

UML I diagrammi implementativi

! Un arco multiplo corrisponde ad un associazione molti-a-molti: il padre (libro) non determina funzionalmente il figlio (autore)

FACOLTA DI INGEGNERIA INGEGNERIA INFORMATICA A.A. 2008/2009. Corso VISIONE E PERCEZIONE. Docente. Prof. FIORA PIRRI. Tutor MATIA PIZZOLI

Numeri di Fibonacci, Autovalori ed Autovettori.

Computer Graphics. 3D Rendering. Digital representation of 3D objects. Scena 3D rendering image. Geometry of a 3D object. 3D Model

Polimorfismo parametrico vs polimorfismo per inclusione

Astrazione Dati. Nicola Fanizzi. Linguaggi di Programmazione [010194] 10 mag, Dipartimento di Informatica Università degli Studi di Bari

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori

Il moto armonico. Comincio a studiare il moto di quando il corpo passa per il punto in figura 2 :

Informatica B

Coordinate, livelli e modellazione

+1 i j i = j i = j 1 1 i j 2 Il problema di PL associato alla scelta della migliore strategia per te è quindi il seguente: min z

Esercitazione 2 GUIDA

Algoritmi e strutture dati

Esercizi Strutture dati di tipo astratto

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati

Esempi in Java di program.ne O-O

Ingegneria Meccanica; Algebra lineare e Geometria 2008/2009

1 Cambiamenti di riferimento nel piano

ADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)

Heap e code di priorità

Cinematica e Controllo di un robot mobile

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

Prima prova intercorso 29 Novembre 2005

ALGEBRA LINEARE PARTE II

PILE E CODE. Pile (stack):

Sistemi Informativi Avanzati Anno Accademico 2013/2014 Prof. Domenico Beneventano. Archi multipli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Tracce. 1. Data una lista di elementi di tipo intero, implementare in C++ le seguenti funzioni

Linee di programmazione

Interazione con il DOS e il BIOS

La matematica del CAD. Vettori e Matrici

FemCode: libreria Matlab per FEM

ESERCIZI JAVA. Esercizi sulle Interfacce. Esercizio 1:

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Superfici Parametriche

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Corso di Geometria BIAR, BSIR Esercizi 2: soluzioni

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Progettazione di Algoritmi

Superfici e solidi di rotazione. Cilindri indefiniti

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Corso di Programmazione Problem Solving. Tipi di Problemi. Problemi Complessi Soluzione. Dott. Pasquale Lops. Primitivi. Complessi

Esercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list

0.1. MATRICI SIMILI 1

Il linguaggio C. Puntatori e dintorni

Transcript:

Computer Graphics Università dell Insubria Corso di Laurea in Informatica Anno Accademico 2014/15 Marco Tarini comporre una scena con la Model Transform Stack di matrici di modellaione: reminder! (vedi le 13) gerarchia di matrici di modellaione: albero in testa: spaio mondo nei nodi: spai oggetti sugli archi: trasformaioni locali per scendere nella gerarchia: preliminare: «push» (per ricorarsi dello stato del padre) poi, le comporre le trasformaioni locali cioè quelle per andare da: spaio figlio a: spaio del padre regola intuitiva: l ultima transf che aggiungo è la prima che viene eseguita per ritornare al padre: «pop» Stack di matrici di modellaione Una oggetto che contiene lo stack di matrici di modellaione un singleton, per semplicità Funioni: /* the MODEL stack of matrices */ var model = { } init: function() { }, // uno stack con 1 solo elemento: l identità top: function() { }, // restituisce la matrice in cima allo stack push: function() { }, // duplica l elemento in cima allo stack pop: function() { }, // rimuove l elemento in cima allo stack /* funioni che comulano una nuova trasformaione all elemento top: */ scale: function( s, s, s ) { }, translate: function( t, t, t ) { }, rotatex: function( degrees ) { }, Note implementative implementare lo stack con un arra JavaScript di matrici Three.js campo ( privato )data top: ultimo elemento dell arra (quello in posiione lenght ) push e pop: allungare / accorciare dinamicamente l arra (in coda!) coi metodi push e pop degli arra java funioni che cumuluano la trasformaione: creano la matrice della nuova trasf, moltiplicano l elemento top con essa, a destra 1

Un possibile baco: il problema Un possibile baco: il fi /* the MODEL stack of matrices */ var model = { data : [], // l arra top : function() { return this.data[ this.lenght - 1 ]; }, /* the MODEL stack of matrices */ var model = { data : [], // l arra top : function() { return this.data[ this.lenght - 1 ]; }, } // duplica l elemento in cima allo stack push: function() { this.data.push( this.top() ); }, } // duplica l elemento in cima allo stack push: function() { var tmp = new THREE.Matri4(); tmp.cop( this.top() ) ; this.data.push( tmp ); }, push push una Matri4 una Matri4 una Matri4 una Matri4 una Matri4 (con gli stessi valori) Una gerarchia: Una gerarchia: pareti T A spaio mondo (stana) T B T C T D T E 1 2 3 3 T 0 base (cilindro chiuso) Colonna i T 1 T 2 T3 T 4 fusto A (cono) fusto B (cono) piedistallo (cilindro chiuso) bunn (in cima) 2

Trasformaioni: comporre una Trasformaioni: piedistallo T 3 =? = H = H-2 = H = H-2-8 0 +8 Spaio Colonna = 2 = 0-4 0 +4 Spaio Colonna Spaio Cilindro Chiuso Trasformaione del fusto A Trasformaione del fusto B T 1 =? T 2 =? = H-2 = H-2-3 0 +3 = 2 Spaio Cono -3 0 +3 = H/2 = 2 Spaio Cono Spaio Colonna Spaio Colonna 3

Scomporre T 2 in una sequena di aioni Trasformaioni: da piedistallo a cilindro 1. Inverti verticalmente (sulla Y) model.scale(,, ); problema! det. negativo () inverte gli orientamenti delle facce model.scale(,, ); model.ratatez( 180 ); 2. Riscala da: altea 2 (da a ) ad: altea H-4 da: larghea 2 a: larghea 6 (da -3 a +3) model.scale( 3, (H-4)/2, 3); 3. Transla di H/2 in su model.translate( 0, H/2, 0); ok oppure: ok (è la stessa matrice!) (verificare) ordine concettuale / temporale delle trasfr. ordine in cui compaiono nel codice circa 0 2.5 Spaio Colonna T 4 =? = H circa +0.18 circa +0.03 circa +0.05 Spaio Bunn (spaio oggetto dell oggetto Bunn) (vedere la mesh) Soluione (sbrigativa) per ottenere cilindri chiusi Idea (sbrigativa) per le basi: usare coni appiattiti cilindro chiuso T a T b T c base inferiore sup laterale base superiore T c =? Spaio Cilindro Chuiso Spaio Cono (mesh procedurale) 4

T c (da cono a base sup): sequena di aioni Traccia di altre scelte implementative 1. Appiattisci verticalmente (sulla Y, a 0) model.scale( 1, 0, 1); problema! det 0 matrice non invertibile (ci serve invertirla per la dir. luce) model.scale( 1, 0.001, 1 ); ok (indistinguibile, ma invertibile) 2. Transla di 1 in su (sulla Y) model.translate( 0, 1, 0); ordine concettuale / temporale delle trasfr. ordine in cui compaiono nel codice Usare 4 LoD diversi del coniglio, uno su ciascuna (di altea crescente) 4 mesh separate, prese dal sito di Stanford, come la prima 4 file JSON (ottenute con meshlab) 4 elementi di un vettore JavaScript di GPU mesh Geometria stana: presa in rete una mesh di un angolo interno replicata due volte per comporre una stana di 4 pareti Traccia di altre scelte implementative Matrice di vista un metodo di trackball ora la restituisce allungata la distana a seconda del (seno dell ) angolo phi per ottenere una traiettoria ellittica invece che circolare della camera limiti ad-hoc all angolo theta per evitare di far sparire la camera sotto il pavimento / sopra il soffitto Traccia di altre scelte implementative Base color (lambertiano) del modello di illuminaione uno uniform negli shader non più un const colore (per mesh) attuale: delle var Javascript settata con funione setcolor( r, g, b ) passata come uniform agli shader (nella senduniform) 5

Per i dettagli, vedere l implementaione sul sito (come al solito): le 24op 6