Posto qui il testo del MidTerm sia per discuterne insieme per chi sta facendo il midterm (ma anche per chi vuole aiutare) sia per consultazioni future.
DISCLAIMER
L’elaborato deve essere prodotto personalmente e inviato per email indicando nome, cognome, matricola e piattaforma usata per lo sviluppo della soluzione. È consentito discutere con altri le linee generali dei problemi, purché alla fine ciascuno studente formuli la propria soluzione. Ci si aspetta come minimo che ciascuno studente comprenda e sia in grado di spiegare la soluzione che consegna. È consentito utilizzare strumenti di programmazione (compilatore e debugger) e di analizzare librerie (es. sorgenti di Mono) o documentazione in rete per approfondire le tecniche e le loro implementazioni. Non è considerato accettabile: • Sviluppare codice o pseudo-codice insieme con altre persone • Utilizzare codice scritto da altri • Consentire ad altri di utilizzare il proprio codice come soluzione ad un esercizio • Mostrare o esaminare il lavoro di altri studenti. La violazione di queste regole provocherà l’annullamento della prova e una segnalazione al Presidente del Consiglio di Corsi di Studio. Si prega ai partecipanti di attenersi alle regole dell'esame.
Va bene quindi discutere di IDEE di soluzione ma è vietato sia postare codice che pseudocodice che risolva interamente o una parte di un esercizio.

MIDTERM 06/02/2015
Esercizio 1 Una easing function (o interpolatore) è una funzione che calcola i valori intermedi di un parametro tra due valori estremi (come ad esempio http://easings.net/). Molti framework di animazione introducono un concetto di timeline in cui si specificano tuple come ad esempio (x, 0, 100, 500, 1000) che si interpretano che la proprietà x deve variare dal valore 0 al valore 100 dopo 500ms dell’avvio della storyboard in 1000ms. Si dia un esempio, in pseudocodice, di easing functions che cambino le proprietà x e y della posizione di un oggetto per descrivere un moto circolare ed uno parabolico.
Esercizio 2
Scrivere una pagina HTML che consenta di selezionare un DIV, lo “rivesta” con un frame che ne consente lo spostamento nella pagina come se fosse una finestra. Con un opportuno link dovrà essere possibile invertire il processo.
Esercizio 3
Si vuole realizzare un controllo grafico che consenta di assemblare un insieme di ingranaggi dentati. Gli ingranaggi dovranno essere realizzati utilizzando un solo GraphicsPath. Si realizzino opportune aree cliccabili per aggiungere ingranaggi ridimensionabili. Gli ingranaggi non dovranno sovrapporsi e potranno avere dimensioni differenti. Quando accostati i denti si allineeranno alle ruote vicine. Un ingranaggio potrà sempre essere selezionato per essere spostato o eliminato. Altre aree cliccabili dovranno consentire zoom, pan e rotate della vista.
Esercizio 4

Si estenda il controllo dell’esercizio 3 con una funzione per indicare un verso di rotazione che sarà evidenziato ciascun ingranaggio (destro, sinistro o libero). Gli ingranaggi che hanno un verso di rotazione non libero sono vincolati a girare nella direzione indicata. Si aggiunga una funzione che animi un sistema di ingranaggi assemblato nel rispetto dei vincoli. L’animazione dovrà tener conto che il sistema accelera fino ad una velocità e poi, quando fermata il sistema dovrà rallentare fino a fermarsi come in presenza di attriti.