ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
§¡§ß§Ú§Þ§Ú§â§å§Ö§Þ	
 ?§à§Ò§ì§Ö§Ü§ä§í	
 ?	
 ?
§ã	
 ?§Ú§ã§á§à§Ý§î§Ù§à§Ó§Ñ§ß§Ú§Ö§Þ	
 ?§æ§Ú§Ù§Ú§Ü§Ú	
 ?	
 ?
§Ó	
 ?JavaScript	
 ?
§ª§Ó§Ñ§ß§à§Ó§Ñ	
 ?§¦§Ý§Ö§ß§Ñ	
 ?	
 ?
@liveldi90	
 ?
§¶§â§à§ß§ä§Ö§ß§Õ	
 ?§â§Ñ§Ù§â§Ñ§Ò§à§ä§é§Ú§Ü	
 ?
Astroshock	
 ?
25	
 ?§Ú§ð§ß§ñ	
 ?2015	
 ?
§³§°§¥§¦§²§¨§¡§¯§ª§¦	
 ?
§¬§à§ß§ã§ä§â§å§Ü§ä§à§â§í	
 ?
§¥§Ó§Ú§Ø§Ö§ß§Ú§Ö	
 ?
§³§Ú§Ý§Ñ	
 ?§ä§â§Ö§ß§Ú§ñ	
 ?
§µ§ã§Ü§à§â§Ö§ß§Ú§Ö	
 ?§Ú	
 ?§á§â§í§Ø§Ü§Ú	
 ?
§±§â§å§Ø§Ú§ß§í	
 ?§Ú	
 ?§Ü§à§Ý§Ö§Ò§Ñ§ß§Ú§ñ	
 ?
§¡§ß§Ú§Þ§Ñ§è§Ú§ñ	
 ?
§¡§¯§ª§®§¡§¸§ª§Á	
 ?
4	
 ?/	
 ?42	
 ?
5	
 ?/	
 ?42	
 ?
setTimeout(func,	
 ?1000/fps);	
 ?
setInterval(func,	
 ?1000/fps);	
 ?
requestAnimaponFrame(func);	
 ?
6	
 ?/	
 ?42	
 ?
6	
 ?/	
 ?42	
 ?
setTimeout(func,	
 ?1000/fps);	
 ?
setInterval(func,	
 ?1000/fps);	
 ?
requestAnimaponFrame(func);	
 ?
var	
 ?t0	
 ?=	
 ?0,	
 ?dt;	
 ?
var	
 ?kSmothing	
 ?=	
 ?0.001;	
 ?
	
 ?
funcpon	
 ?onTimer()	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?var	
 ?t1	
 ?=	
 ?new	
 ?Date().getTime();	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?dt	
 ?=	
 ?t1	
 ?¡ª	
 ?t0;	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?t0	
 ?=	
 ?t1;	
 ?
	
 ?	
 ?	
 ?//	
 ?§®§Ö§ß§ñ§Ö§Þ	
 ?§Ü§Ñ§Õ§â§í	
 ?
}	
 ?
7	
 ?/	
 ?42	
 ?
§¬§°§¯§³§´§²§µ§¬§´§°§²§½	
 ?
§°§¢§¼§¦§¬§´	
 ?¡ª	
 ?§á§Ñ§â§Ñ§Þ§Ö§ä§â§í	
 ?
var	
 ?Obj	
 ?=	
 ?funcpon	
 ?(ops)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?this.$el	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?//	
 ?§¥§à§ã§ä§å§á	
 ?§Ü	
 ?§ï§Ý§Ö§Þ§Ö§ß§ä§å	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?this.mass	
 ?	
 ?//	
 ?§®§Ñ§ã§ã§Ñ	
 ?
	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?this.x	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?//	
 ?§±§à§Ù§Ú§è§Ú§ñ	
 ?x,	
 ?y	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?this.y	
 ?
	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?this.vx	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?//	
 ?C§Ü§à§â§à§ã§ä§î	
 ?§á§à	
 ?x,	
 ?y	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?this.vy	
 ?
	
 ? 	
 ? 	
 ?¡­	
 ?};	
 ?
9	
 ?/	
 ?42	
 ?
§°§¢§¼§¦§¬§´	
 ?¡ª	
 ?§Þ§Ö§ä§à§Õ§í	
 ?	
 ?
Obj.prototype.pos	
 ?	
 ?
Obj.prototype.velo	
 ?
10	
 ?/	
 ?42	
 ?
§£§¦§¬§´§°§²	
 ?¡ª	
 ?§á§Ñ§â§Ñ§Þ§Ö§ä§â§í	
 ?
var	
 ?Vector	
 ?=	
 ?funcpon	
 ?(x,	
 ?y)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?this.x	
 ?=	
 ?x;	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?this.y	
 ?=	
 ?y;	
 ?
};	
 ?
11	
 ?/	
 ?42	
 ?
§£§¦§¬§´§°§²	
 ?¡ª	
 ?§Þ§Ö§ä§à§Õ§í	
 ?
Vector.prototype.length()	
 ?
Vector.prototype.add(vec)	
 ?
