Open Inventor (parte progetto) 1)Aggiungere alla classe base (delfino.h, Ufo.h, Veicolo.h, …) le inclusioni di open inventor: #include N.B.: Se si utilizzano.

Slides:



Advertisements
Presentazioni simili
File Linguaggio C.
Advertisements

INFORMATICA Altre Istruzioni di I/O
BCX (user guide: cineca
Uso avanzato di C.
Oggetti Java.
Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl.
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
MultiSet, Liste Ordinate
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
Si consideri il seguente programma: class Up extends Object { public static int x; public int y; public static void metodo(Up o) {Up w=o.metodo1(x); o.y=w.y+6;}
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti.
Introduzione al linguaggio C
INFORMATICA I file.
Caratteri e stringhe di caratteri
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
FILE DATI 16 lunedi 26 luglio giovedi ore 9 Come sappiamo, un file dati è un gruppo di informazioni tra loro correlate, memorizzate in un dispositivo di.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Costruzione di Interfacce Lezione 6 Esercitazione Trasformazioni
Introduzione al linguaggio C++ 5 lezioni
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Più movimento alle classi
Funzioni di Libreria per le stringhe DICHIARAZIONI CONTENUTE NEL FILE: char *strcpy( char *dest, const char *sorg ); Copia sorg in dest, incluso il carattere.
Animazioni con le immagini
Lezione 7 Dinamica dei sistemi di punti materiali
I Thread.
1 laboratorio di calcolo II AA 2003/04 quinta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Programmazione con Interfacce
Open Inventor Open Inventor e un object oriented 3D toolkit cioè una libreria di oggetti e metodi per la creazione di applicazioni grafiche interattive.
Open Inventor In questa lezione impareremo a:
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Esercizi di riepilogo sul linguaggio C: file, puntatori, liste
File di testo, file binari
Algebra Lineare Esercizi assegnati.
I File.
Lezione IX Laboratorio di Programmazione. Le Classi Una classe C++ è definita come segue: class Nomeclasse { private: // metodi e attrib. visibili solo.
OGGETTI COMPOSTI Una classe può contenere riferimenti a altre classi (o anche a se stessa): public class Orologio { Counter ore, minuti; } Loggetto Orologio.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
void binario(int n); …………………
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
Open Inventor Open Inventor è un object oriented 3D toolkit, cioè una libreria di oggetti e metodi per la creazione di applicazioni grafiche interattive.
Esercizi su File.
Gestione dei file di testo, matrici e struct
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni – BCOR Ingegneria Elettronica – BELR Introduzione al C Esercitazione 5 D. Bloisi, A.
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
CORSO DI PROGRAMMAZIONE II Lezione 22
GLI ARRAY MONODIMENSIONALI. Utilizzando le nostre attuali conoscenze, proviamo a risolvere il seguente problema: Calcolare la media dei voti conseguiti.
s STRINGHE DI CARATTERI a p e \0
Una "vera" classe.. ..un esempio pratico: la calcolatrice
Programmazione in linguaggio C
Le funzioni Rassegna degli argomenti trattati LS Tron 14/15 Prof. Carla Fanchin.
1 Un esempio con iteratore: le liste ordinate di interi.
Definizione di classi Capitolo 18 febbraio 2004 Definizione di classi.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Dato un vettore di reali di dimensione DIM, si inseriscano N elementi presi da tastiera, si utilizzi 0 per terminare l’inserimento. Ordinare gli elementi.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 11 Ereditarietà in C++
Timer Animazioni.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Fabio Scotti – Università degli Studi – Laboratorio di programmazione per la sicurezza 1 Lezione 13 e 14 GESTIONE DEI FILE A) Nozioni sulla gestione dei.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 13 e 14 -
Apertura esplicita di un file
Metodologie di Programmazione Esercizi sulla semantica di Java.
ESERCITAZIONE Problema Scrivere una funzione che scambi due interi non opera su oggetti  funzione statica scritta dentro a una classe contenitore.
MOTO circolare uniforme
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl Archiviare.
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
Gaetano Anastasi Beatrice Miotti Lorenzo Guerriero Monica Pellegrinelli Massimiliano Sartor Giorgio Macauda SQLite Esempi di utilizzo della libreria in.
Transcript della presentazione:

Open Inventor (parte progetto) 1)Aggiungere alla classe base (delfino.h, Ufo.h, Veicolo.h, …) le inclusioni di open inventor: #include N.B.: Se si utilizzano altre classi occorre includere i file.h corrispondenti che possono essere trovati sul Reference Manual di Open Inventor

Open Inventor (parte progetto) 2) Aggiungere nella parte privata di delfino.h: SoTransform *moto; SoPerspectiveCamera *myCamera; 3) In delfino.h aggiungere al costruttore i parametri SoTransform e SoPerspectiveCamera : Delfino (…….SoTransform *m, SoPerspectiveCamera *myC);

Open Inventor (parte progetto) 4) Aggiungere al costruttore a più argomenti di delfino.cpp Delfino (…….SoTransform *m, SoPerspectiveCamera *myC) { … moto = m; myCamera=myC; … }

Open Inventor (parte progetto) 5) Modificare le funzioni muoviti(), giraSinistra(), ecc.. Ad. Esempio in muoviti potreste aggiungere alla fine: //modificare il movimento SbRotation rot = moto->rotation.getValue(); SbVec3f spost(moto->posizione.getX(), moto->posizione.getY(), moto->posizione.getZ()); SbVec3f spostRel; rot.multVec(spost, spostRel); moto->translation.setValue(moto->translation.getValue() + spost ); myCamera->position.setValue(myCamera->position.getValue() + spost ); N.B.: il vettore spost è fornito rispetto alla posizione iniziale della moto, spostRel tiene invece conto delleffettiva direzione della moto.

Open Inventor (parte progetto) 6) Creare un file (ad. Esempio testInventor.cpp) con un main che gestisca la creazione degli oggetti di base in Open Inventor (vedi file testInventor.cpp). 7) A tale file aggiungere i metodi readFile, timerCallBack, myKeyPressCB, analoghi a quelli dei lucidi seguenti ed opportunamente modificati secondo il proprio progetto.

Caricare i modelli 3D da file SoSeparator *readFile(const char *filename) { SoInput mySceneInput; if (!mySceneInput.openFile(filename)) { fprintf(stderr, "Cannot open file %s\n", filename); return NULL; } SoSeparator *myGraph = SoDB::readAll(&mySceneInput); if (myGraph == NULL) { fprintf(stderr, "Problem reading file\n"); return NULL; } mySceneInput.closeFile(); return myGraph; }

void timerCallback (void *data, SoSensor *) { Veicolo *mioVeicolo = (Veicolo*) data; // conversione esplicita mioVeicolo->muovi(0.04); } …. Veicolo mioVeicolo; … SoTimerSensor *myTimerSensor = new SoTimerSensor(timerCallback, &mioVeicolo); timerSensor->setInterval(0.04f); // 1/25 sec = 0.04 timerSensor->schedule(); Il Timer Sensor

Catturare gli eventi da tastiera void myKeyPressCB(void *data, SoEventCallback *eventCB) { Veicolo *veicolo = (Veicolo*) data; const SoEvent *event = eventCB->getEvent(); if (SO_KEY_PRESS_EVENT(event, UP_ARROW )) { veicolo->accelera(); } eventCB->setHandled(); } … SoEventCallback *myEventCB = new SoEventCallback; myEventCB->addEventCallback( SoKeyboardEvent::getClassTypeId(), myKeyPressCB, veicolo); root->addChild(myEventCB); …

testInventor.cpp