牛顿摆是一个1960年代发明的桌面演示装置,五个质量相同的球体由吊绳固定,彼此紧密排列。又叫:牛顿摆球、动量守恒摆球、永动球、物理撞球、碰碰球等。
(function(window,undefined){
window.None || (window.None = {});
//重力加速度
var G=9.8;
var PI=Math.PI;
//帧频
var FPS=48;
//外部函数引用
//是否IE
function isIE(){
return navigator.userAgent.indexOf("MSIE")>-1;
}
//获取当前样式
function returnStyle(obj,styleName){
var myObj = typeof obj == "string" ? document.getElementById(obj) : obj;
if(document.all){
return eval("myObj.currentStyle." + styleName);
} else {
return eval("document.defaultView.getComputedStyle(myObj,null)." + styleName);
}
}
//外部函数引用
//图片方法
var img=function(src){
var img=new Image();
img.src=src;
return img;
}
//方向类,以垂直向下为0度逆时针为正
var face=function(deg,rad){
//0-360
this.unit='deg';
if(rad)deg=180/PI*deg;
this.deg=deg;
this.rad=PI/180*this.deg;
}
//矢量类
var vector=function(size,fx){
var cstrct=this.constructor;
this.size=size;
this.face=fx||new face(0);
fx=this.face;
this.toHv=function(){
var h=new cstrct(Math.sin(fx.rad)*size,90);
var v=new cstrct(Math.cos(fx.rad)*size,0);
return [h,v];
}
}
//继承,obj:需要从矢量继承的对象,arg:arguments
vector.extend=function(obj,arg){
vector.apply(obj,arg);
}
//矢量合并方法
vector.merger=function(arrvector){
if(arguments.length>1)arrvector=arguments;
var cstrct=arrvector[0].constructor;
var i=0,ilav=arrvector.length;
var sum=[0,0];
for(;i=m){
self.rigid.rotate(new face(0),self.axis);
clearTimeout(tid);
i=-m;
if(fun)fun();
return;
}
var f=new face(y,'rad');
self.rigid.rotate(f,axis=self.axis);
i+=fm;
tid=setTimeout(function(){self.swing.call(self,o,fun)},t);
}
this.moveTo=function(p){
self.body.style.left=p.x+"px";
self.body.style.top=p.y+"px";
}
}
//世界
None.world=function(param){
//param:{force:[多个force对象]}
this.param=param||{};
this.config={
//全局外力
g:new a(G),
className:'',
width:'100%',
height:'100%',
left:0,
top:-200,
arrNav:['about','myWork','site','other','myTools'],
imgW:60,
imgN:5,
sDeg:5,
hitSound:'sounds/hit.wav',
vol:0.1
}
this.init();
};
None.world.prototype={
//初始化
dom:{},
init:function(){
var c=this.config;
var p=this.param;
//dom
var dom=document.createElement("div");
dom.className=c.className;
dom.style.position="absolute";
dom.style.width=p.width||c.width;
dom.style.height=p.height||c.height;
dom.style.left=(p.left||c.left) +"px";
dom.style.top=(p.top||c.top) +"px";
this.dom=dom;
document.body.appendChild(this.dom);
},
//添加一个刚体
addRigid:function(rigid,p){
if(!(rigid instanceof Array)){
rigid=[rigid];
}
if(!p)p=[point(0,0)];
if(!(p instanceof Array))p=[p];
for(var i=0,rl=rigid.length;i
以上所述就是本文的全部内容了,希望大家能够喜欢。能够对大家学习javascript有所帮助。