Vector.prototype.subtract(vec)	
 ?
Vector.prototype.mulpply(k)	
 ?
Vector.prototype.divide(k)	
 ?	
 ?	
 ?
12	
 ?/	
 ?42	
 ?
§£§¦§¬§´§°§²	
 ?¡ª	
 ?§Þ§Ö§ä§à§Õ§í	
 ?
Vector.prototype.addScaled	
 ?=	
 ?	
 ?
	
 ?funcpon	
 ?(vec,	
 ?k)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ? 	
 ?return	
 ?new	
 ?Vector(	
 ?
	
 ? 	
 ? 	
 ? 	
 ? 	
 ?this.x	
 ?+	
 ?k	
 ?*	
 ?vec.x,	
 ?	
 ?
	
 ? 	
 ? 	
 ? 	
 ? 	
 ? 	
 ?this.y	
 ?+	
 ?k	
 ?*	
 ?vec.y);	
 ?
	
 ?};	
 ?
13	
 ?/	
 ?42	
 ?
§¥§£§ª§¨§¦§¯§ª§¦	
 ?
15	
 ?/	
 ?42	
 ?
16	
 ?/	
 ?42	
 ?
obj.pos	
 ?=	
 ?new	
 ?Vector(10,	
 ?0);	
 ?
obj.velo	
 ?=	
 ?new	
 ?Vector(60,	
 ?0);	
 ?
17	
 ?/	
 ?42	
 ?
obj.pos	
 ?=	
 ?new	
 ?Vector(10,	
 ?0);	
 ?
obj.velo	
 ?=	
 ?new	
 ?Vector(60,	
 ?0);	
 ?
	
 ?
funcpon	
 ?move()	
 ?{	
 ?
	
 ?obj.pos	
 ?=	
 ?obj.pos.addScaled(obj.velo,	
 ?dt);	
 ?
}	
 ?
17	
 ?/	
 ?42	
 ?
§³§ª§­§¡	
 ?§´§²§¦§¯§ª§Á	
 ?
§¬§ª§¯§¦§´§ª§¹§¦§³§¬§¡§Á	
 ?§¿§¯§¦§²§¤§ª§Á	
 ?
19	
 ?/	
 ?42	
 ?
§®§°§»§¯§°§³§´§¾	
 ?
§³§ª§­§¡	
 ?§´§²§¦§¯§ª§Á	
 ?
20	
 ?/	
 ?42	
 ?
§ª§©§®§¦§¯§¦§¯§ª§¦	
 ?§¬§ª§¯§¦§´§ª§¹§¦§³§¬§°§«	
 ?
§¿§¯§¦§²§¤§ª§ª	
 ?
21	
 ?/	
 ?42	
 ?
var	
 ?displ	
 ?=	
 ?obj.pos.subtract(obj.pos0);	
 ?
obj.velo	
 ?=	
 ?displ.divide((t1	
 ?¡ª	
 ?t0)	
 ?*	
 ?kSmoothing);	
 ?
	
 ?
ke	
 ?=	
 ?new	
 ?Vector(	
 ?
	
 ? 	
 ? 	
 ?0.5	
 ?*	
 ?obj.mass	
 ?*	
 ?obj.vx	
 ?*	
 ?obj.vx,	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.5	
 ?*	
 ?obj.mass	
 ?*	
 ?obj.vy	
 ?*	
 ?obj.vy);	
 ?
§¯§¡§¹§¡§­§¾§¯§½§¦	
 ?§²§¡§³§¹§¦§´§½	
 ?
22	
 ?/	
 ?42	
 ?
var	
 ?powerLoss	
 ?=	
 ?new	
 ?Vector(	
 ?
	
 ? 	
 ? 	
 ? 	
 ?powerLossFactor	
 ?*	
 ?obj.vx	
 ?*	
 ?obj.vx	
 ?*	
 ?dt,	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?powerLossFactor	
 ?*	
 ?obj.vy	
 ?*	
 ?obj.vy	
 ?*	
 ?dt);	
 ?
	
 ?
ke	
 ?=	
 ?ke.subtract(powerLoss);	
 ?
§°§¢§¯§°§£§­§¦§¯§ª§¦	
 ?§¬§ª§¯§¦§´§ª§¹§¦§³§¬§°§«	
 ?
§¿§¯§¦§²§¤§ª§ª	
 ?
23	
 ?/	
 ?42	
 ?
obj.velo	
 ?=	
 ?new	
 ?Vector(	
 ?
	
 ? 	
 ?Math.sqrt(2	
 ?*	
 ?ke.x	
 ?/	
 ?obj.mass),	
 ?	
 ?
	
 ? 	
 ?Math.sqrt(2	
 ?*	
 ?ke.y	
 ?/	
 ?obj.mass)	
 ?
);	
 ?
§°§¢§¯§°§£§­§¦§¯§ª§¦	
 ?§³§¬§°§²§°§³§´§ª	
 ?
24	
 ?/	
 ?42	
 ?
§°§¢§¯§°§£§­§¦§¯§ª§¦	
 ?§±§°§©§ª§¸§ª§ª	
 ?
