Sunday, 11 September 2011

collision

Acest exercițiu simulează coliziuni între bile pe un plan bidimensional.

Am încercat să păstrez viteza de afișare cât mai mare și e posibil ca în unele browsere să sacadeze imaginea în anumite momente. Problema cu acest algoritm este că el nu poate fi mai exact decât îi permite viteza de afișare pentru că el calculează poziția bilelor o dată la fiecare afișare. De aici rezultă că dacă vitezele sunt prea mari, coliziunile vor fi detectate prea târziu iar calculele vor avea erori.

Deoarece erorile -- cât de mici -- există oricum, am folosit niște mecanisme de siguranță ca să previn coliziuni repetate între aceleași bile și să nu mă trezesc cu bile "lipite".

La fiecare click apare o nouă bilă în punctul în care e mouse-ul, cu o viteză și o direcție aleatoare.

P.S. Mulțumiri domnului Emanuele Feronato pentru ecuațiile care determină rezultatul coliziunii între două bile.
 http://www.emanueleferonato.com/2007/08/19/managing-ball-vs-ball-collision-with-flash/


Sunday, 4 September 2011

fractalLandscape

Prima mea încercare de a scrie un cod în Processing. Ideea schiței(programul numește proiectele schițe) e foarte simplă, am scris codul pentru a genera o imagine foarte interesantă peste care am dat în cartea scrisă de Michael Batty și Paul Longley, Fractal Cities. Cei doi demonstrau posibilitatea folosirii fractalilor pentru a simula relieful natural, iar acesta este unul din exemplele date de ei.

Fractalul este generat folosind, ceea ce ei numesc, midpoint displacement. Algoritmul se bazează pe subdiviziuni succesive ale unei forme predefinite inițiale, în cazul meu un pătrat. Însă la fiecare împărțire a liniilor, punctul de diviziune variază cu un anumit procent al dimensiunii liniei în orice direcție. Forma aleatoare rezultată e mai degrabă asemănătoare cu o bucată de hârtie mototolită. (La ultimele două rezoluții imaginea arată destul de realist.)

Comportamentul appletului:
  • mouse stânga - dreapta: mărește numărul subdiviziunilor
  • mouse sus - jos: mărește variația punctului de diviziune