|
1 | | - //no of circles |
| 1 | +//number of circles |
2 | 2 | var number=35; |
3 | 3 | var widthBanner = 1000; |
4 | 4 | var heightBanner = 100; |
5 | | - //Raphael Object |
| 5 | +//Raphael object |
6 | 6 | var paper= Raphael('banner',0,widthBanner, 800, 200); |
7 | | - //Styles for circles and line joining their center |
| 7 | +//Styles for circles and the line joining them |
8 | 8 | var filler = { |
9 | 9 | fill:'gray', |
10 | 10 | opacity:'0.1' |
11 | 11 | }; |
12 | 12 | var filler2 = { |
13 | 13 | fill:'black', |
14 | | - opacity:'0.3' |
15 | | - }; |
16 | | - |
17 | | - //2-D array containing the line objects between any 2 circles |
| 14 | + opacity:'0.4' |
| 15 | + }; |
| 16 | +//2D array for lines between any two pair(inefficient now as less than half are used) |
18 | 17 | var lines = new Array(number); |
19 | 18 | for (var i = 0; i < number; i++) { |
20 | 19 | lines[i] = new Array(number); |
21 | 20 | for(var j=0;j<number;j++){ |
22 | 21 | lines[i][j] =null; |
23 | 22 | } |
24 | 23 | } |
25 | | - //circle object |
| 24 | +//circle object |
26 | 25 | var x,y,velX,velY,colour; |
27 | 26 | function ball(a,b,c,d,e){ |
28 | 27 | this.x=a; |
|
31 | 30 | this.velY=d; |
32 | 31 | this.colour=e; |
33 | 32 | } |
| 33 | +//initialisation of various things |
34 | 34 | var a=false; |
35 | | - |
36 | | - //initialising objects |
37 | 35 | var arrShape=new Array(); |
38 | 36 | var arrPos=new Array(); |
| 37 | + var colour1 = new Array(); |
| 38 | + var numColour1=0,numColour2=0,numColour3=0,numColour4=0; |
| 39 | + var colour2 = new Array(); |
| 40 | + var colour3 = new Array(); |
| 41 | + var colour4 = new Array(); |
39 | 42 | var colours=new Array(); |
40 | 43 | colours[0]='yellow'; |
41 | 44 | colours[1]='black'; |
|
56 | 59 | temp1=(temp1+1)%4; |
57 | 60 | rad=iniAng*(Math.PI/180); |
58 | 61 | arrPos[i]=new ball(iniX,iniY,Math.cos(rad)*.55,Math.sin(rad)*.55,colours[temp1]); |
59 | | - if(temp1==0){//arrShape[i].node.class="colour1"; |
60 | | - arrShape[i].node.setAttribute('class', 'colour1');} |
61 | | - if(temp1==1){//arrShape[i].node.class="colour2"; |
62 | | - arrShape[i].node.setAttribute('class', 'colour2');} |
63 | | - if(temp1==2){//arrShape[i].node.class="colour3"; |
64 | | - arrShape[i].node.setAttribute('class', 'colour3');} |
65 | | - if(temp1==3){//arrShape[i].node.class="colour4"; |
66 | | - arrShape[i].node.setAttribute('class', 'colour4');} |
| 62 | + if(temp1==0){ |
| 63 | + arrShape[i].node.setAttribute('class', 'colour1'); |
| 64 | + colour1.push(i);numColour1++; |
67 | 65 | } |
68 | | - |
69 | | - //mouse functionality |
70 | | - $(".colour1").mouseover(function(){ |
71 | | - |
72 | | - for(var i=0;i<number;i++){ |
73 | | - if(arrShape[i].node.class=="colour1"){ |
74 | | - arrShape[i].attr("opacity",.8); |
| 66 | + if(temp1==1){ |
| 67 | + arrShape[i].node.setAttribute('class', 'colour2'); |
| 68 | + colour2.push(i);numColour2++ |
| 69 | + } |
| 70 | + if(temp1==2){ |
| 71 | + arrShape[i].node.setAttribute('class', 'colour3'); |
| 72 | + colour3.push(i);numColour3++; |
| 73 | + } |
| 74 | + if(temp1==3){ |
| 75 | + arrShape[i].node.setAttribute('class', 'colour4'); |
| 76 | + colour4.push(i);numColour4++; |
| 77 | + } |
| 78 | + } |
| 79 | + var mouseOverOpacity=.3; |
| 80 | + var time; |
| 81 | + //MOUSE Functionality |
| 82 | + $(".colour1").mouseover(function(e){ |
| 83 | + for(var i=0;i<numColour1;i++){ |
| 84 | + if(colour1[i]!=""){ |
| 85 | + arrShape[colour1[i]].attr("opacity",mouseOverOpacity); |
| 86 | + arrShape[colour1[i]].attr("cx", arrPos[colour1[i]].x); |
| 87 | + arrShape[colour1[i]].attr("cy", arrPos[colour1[i]].y); |
75 | 88 | } |
76 | 89 | } |
77 | | - |
78 | | - }); |
79 | | - $(".colour2").mouseover(function(){ |
80 | | - |
81 | | - for(var i=0;i<number;i++){ |
82 | | - if(arrShape[i].node.class=="colour2"){ |
83 | | - arrShape[i].attr("opacity",.8); |
| 90 | + clearTimeout(time); |
| 91 | + }); |
| 92 | + $(".colour1").mouseout(function(){ |
| 93 | + for(var i=0;i<numColour1;i++){ |
| 94 | + if(colour1[i]!=""){ |
| 95 | + arrShape[colour1[i]].attr("opacity",.1); |
| 96 | + } |
| 97 | + } |
| 98 | + animate(); |
| 99 | + }); |
| 100 | + $(".colour2").mouseover(function(e){ |
| 101 | + for(var i=0;i<numColour2;i++){ |
| 102 | + if(colour2[i]!=""){ |
| 103 | + arrShape[colour2[i]].attr("opacity",mouseOverOpacity); |
| 104 | + arrShape[colour2[i]].attr("cx", arrPos[colour2[i]].x); |
| 105 | + arrShape[colour2[i]].attr("cy", arrPos[colour2[i]].y); |
84 | 106 | } |
85 | 107 | } |
86 | | - |
87 | | - }); |
88 | | - $(".colour3").mouseover(function(){ |
89 | | - |
90 | | - for(var i=0;i<number;i++){ |
91 | | - if(arrShape[i].node.class=="colour3"){ |
92 | | - arrShape[i].attr("opacity",.9); |
| 108 | + clearTimeout(time); |
| 109 | + }); |
| 110 | + $(".colour2").mouseout(function(){ |
| 111 | + for(var i=0;i<numColour2;i++){ |
| 112 | + if(colour2[i]!=""){ |
| 113 | + arrShape[colour2[i]].attr("opacity",.1); |
| 114 | + } |
| 115 | + } |
| 116 | + animate(); |
| 117 | + }); |
| 118 | + $(".colour3").mouseover(function(e){ |
| 119 | + for(var i=0;i<numColour3;i++){ |
| 120 | + if(colour3[i]!=""){ |
| 121 | + arrShape[colour3[i]].attr("opacity",mouseOverOpacity); |
| 122 | + arrShape[colour3[i]].attr("cx", arrPos[colour3[i]].x); |
| 123 | + arrShape[colour3[i]].attr("cy", arrPos[colour3[i]].y); |
93 | 124 | } |
94 | 125 | } |
95 | | - |
96 | | - }); |
97 | | - $(".colour4").mouseover(function(){ |
98 | | - |
99 | | - for(var i=0;i<number;i++){ |
100 | | - if(arrShape[i].node.class=="colour4"){ |
101 | | - arrShape[i].attr("opacity",.8); |
| 126 | + clearTimeout(time); |
| 127 | + }); |
| 128 | + $(".colour3").mouseout(function(){ |
| 129 | + for(var i=0;i<numColour3;i++){ |
| 130 | + if(colour3[i]!=""){ |
| 131 | + arrShape[colour3[i]].attr("opacity",.1); |
| 132 | + } |
| 133 | + } |
| 134 | + animate(); |
| 135 | + }); |
| 136 | + |
| 137 | + $(".colour4").mouseover(function(e){ |
| 138 | + for(var i=0;i<numColour4;i++){ |
| 139 | + if(colour4[i]!=""){ |
| 140 | + arrShape[colour4[i]].attr("opacity",mouseOverOpacity); |
| 141 | + arrShape[colour4[i]].attr("cx", arrPos[colour4[i]].x); |
| 142 | + arrShape[colour4[i]].attr("cy", arrPos[colour4[i]].y); |
102 | 143 | } |
103 | 144 | } |
104 | | - |
105 | | - }); |
106 | | - |
107 | | - //delay |
| 145 | + clearTimeout(time); |
| 146 | + }); |
| 147 | + $(".colour4").mouseout(function(){ |
| 148 | + for(var i=0;i<numColour4;i++){ |
| 149 | + if(colour4[i]!=""){ |
| 150 | + arrShape[colour4[i]].attr("opacity",.1); |
| 151 | + } |
| 152 | + } |
| 153 | + animate(); |
| 154 | + }); |
| 155 | + |
| 156 | + //delay between animation frames |
108 | 157 | var delay=50; |
109 | | - var time ; |
110 | | - |
111 | 158 | function distance(x1,y1,x2,y2){ |
112 | 159 | return Math.sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))); |
113 | 160 | } |
114 | | - |
115 | 161 | var closeness=50; |
116 | 162 | var ij=0; |
117 | | - |
118 | | - //main animation function that calls itself |
| 163 | + //Main Animation function that calls itself |
119 | 164 | function animate(){ |
120 | | - |
121 | 165 | for(var i=0;i<number;i++){ |
122 | 166 | var a=arrPos[i].x; |
123 | 167 | var b=arrPos[i].y; |
124 | | - //bouncing condition |
| 168 | + |
| 169 | + //Bouncing off the walls condition |
125 | 170 | if(arrPos[i].x<=0 || arrPos[i].x>=widthBanner){arrPos[i].velX=(-1*arrPos[i].velX);} |
126 | 171 | if(arrPos[i].y<=0 || arrPos[i].y>=heightBanner){arrPos[i].velY=(-1*arrPos[i].velY);} |
127 | | - |
128 | | - //line joining the center code |
129 | 172 | if(ij%40==0){ |
| 173 | + |
| 174 | + //Lines between circles |
130 | 175 | for(var ii=0;ii<number;ii++){ |
131 | 176 | for(var j=ii+1;j<number;j++){ |
132 | 177 | var c=arrPos[j].x; |
133 | 178 | var d=arrPos[j].y; |
134 | 179 | if((Math.abs(arrPos[ii].x - arrPos[j].x) <= closeness) && (Math.abs(arrPos[ii].y - arrPos[j].y) <= closeness)) { |
| 180 | + |
135 | 181 | if(lines[ii][j]!=null){ |
136 | 182 | lines[ii][j].attr("path","M" + arrPos[ii].x + " " + arrPos[ii].y + " L" + arrPos[j].x + " " + arrPos[j].y); |
137 | 183 | lines[ii][j].attr(filler2); |
|
141 | 187 | lines[ii][j] =paper.path("M" + arrPos[ii].x + " " + arrPos[ii].y + " L" + arrPos[j].x + " " + arrPos[j].y); |
142 | 188 | lines[ii][j].attr(filler2); |
143 | 189 | } |
| 190 | + |
| 191 | + |
144 | 192 | } |
145 | 193 | else{ |
146 | 194 | if(lines[ii][j]!=null){ |
|
150 | 198 | } |
151 | 199 | }} |
152 | 200 | ij++; |
153 | | - //updating positions |
| 201 | + //Updating positions |
154 | 202 | arrPos[i].x=arrPos[i].x+arrPos[i].velX; |
155 | 203 | arrPos[i].y=arrPos[i].y+arrPos[i].velY; |
156 | | - |
157 | 204 | arrShape[i].attr("cx",arrPos[i].x); |
158 | 205 | arrShape[i].attr("cy",arrPos[i].y); |
159 | 206 | // arrShape[i].glow({width:1.3,opacity:.1}); |
160 | 207 |
|
161 | 208 | } |
162 | | - |
163 | | - |
| 209 | +// clearTimeout(time) |
164 | 210 | time=setTimeout("animate()", delay); |
165 | 211 | } |
166 | 212 |
|
167 | | - //entry point |
168 | 213 | $(document).ready(function(){ |
169 | 214 | animate(); |
170 | 215 | }); |
|
0 commit comments