obj.pos	
 ?=	
 ?obj.pos.addScaled(obj.velo,	
 ?dt);	
 ?
25	
 ?/	
 ?42	
 ?
§¥§°§¢§¡§£§­§¦§¯§ª§¦	
 ?§®§°§»§¯§°§³§´§ª	
 ?
if	
 ?(applyThrust)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?ke	
 ?=	
 ?ke.add(new	
 ?Vector(	
 ?
	
 ? 	
 ? 	
 ? 	
 ?	
 ? 	
 ? 	
 ?powerApplied	
 ?*	
 ?dt,	
 ?	
 ?
	
 ? 	
 ? 	
 ? 	
 ?	
 ? 	
 ? 	
 ?powerApplied	
 ?*	
 ?dt)	
 ?
	
 ? 	
 ? 	
 ? 	
 ? 	
 ?);	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?
}	
 ?
26	
 ?/	
 ?42	
 ?
§µ§³§¬§°§²§¦§¯§ª§¦	
 ?	
 ?
§ª	
 ?§±§²§½§¨§¬§ª	
 ?
§³§Ú§Ý§Ñ	
 ?	
 ?
§ã§à§á§â§à§ä§Ú§Ó§Ý§Ö§ß§Ú§ñ	
 ?(D)	
 ?
§¤§â§Ñ§Ó§Ú§ä§Ñ§è§Ú§ñ	
 ?(W)	
 ?
§µ§³§¬§°§²§¦§¯§ª§¦	
 ?
28	
 ?/	
 ?42	
 ?
§µ§³§¬§°§²§¦§¯§ª§¦	
 ?
29	
 ?/	
 ?42	
 ?
30	
 ?/	
 ?42	
 ?
obj.force	
 ?=	
 ?new	
 ?Vector(0,	
 ?obj.mass	
 ?*	
 ?g	
 ?¡ª	
 ?k	
 ?*	
 ?obj.vy);	
 ?
obj.acc	
 ?=	
 ?force.divide(obj.mass);	
 ?
§²§¡§³§¹§¦§´	
 ?§³§ª§­§½	
 ?
§°§¢§¯§°§£§­§¦§¯§ª§¦	
 ?§µ§³§¬§°§²§¦§¯§ª§Á	
 ?
31	
 ?/	
 ?42	
 ?
obj.velo	
 ?=	
 ?obj.velo.addScaled(obj.acc,	
 ?dt);	
 ?
obj.pos	
 ?=	
 ?obj.pos.addScaled(obj.velo,	
 ?dt);	
 ?
§°§¢§¯§°§£§­§¦§¯§ª§¦	
 ?§³§¬§°§²§°§³§´§ª	
 ?
§°§¢§¯§°§£§­§¦§¯§ª§¦	
 ?§±§°§©§ª§¸§ª§ª	
 ?
§µ§¥§¡§²	
 ?§°	
 ?§±§°§£§¦§²§·§¯§°§³§´§¾	
 ?
32	
 ?/	
 ?42	
 ?
33	
 ?/	
 ?42	
 ?
§©§¡§­§ª§±§¡§¯§ª§Á	
 ?
34	
 ?/	
 ?42	
 ?
?oor	
 ?=	
 ?new	
 ?Vector(0,	
 ?winH	
 ?¡ª	
 ??oorH);	
 ?
	
 ?
var	
 ?displ	
 ?=	
 ??oor.subtract(obj.pos);	
 ?
if	
 ?(displ.y	
 ?¡ª	
 ?obj.radius	
 ?<=	
 ?0)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?obj.y	
 ?=	
 ??oor.y	
 ?¡ª	
 ?obj.radius;	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?obj.vy	
 ?*=	
 ?¡ªvfac;	
 ?
}	
 ?
	
 ?
§±§²§°§£§¦§²§¬§¡	
 ?§µ§¥§¡§²§¡	
 ?
34	
 ?/	
 ?42	
 ?
?oor	
 ?=	
 ?new	
 ?Vector(0,	
 ?winH	
 ?¡ª	
 ??oorH);	
 ?
	
 ?
var	
 ?displ	
 ?=	
 ??oor.subtract(obj.pos);	
 ?
if	
 ?(displ.y	
 ?¡ª	
 ?obj.radius	
 ?<=	
 ?0)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?obj.y	
 ?=	
 ??oor.y	
 ?¡ª	
 ?obj.radius;	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?obj.vy	
 ?*=	
 ?¡ªvfac;	
 ?
}	
 ?
	
 ?
§±§²§°§£§¦§²§¬§¡	
 ?§µ§¥§¡§²§¡	
 ?
34	
 ?/	
 ?42	
 ?
?oor	
 ?=	
 ?new	
 ?Vector(0,	
 ?winH	
 ?¡ª	
 ??oorH);	
 ?
	
 ?
var	
 ?displ	
 ?=	
 ??oor.subtract(obj.pos);	
 ?
if	
 ?(displ.y	
 ?¡ª	
 ?obj.radius	
 ?<=	
 ?0)	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?obj.y	
 ?=	
 ??oor.y	
 ?¡ª	
 ?obj.radius;	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?obj.vy	
 ?*=	
 ?¡ªvfac;	
 ?
}	
 ?
	
 ?
