| 25 | const textCoordinates=ctx.getImageData(0,0,canvas.width,canvas.height); |
| 26 | |
| 27 | class Particle{ |
| 28 | |
| 29 | constructor(x,y){ |
| 30 | this.x=x; |
| 31 | this.y=y; |
| 32 | this.size=3; |
| 33 | this.baseX=this.x; //holds the initial position of particle |
| 34 | this.baseY=this.y; |
| 35 | this.density=(Math.random()*10)+1; |
| 36 | this.distance; |
| 37 | |
| 38 | } |
| 39 | draw(){ |
| 40 | ctx.fillStyle="rgba(255,255,255,0.8)"; |
| 41 | ctx.strokeStyle="rgba(34,147,214,1)"; |
| 42 | |
| 43 | ctx.beginPath(); |
| 44 | if(this.distance < mouse.radius-5){ |
| 45 | this.size=13; |
| 46 | ctx.arc(this.x,this.y,this.size,0,Math.PI*2); |
| 47 | ctx.stroke(); |
| 48 | ctx.closePath(); |
| 49 | ctx.beginPath(); |
| 50 | ctx.arc(this.x-3,this.y-3,this.size/2.5,0,Math.PI*2); |
| 51 | ctx.arc(this.x+7,this.y-1,this.size/3.5,0,Math.PI*2); |
| 52 | } |
| 53 | else if(this.distance <= mouse.radius){ |
| 54 | this.size=10; |
| 55 | ctx.arc(this.x,this.y,this.size,0,Math.PI*2); |
| 56 | ctx.stroke(); |
| 57 | ctx.closePath(); |
| 58 | ctx.beginPath(); |
| 59 | ctx.arc(this.x-2,this.y-2,this.size/3,0,Math.PI*2); |
| 60 | |
| 61 | } |
| 62 | else{ |
| 63 | this.size=8; |
| 64 | ctx.arc(this.x,this.y,this.size,0,Math.PI*2); |
| 65 | ctx.stroke(); |
| 66 | ctx.closePath(); |
| 67 | ctx.beginPath(); |
| 68 | ctx.arc(this.x-1,this.y-1,this.size/3,0,Math.PI*2); |
| 69 | |
| 70 | } |
| 71 | ctx.closePath(); |
| 72 | |
| 73 | ctx.fill(); |
| 74 | |
| 75 | } |
| 76 | update(){ |
| 77 | let dx=mouse.x-this.x; |
| 78 | let dy=mouse.y-this.y; |
| 79 | let distance=Math.sqrt(dx*dx +dy*dy); |
| 80 | this.distance=distance; |
| 81 | let forceDirectionX=dx/distance; |
| 82 | let forceDirectionY=dy/distance; |
| 83 | let maxDistance=mouse.radius; |
| 84 | let force=(maxDistance-distance)/maxDistance; |
nothing calls this directly
no outgoing calls
no test coverage detected