Mit számol a program? Mert szemmel láthatóan teljesen más, mint az előző.
Előszőr is készít egy táblázatot arról, hogy melyik pixel van a prizmán belül. Ezt tárolja a prizman_belul[] tömb.
így a szimuláció sokkal gyorsabb, nem kell mindig újra és újra ugyanazt kiszámolni feleslegesen.
A D betű már elárulja a fizikát értőknek, hogy itt rugó-szimuláció látható. Ez a rugóállandó jele.
A lehető legegyszerűbben van felépítve a program, hogy minél gyorsabban fusson. Ez egy bevált szokás.
Például nincs tömeg a programban. Vagyis m=1.
Minden pixelhez tartozik még egy amplitudo[] és sebesseg[] ,avagy minden pixel egy rugó. Ezek a rugók egyetlen felületet alkotnak. Minden rugó érzi a 4 szomszédját. Az amplitudójának a nullpontja ezek átlaga.
alap=amplitudo[index1]+amplitudo[index2]+amplitudo[index3]+amplitudo[index4];
alap*=(1.0/4.0);
Ez teljesen olyan, mintha a négy szomszéd egy síkot jelölne ki, és az adott rugó ehhez a síhoz képest nyúlna meg.
Ez a sor a hullámforrás mozgását adja meg. Néhány pixel állandóan rezeg.
amplitudo[index]=sin(time*0.4);
A D a prizmákon belül érvényes, azon kívül 1.5D.
*D*dt*1.5;