§±§²§°§£§¦§²§¬§¡	
 ?§µ§¥§¡§²§¡	
 ?
§±§²§µ§¨§ª§¯§½	
 ?	
 ?
§ª	
 ?§¬§°§­§¦§¢§¡§¯§ª§Á	
 ?
36	
 ?/	
 ?42	
 ?
37	
 ?/	
 ?42	
 ?
§±§²§°§³§´§°§¦	
 ?§¤§¡§²§®§°§¯§ª§¹§¦§³§¬§°§¦	
 ?
§¬§°§­§¦§¢§¡§¯§ª§¦	
 ?
§©§Ñ§Ü§à§ß	
 ?§²§à§Ò§Ö§â§ä§Ñ	
 ?§¤§å§Ü§Ñ	
 ?
§©§Ñ§Ü§à§ß	
 ?§¤§å§Ü§Ñ	
 ? §£§ä§à§â§à§Û	
 ?§Ù§Ñ§Ü§à§ß	
 ?§¯§î§ð§ä§à§ß§Ñ	
 ?
§µ§³§¬§°§²§¦§¯§ª§¦	
 ?
38	
 ?/	
 ?42	
 ?
39	
 ?/	
 ?42	
 ?
var	
 ?displ	
 ?=	
 ?obj.pos.subtract(center);	
 ?
var	
 ?restoring	
 ?=	
 ?displ.mulpply(¡ªkSpring);	
 ?
var	
 ?damping	
 ?=	
 ?obj.velo.mulpply(¡ªkDamping);	
 ?
	
 ?
obj.force	
 ?=	
 ?Vector.add([restoring,	
 ?damping]);	
 ?
§²§¡§³§¹§¦§´	
 ?§³§ª§­§½	
 ?
40	
 ?/	
 ?42	
 ?
41	
 ?/	
 ?42	
 ?
cursorForce	
 ?=	
 ?new	
 ?Vector(0,	
 ?0);	
 ?
	
 ?
if	
 ?(cursorPos.x	
 ?>=	
 ?0)	
 ?{	
 ?
	
 ?displCursor	
 ?=	
 ?obj.pos.subtract(cursorPos);	
 ?
	
 ?cursorDist	
 ?=	
 ?displCursor.length();	
 ?
	
 ?
	
 ?if	
 ?(cursorDist	
 ?>	
 ?1	
 ?&&	
 ?	
 ?
cursorDist	
 ?<=	
 ?cursorForceZoomed)	
 ?{	
 ?
	
 ? 	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?
	
 ? 	
 ?var	
 ?func	
 ?=	
 ?cursorForceZoomed	
 ?/	
 ?(cursorDist	
 ?*	
 ?cursorDist	
 ?)	
 ?
	
 ? 	
 ?cursorForce	
 ?=	
 ?displCursor.mulpply(func);	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}	
 ?
}	
 ?
§²§¡§³§¹§¦§´	
 ?§³§ª§­§½	
 ?§¬§µ§²§³§°§²§¡	
 ?
41	
 ?/	
 ?42	
 ?
cursorForce	
 ?=	
 ?new	
 ?Vector(0,	
 ?0);	
 ?
	
 ?
if	
 ?(cursorPos.x	
 ?>=	
 ?0)	
 ?{	
 ?
	
 ?displCursor	
 ?=	
 ?obj.pos.subtract(cursorPos);	
 ?
	
 ?cursorDist	
 ?=	
 ?displCursor.length();	
 ?
	
 ?
	
 ?if	
 ?(cursorDist	
 ?>	
 ?1	
 ?&&	
 ?	
 ?
cursorDist	
 ?<=	
 ?cursorForceZoomed)	
 ?{	
 ?
	
 ? 	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?
	
 ? 	
 ?var	
 ?func	
 ?=	
 ?cursorForceZoomed	
 ?/	
 ?(cursorDist	
 ?*	
 ?cursorDist	
 ?)	
 ?
	
 ? 	
 ?cursorForce	
 ?=	
 ?displCursor.mulpply(func);	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}	
 ?
}	
 ?
§²§¡§³§¹§¦§´	
 ?§³§ª§­§½	
 ?§¬§µ§²§³§°§²§¡	
 ?
41	
 ?/	
 ?42	
 ?
cursorForce	
 ?=	
 ?new	
 ?Vector(0,	
 ?0);	
 ?
	
 ?
if	
 ?(cursorPos.x	
 ?>=	
 ?0)	
 ?{	
 ?
	
 ?displCursor	
 ?=	
 ?obj.pos.subtract(cursorPos);	
 ?
	
 ?cursorDist	
 ?=	
 ?displCursor.length();	
 ?
	
 ?
	
 ?if	
 ?(cursorDist	
 ?>	
 ?1	
 ?&&	
 ?	
 ?
cursorDist	
 ?<=	
 ?cursorForceZoomed)	
 ?{	
 ?
	
 ? 	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?
	
 ? 	
 ?var	
 ?func	
 ?=	
 ?cursorForceZoomed	
 ?/	
 ?(cursorDist	
 ?*	
 ?cursorDist	
 ?)	
 ?
	
 ? 	
 ?cursorForce	
 ?=	
 ?displCursor.mulpply(func);	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}	
 ?
}	
 ?
