Bouncing Balls

download Bouncing Balls

of 18

  • date post

    18-Jan-2016
  • Category

    Documents

  • view

    60
  • download

    0

Embed Size (px)

description

Bouncing Balls. Obiettivo: creazione di un sistema particellare con simulazione di alcuni parametri fisici (gravità, attrito, urti tra particelle...). Impostazione lavoro. Adotteremo un approccio incrementale, aggiungendo feature ad ogni nuova versione Caratteristiche iniziali oggetti: - PowerPoint PPT Presentation

Transcript of Bouncing Balls

  • Bouncing BallsObiettivo: creazione di un sistema particellare con simulazione di alcuni parametri fisici (gravit, attrito, urti tra particelle...)

  • Impostazione lavoroAdotteremo un approccio incrementale, aggiungendo feature ad ogni nuova versioneCaratteristiche iniziali oggetti:DimensionePosizioneVelocitCaratteristiche iniziali ambiente:Gravit

  • Struttura sketchClasse Ball descrive le palline e i loro movimenti nello spazioMain definisce le propriet dell'ambiente tiene traccia delle palline in esso contenute tramite una lista dinamicaAlcune variabili di supporto:t: durata in s di un frame (1/frameRate)ppm: pixel per metro

  • Simulazione fisica - motoPresenza di gravit moto accelerato

    In realt conviene risolvere l'accelerazione come cambio di velocit istantanea, considerando uniforme il moto tra un frame e il successivo

  • La classe PVectorInserita nelle ultime versioni di Processing all'interno della libreria standard, permette di gestire in maniera facile e veloce i calcoli vettoriali (sia 2D che 3D)Moto pallina in 2 righe di codice! :)Void move(PVector field, float t) { vel.add(PVector.mult(field,t)); pos.add(PVector.mult(vel,ppm*t));}

  • Versione 0: ultimi ritocchiAggiunta di semplice interazione:Mouse click sx crea pallina

    Definizione di un limite superiore al numero di palline presenti (maxBalls)

    CODICE

  • Gestione collisioniDue possibili approcci:A priori Calcolo preciso dell'urto con equazioni differenziali PRIMA che esso avvengaA posteriori Gestione urto DOPO che esso avvenutoCi concentreremo sul secondo poich di pi facile trattazione

  • Urto con le paretiSe la distanza tra il centro della pallina e la parete inferiore al raggio, la componente della velocit perpendicolare alla parete viene invertita di segno e moltiplicata per un coeff. tra 0 e 1, che regola l'elasticit dell'urto

  • Fix upFase fondamentale nella collision response a posteriori, corregge la compenetrazione tra oggetti (che gi avvenuta)Parte delicatissima, nonch fonte di instabilit e comportamenti indesideratiIn genere si tratta di un processo per tentativi ed errori, alla ricerca di un risultato sufficientemente verosimile

  • Rotolamento contro le paretiOgni volta che la pallina si trova in contatto con una parete, la componente della velocit parallela alla parete viene decrementata del suo valore moltiplicato per un coefficiente d'attrito tra 0 e 1

  • Versione 1: ultimi ritocchiAggiunta rotazione del campo gravitazionale

    Aggiunta di un semplice puntatore triangolare per indicare la direzione del campo gravitazionale

    CODICE

  • Urto tra particelleE' la parte pi complessa, sia a livello concettuale che computazionalePer ogni pallina si calcola la distanza con ogni altra pallina, e se essa minore della somma dei raggi c' una collisioneLa complessa interazione tra gli oggetti approssimata calcolando singolarmente gli urti per ogni coppia di palline

  • Urto elastico (masse uguali)E' la parte pi complessa, sia a livello concettuale che computazionalePer ogni pallina si calcola la distanza con ogni altra pallina, e se essa minore della somma dei raggi c' una collisioneLa complessa interazione tra gli oggetti approssimata calcolando singolarmente gli urti per ogni coppia di palline

  • Urto elastico (masse uguali)1. E' comodo cambiare sistema di riferimento e considerare fermo uno dei due oggetti, sottraendo la sua velocit a entrambe le entit in gioco

  • Urto elastico (masse uguali)2. La velocit dell'oggetto in moto viene scomposta rispetto all'angolo di incidenza dell'urto

  • Urto elastico (masse uguali)3. La componente normale la velocit finale dell'oggetto inizialmente fermo, mentre l'altra componente la velocit finale dell'oggetto in collisione

  • Urto elastico (masse uguali)4. Occorre infine tornare al vechio sistema di riferimento, aggiungendo a entrambi gli oggetti la velocit iniziale di quello che avevamo fermato

    CODICE

  • E se le masse non sono uguali?Se l'urto elastico ma le masse non sono uguali, allora il momento che si conserva, mentre consideriamo fermo il centro di massaPer ulteriori approfondimenti:http://en.wikipedia.org/wiki/Center_of_momentum_frame

    CODICE FINALE