|
|
matematika tam je velmi jednoducha - pouziva sa stavova fyzika, tj, mam inicialnu poziciu daneho bodu, a smer ktorym ide, nasledne sa na zaklade tohto smeru a rychlosti sirenia iba prepocita nova poloha - s utlmom v materiale neratam - a ak to pride k boundaries tak sa iba flipne smer (zakon dopadu a odrazu).
http://chladni.delezu.net/js/liquid.js
var h = A[o];//vyberiem aktualny prvok
var i = h.x;//ulozim si jeho aktualnu polohu
var j = h.y;
var a = h.a;//ulozim si jeho smerovy vektor
var b = h.b;
i += a * v;//vypocitam novu polohu, v=rychlost sirenia
j += b * v;
i > f ? ( i = f, a *= -1) : 0 > i && ( i = 0, a *= -1);//boundaries, v pripade odrazu otocim smerovy vektor
j > p ? ( j = p, b *= -1) : 0 > j && ( j = 0, b *= -1);
e.beginPath();//nakreslim bod
e.arc(i, j, 2, 0, 2 * Math.PI, false);
e.fillStyle = h.color;
e.closePath();
e.fill();
h.x = i;//ulozim si aktualne hodnoty pre dalsi cyklus renderovania
h.y = j;
h.a = a;
h.b = b;
A[o] = h;
|
|