§²§¡§³§¹§¦§´	
 ?§³§ª§­§½	
 ?§¬§µ§²§³§°§²§¡	
 ?
41	
 ?/	
 ?42	
 ?
cursorForce	
 ?=	
 ?new	
 ?Vector(0,	
 ?0);	
 ?
	
 ?
if	
 ?(cursorPos.x	
 ?>=	
 ?0)	
 ?{	
 ?
	
 ?displCursor	
 ?=	
 ?obj.pos.subtract(cursorPos);	
 ?
	
 ?cursorDist	
 ?=	
 ?displCursor.length();	
 ?
	
 ?
	
 ?if	
 ?(cursorDist	
 ?>	
 ?1	
 ?&&	
 ?	
 ?
cursorDist	
 ?<=	
 ?cursorForceZoomed)	
 ?{	
 ?
	
 ? 	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?
	
 ? 	
 ?var	
 ?func	
 ?=	
 ?cursorForceZoomed	
 ?/	
 ?(cursorDist	
 ?*	
 ?cursorDist	
 ?)	
 ?
	
 ? 	
 ?cursorForce	
 ?=	
 ?displCursor.mulpply(func);	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}	
 ?
}	
 ?
§²§¡§³§¹§¦§´	
 ?§³§ª§­§½	
 ?§¬§µ§²§³§°§²§¡	
 ?
cursorForce	
 ?=	
 ?new	
 ?Vector(0,	
 ?0);	
 ?
	
 ?
if	
 ?(cursorPos.x	
 ?>=	
 ?0)	
 ?{	
 ?
	
 ?displCursor	
 ?=	
 ?obj.pos.subtract(cursorPos);	
 ?
	
 ?cursorDist	
 ?=	
 ?displCursor.length();	
 ?
	
 ?
	
 ?if	
 ?(cursorDist	
 ?>	
 ?1	
 ?&&	
 ?	
 ?
cursorDist	
 ?<=	
 ?cursorForceZoomed)	
 ?{	
 ?
	
 ? 	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?
	
 ? 	
 ?var	
 ?func	
 ?=	
 ?cursorForceZoomed	
 ?/	
 ?(cursorDist	
 ?*	
 ?cursorDist	
 ?)	
 ?
	
 ? 	
 ?cursorForce	
 ?=	
 ?displCursor.mulpply(func);	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}	
 ?
}	
 ?
41	
 ?/	
 ?42	
 ?
§²§¡§³§¹§¦§´	
 ?§³§ª§­§½	
 ?§¬§µ§²§³§°§²§¡	
 ?
§ª§Ó§Ñ§ß§à§Ó§Ñ	
 ?§¦§Ý§Ö§ß§Ñ	
 ?	
 ?
@liveldi90	
 ?
	
 ?
physicsdemos.liveldi.ru	
 ?

More Related Content

