@@ -16,14 +16,14 @@ function mainLoop(particlesLeft, particlesRight, translation) {
1616 backgroundLoop ( ) ;
1717 c = ctx ;
1818
19- particlesLeft . forEach ( function ( particle , i ) {
19+ particlesLeft . map ( function ( particle , i ) {
2020 leftTemps . push ( particle . vel . r ) ;
21+ particle . x += particle . vel . x / particle . mass ;
22+ particle . y += particle . vel . y / particle . mass ;
2123 c . fillStyle = particleColor ;
2224 reflectParticle ( particle , 0 , i , particlesLeft , particlesRight ) ;
2325 particleCollisions ( i , particlesLeft ) ;
2426 particle . fill ( c , particle . radius ) ;
25- particle . x += particle . vel . x / particle . mass ;
26- particle . y += particle . vel . y / particle . mass ;
2727
2828 c . strokeStyle = 'black' ;
2929 c . lineWidth = 0.2 ;
@@ -32,14 +32,14 @@ function mainLoop(particlesLeft, particlesRight, translation) {
3232 roundedTempLeft = Math . round ( average ( leftTemps ) * particleMass * roundingAccuaracy ) / roundingAccuaracy ;
3333 $ ( '#tempLeft' ) . html ( roundedTempLeft ) ;
3434
35- particlesRight . forEach ( function ( particle , i ) {
35+ particlesRight . map ( function ( particle , i ) {
3636 rightTemps . push ( particle . vel . r ) ;
37+ particle . x += particle . vel . x / particle . mass ;
38+ particle . y += particle . vel . y / particle . mass ;
3739 c . fillStyle = particleColor ;
3840 reflectParticle ( particle , translation , i , particlesLeft , particlesRight ) ;
3941 particleCollisions ( i , particlesRight ) ;
4042 particle . fill ( c , particle . radius ) ;
41- particle . x += particle . vel . x / particle . mass ;
42- particle . y += particle . vel . y / particle . mass ;
4343
4444 c . strokeStyle = 'black' ;
4545 c . lineWidth = 0.2 ;
@@ -78,13 +78,14 @@ function average(array) {
7878
7979function particleCollisions ( checkIndex , particles ) {
8080 particle = particles [ checkIndex ] ;
81- particles . forEach ( function ( particleToCheck , i ) {
82- if ( i != checkIndex && i != 0 ) {
81+ particles . map ( function ( particleToCheck , i ) {
82+ if ( i != checkIndex && i != 0 && i < checkIndex ) {
8383 var distance = particleToCheck . distance ( particle ) ;
84- if ( distance . r < particleToCheck . radius + particle . radius ) {
84+ if ( distance . r <= particleToCheck . radius + particle . radius ) {
8585 let wallAngle = distance . deg + 90 ;
8686 particle . vel . deg = 2 * wallAngle - particle . vel . deg ;
8787 let newSpeed = ( particleToCheck . vel . r + particle . vel . r ) / 2
88+ particleToCheck . vel . deg = 2 * wallAngle + particleToCheck . vel . deg ;
8889 particleToCheck . vel . r = newSpeed ;
8990 particle . vel . r = newSpeed ;
9091 }
0 commit comments