§¡§ß§Ú§Þ§Ú§â§å§Ö§Þ §à§Ò§ì§Ö§Ü§ä§í §ã §Ú§ã§á§à§Ý§î§Ù§à§Ó§Ñ§ß§Ú§Ö§Þ §æ§Ú§Ù§Ú§Ü§Ú §Ó JavaScript

  • 1. §¡§ß§Ú§Þ§Ú§â§å§Ö§Þ ?§à§Ò§ì§Ö§Ü§ä§í ? ? §ã ?§Ú§ã§á§à§Ý§î§Ù§à§Ó§Ñ§ß§Ú§Ö§Þ ?§æ§Ú§Ù§Ú§Ü§Ú ? ? §Ó ?JavaScript ? §ª§Ó§Ñ§ß§à§Ó§Ñ ?§¦§Ý§Ö§ß§Ñ ? ? @liveldi90 ? §¶§â§à§ß§ä§Ö§ß§Õ ?§â§Ñ§Ù§â§Ñ§Ò§à§ä§é§Ú§Ü ? Astroshock ? 25 ?§Ú§ð§ß§ñ ?2015 ?
  • 2. §³§°§¥§¦§²§¨§¡§¯§ª§¦ ? §¬§à§ß§ã§ä§â§å§Ü§ä§à§â§í ? §¥§Ó§Ú§Ø§Ö§ß§Ú§Ö ? §³§Ú§Ý§Ñ ?§ä§â§Ö§ß§Ú§ñ ? §µ§ã§Ü§à§â§Ö§ß§Ú§Ö ?§Ú ?§á§â§í§Ø§Ü§Ú ? §±§â§å§Ø§Ú§ß§í ?§Ú ?§Ü§à§Ý§Ö§Ò§Ñ§ß§Ú§ñ ? §¡§ß§Ú§Þ§Ñ§è§Ú§ñ ?
  • 6. setTimeout(func, ?1000/fps); ? setInterval(func, ?1000/fps); ? requestAnimaponFrame(func); ? 6 ?/ ?42 ?
  • 7. 6 ?/ ?42 ? setTimeout(func, ?1000/fps); ? setInterval(func, ?1000/fps); ? requestAnimaponFrame(func); ?
  • 8. var ?t0 ?= ?0, ?dt; ? var ?kSmothing ?= ?0.001; ? ? funcpon ?onTimer() ?{ ? ? ? ? ? ? ?var ?t1 ?= ?new ?Date().getTime(); ? ? ? ? ? ? ?dt ?= ?t1 ?¡ª ?t0; ? ? ? ? ? ? ?t0 ?= ?t1; ? ? ? ?// ?§®§Ö§ß§ñ§Ö§Þ ?§Ü§Ñ§Õ§â§í ? } ? 7 ?/ ?42 ?
  • 10. §°§¢§¼§¦§¬§´ ?¡ª ?§á§Ñ§â§Ñ§Þ§Ö§ä§â§í ? var ?Obj ?= ?funcpon ?(ops) ?{ ? ? ? ? ? ? ? ? ?this.$el ? ? ? ? ? ?// ?§¥§à§ã§ä§å§á ?§Ü ?§ï§Ý§Ö§Þ§Ö§ß§ä§å ? ? ? ? ? ? ? ? ?this.mass ? ?// ?§®§Ñ§ã§ã§Ñ ? ? ? ? ? ? ? ? ? ?this.x ? ? ? ? ? ? ? ? ?// ?§±§à§Ù§Ú§è§Ú§ñ ?x, ?y ? ? ? ? ? ? ? ? ?this.y ? ? ? ? ? ? ? ? ? ?this.vx ? ? ? ? ? ? ?// ?C§Ü§à§â§à§ã§ä§î ?§á§à ?x, ?y ? ? ? ? ? ? ? ? ?this.vy ? ? ? ?¡­ ?}; ? 9 ?/ ?42 ?
  • 11. §°§¢§¼§¦§¬§´ ?¡ª ?§Þ§Ö§ä§à§Õ§í ? ? Obj.prototype.pos ? ? Obj.prototype.velo ? 10 ?/ ?42 ?
  • 12. §£§¦§¬§´§°§² ?¡ª ?§á§Ñ§â§Ñ§Þ§Ö§ä§â§í ? var ?Vector ?= ?funcpon ?(x, ?y) ?{ ? ? ? ? ? ? ? ?this.x ?= ?x; ? ? ? ? ? ? ? ?this.y ?= ?y; ? }; ? 11 ?/ ?42 ?
  • 13. §£§¦§¬§´§°§² ?¡ª ?§Þ§Ö§ä§à§Õ§í ? Vector.prototype.length() ? Vector.prototype.add(vec) ? Vector.prototype.subtract(vec) ? Vector.prototype.mulpply(k) ? Vector.prototype.divide(k) ? ? ? 12 ?/ ?42 ?
  • 14. §£§¦§¬§´§°§² ?¡ª ?§Þ§Ö§ä§à§Õ§í ? Vector.prototype.addScaled ?= ? ? ?funcpon ?(vec, ?k) ?{ ? ? ? ? ? ? ? ? ? ?return ?new ?Vector( ? ? ? ? ? ?this.x ?+ ?k ?* ?vec.x, ? ? ? ? ? ? ? ?this.y ?+ ?k ?* ?vec.y); ? ?}; ? 13 ?/ ?42 ?
  • 18. obj.pos ?= ?new ?Vector(10, ?0); ? obj.velo ?= ?new ?Vector(60, ?0); ? 17 ?/ ?42 ?
  • 19. obj.pos ?= ?new ?Vector(10, ?0); ? obj.velo ?= ?new ?Vector(60, ?0); ? ? funcpon ?move() ?{ ? ?obj.pos ?= ?obj.pos.addScaled(obj.velo, ?dt); ? } ? 17 ?/ ?42 ?
  • 24. var ?displ ?= ?obj.pos.subtract(obj.pos0); ? obj.velo ?= ?displ.divide((t1 ?¡ª ?t0) ?* ?kSmoothing); ? ? ke ?= ?new ?Vector( ? ? ? ?0.5 ?* ?obj.mass ?* ?obj.vx ?* ?obj.vx, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0.5 ?* ?obj.mass ?* ?obj.vy ?* ?obj.vy); ? §¯§¡§¹§¡§­§¾§¯§½§¦ ?§²§¡§³§¹§¦§´§½ ? 22 ?/ ?42 ?
  • 25. var ?powerLoss ?= ?new ?Vector( ? ? ? ? ?powerLossFactor ?* ?obj.vx ?* ?obj.vx ?* ?dt, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?powerLossFactor ?* ?obj.vy ?* ?obj.vy ?* ?dt); ? ? ke ?= ?ke.subtract(powerLoss); ? §°§¢§¯§°§£§­§¦§¯§ª§¦ ?§¬§ª§¯§¦§´§ª§¹§¦§³§¬§°§« ? §¿§¯§¦§²§¤§ª§ª ? 23 ?/ ?42 ?
  • 26. obj.velo ?= ?new ?Vector( ? ? ?Math.sqrt(2 ?* ?ke.x ?/ ?obj.mass), ? ? ? ?Math.sqrt(2 ?* ?ke.y ?/ ?obj.mass) ? ); ? §°§¢§¯§°§£§­§¦§¯§ª§¦ ?§³§¬§°§²§°§³§´§ª ? 24 ?/ ?42 ? §°§¢§¯§°§£§­§¦§¯§ª§¦ ?§±§°§©§ª§¸§ª§ª ? obj.pos ?= ?obj.pos.addScaled(obj.velo, ?dt); ?
  • 28. §¥§°§¢§¡§£§­§¦§¯§ª§¦ ?§®§°§»§¯§°§³§´§ª ? if ?(applyThrust) ?{ ? ? ? ? ? ?ke ?= ?ke.add(new ?Vector( ? ? ? ? ? ? ? ?powerApplied ?* ?dt, ? ? ? ? ? ? ? ? ?powerApplied ?* ?dt) ? ? ? ? ? ?); ? ? ? ? ? ? ? ? ? } ? 26 ?/ ?42 ?
  • 29. §µ§³§¬§°§²§¦§¯§ª§¦ ? ? §ª ?§±§²§½§¨§¬§ª ?
  • 30. §³§Ú§Ý§Ñ ? ? §ã§à§á§â§à§ä§Ú§Ó§Ý§Ö§ß§Ú§ñ ?(D) ? §¤§â§Ñ§Ó§Ú§ä§Ñ§è§Ú§ñ ?(W) ? §µ§³§¬§°§²§¦§¯§ª§¦ ? 28 ?/ ?42 ?
  • 32. 30 ?/ ?42 ? obj.force ?= ?new ?Vector(0, ?obj.mass ?* ?g ?¡ª ?k ?* ?obj.vy); ? obj.acc ?= ?force.divide(obj.mass); ? §²§¡§³§¹§¦§´ ?§³§ª§­§½ ? §°§¢§¯§°§£§­§¦§¯§ª§¦ ?§µ§³§¬§°§²§¦§¯§ª§Á ?
  • 33. 31 ?/ ?42 ? obj.velo ?= ?obj.velo.addScaled(obj.acc, ?dt); ? obj.pos ?= ?obj.pos.addScaled(obj.velo, ?dt); ? §°§¢§¯§°§£§­§¦§¯§ª§¦ ?§³§¬§°§²§°§³§´§ª ? §°§¢§¯§°§£§­§¦§¯§ª§¦ ?§±§°§©§ª§¸§ª§ª ?
  • 35. 33 ?/ ?42 ? §©§¡§­§ª§±§¡§¯§ª§Á ?
  • 36. 34 ?/ ?42 ? ?oor ?= ?new ?Vector(0, ?winH ?¡ª ??oorH); ? ? var ?displ ?= ??oor.subtract(obj.pos); ? if ?(displ.y ?¡ª ?obj.radius ?<= ?0) ?{ ? ? ? ? ? ? ? ? ? ?obj.y ?= ??oor.y ?¡ª ?obj.radius; ? ? ? ? ? ? ? ? ? ?obj.vy ?*= ?¡ªvfac; ? } ? ? §±§²§°§£§¦§²§¬§¡ ?§µ§¥§¡§²§¡ ?
  • 37. 34 ?/ ?42 ? ?oor ?= ?new ?Vector(0, ?winH ?¡ª ??oorH); ? ? var ?displ ?= ??oor.subtract(obj.pos); ? if ?(displ.y ?¡ª ?obj.radius ?<= ?0) ?{ ? ? ? ? ? ? ? ? ? ?obj.y ?= ??oor.y ?¡ª ?obj.radius; ? ? ? ? ? ? ? ? ? ?obj.vy ?*= ?¡ªvfac; ? } ? ? §±§²§°§£§¦§²§¬§¡ ?§µ§¥§¡§²§¡ ?
  • 38. 34 ?/ ?42 ? ?oor ?= ?new ?Vector(0, ?winH ?¡ª ??oorH); ? ? var ?displ ?= ??oor.subtract(obj.pos); ? if ?(displ.y ?¡ª ?obj.radius ?<= ?0) ?{ ? ? ? ? ? ? ? ? ? ?obj.y ?= ??oor.y ?¡ª ?obj.radius; ? ? ? ? ? ? ? ? ? ?obj.vy ?*= ?¡ªvfac; ? } ? ? §±§²§°§£§¦§²§¬§¡ ?§µ§¥§¡§²§¡ ?
  • 39. §±§²§µ§¨§ª§¯§½ ? ? §ª ?§¬§°§­§¦§¢§¡§¯§ª§Á ?
  • 41. 37 ?/ ?42 ? §±§²§°§³§´§°§¦ ?§¤§¡§²§®§°§¯§ª§¹§¦§³§¬§°§¦ ? §¬§°§­§¦§¢§¡§¯§ª§¦ ? §©§Ñ§Ü§à§ß ?§²§à§Ò§Ö§â§ä§Ñ ?§¤§å§Ü§Ñ ?
  • 42. §©§Ñ§Ü§à§ß ?§¤§å§Ü§Ñ ? §£§ä§à§â§à§Û ?§Ù§Ñ§Ü§à§ß ?§¯§î§ð§ä§à§ß§Ñ ? §µ§³§¬§°§²§¦§¯§ª§¦ ? 38 ?/ ?42 ?
  • 43. 39 ?/ ?42 ? var ?displ ?= ?obj.pos.subtract(center); ? var ?restoring ?= ?displ.mulpply(¡ªkSpring); ? var ?damping ?= ?obj.velo.mulpply(¡ªkDamping); ? ? obj.force ?= ?Vector.add([restoring, ?damping]); ? §²§¡§³§¹§¦§´ ?§³§ª§­§½ ?
  • 45. 41 ?/ ?42 ? cursorForce ?= ?new ?Vector(0, ?0); ? ? if ?(cursorPos.x ?>= ?0) ?{ ? ?displCursor ?= ?obj.pos.subtract(cursorPos); ? ?cursorDist ?= ?displCursor.length(); ? ? ?if ?(cursorDist ?> ?1 ?&& ? ? cursorDist ?<= ?cursorForceZoomed) ?{ ? ? ? ? ? ? ? ? ? ?var ?func ?= ?cursorForceZoomed ?/ ?(cursorDist ?* ?cursorDist ?) ? ? ?cursorForce ?= ?displCursor.mulpply(func); ? ? ? ? ? ? ? ?} ? } ? §²§¡§³§¹§¦§´ ?§³§ª§­§½ ?§¬§µ§²§³§°§²§¡ ?
  • 46. 41 ?/ ?42 ? cursorForce ?= ?new ?Vector(0, ?0); ? ? if ?(cursorPos.x ?>= ?0) ?{ ? ?displCursor ?= ?obj.pos.subtract(cursorPos); ? ?cursorDist ?= ?displCursor.length(); ? ? ?if ?(cursorDist ?> ?1 ?&& ? ? cursorDist ?<= ?cursorForceZoomed) ?{ ? ? ? ? ? ? ? ? ? ?var ?func ?= ?cursorForceZoomed ?/ ?(cursorDist ?* ?cursorDist ?) ? ? ?cursorForce ?= ?displCursor.mulpply(func); ? ? ? ? ? ? ? ?} ? } ? §²§¡§³§¹§¦§´ ?§³§ª§­§½ ?§¬§µ§²§³§°§²§¡ ?
  • 47. 41 ?/ ?42 ? cursorForce ?= ?new ?Vector(0, ?0); ? ? if ?(cursorPos.x ?>= ?0) ?{ ? ?displCursor ?= ?obj.pos.subtract(cursorPos); ? ?cursorDist ?= ?displCursor.length(); ? ? ?if ?(cursorDist ?> ?1 ?&& ? ? cursorDist ?<= ?cursorForceZoomed) ?{ ? ? ? ? ? ? ? ? ? ?var ?func ?= ?cursorForceZoomed ?/ ?(cursorDist ?* ?cursorDist ?) ? ? ?cursorForce ?= ?displCursor.mulpply(func); ? ? ? ? ? ? ? ?} ? } ? §²§¡§³§¹§¦§´ ?§³§ª§­§½ ?§¬§µ§²§³§°§²§¡ ?
  • 48. 41 ?/ ?42 ? cursorForce ?= ?new ?Vector(0, ?0); ? ? if ?(cursorPos.x ?>= ?0) ?{ ? ?displCursor ?= ?obj.pos.subtract(cursorPos); ? ?cursorDist ?= ?displCursor.length(); ? ? ?if ?(cursorDist ?> ?1 ?&& ? ? cursorDist ?<= ?cursorForceZoomed) ?{ ? ? ? ? ? ? ? ? ? ?var ?func ?= ?cursorForceZoomed ?/ ?(cursorDist ?* ?cursorDist ?) ? ? ?cursorForce ?= ?displCursor.mulpply(func); ? ? ? ? ? ? ? ?} ? } ? §²§¡§³§¹§¦§´ ?§³§ª§­§½ ?§¬§µ§²§³§°§²§¡ ?
  • 49. cursorForce ?= ?new ?Vector(0, ?0); ? ? if ?(cursorPos.x ?>= ?0) ?{ ? ?displCursor ?= ?obj.pos.subtract(cursorPos); ? ?cursorDist ?= ?displCursor.length(); ? ? ?if ?(cursorDist ?> ?1 ?&& ? ? cursorDist ?<= ?cursorForceZoomed) ?{ ? ? ? ? ? ? ? ? ? ?var ?func ?= ?cursorForceZoomed ?/ ?(cursorDist ?* ?cursorDist ?) ? ? ?cursorForce ?= ?displCursor.mulpply(func); ? ? ? ? ? ? ? ?} ? } ? 41 ?/ ?42 ? §²§¡§³§¹§¦§´ ?§³§ª§­§½ ?§¬§µ§²§³§°§²§¡ ?
  • 50. §ª§Ó§Ñ§ß§à§Ó§Ñ ?§¦§Ý§Ö§ß§Ñ ? ? @liveldi90 ? ? physicsdemos.liveldi.ru ?