var bx, by;
var ax, ay;
var cx, cy;
var a = new Array();
var b = new Array();
var sol = new Array();
var dx, dy;
var delta;
function sample(){
bx=-50;
by = Math.sqrt(100 * 100 - bx * bx);
ax = bx / 100;
ay=by/100;
cx = ay;
cy = -ax;
for(s=1;s<3;s++){
a[s]=new Array();
}
g = 9.8;
b[1] = 0;
b[2] = g;
a[1][1] = ax;
a[1][2] = cx;
a[2][1] = ay;
a[2][2] = cy;
var sub = new ex();
sub.a = a;
sub.b = b;
sub.number_mat = 2;
sub.cal();
sol = sub.sol;
delta = 0;
dt = 0.1;
dx = delta * cx;
dy = delta * cy;
dx = dx + dt * cx*sol[2];
dy = dy + dt * cy*sol[2];
bx = bx + dt * dx;
by = by + dt * dy;
delta = Math.sqrt(dx * dx + dy * dy);
var timer;
var delay = 100;
var loop = function () {
by = Math.sqrt(100 * 100 - bx * bx);
ax = bx / 100;
ay=by/100;
cx = ay;
cy = -ax;
b[1] = 0;
b[2] = g;
a[1][1] = ax;
a[1][2] = cx;
a[2][1] = ay;
a[2][2] = cy;
var sub = new ex();
sub.a = a;
sub.b = b;
sub.number_mat = 2;
sub.cal();
sol = sub.sol;
dx = delta * cx;
dy = delta * cy;
dx = dx + dt * cx*sol[2];
dy = dy + dt * cy*sol[2];
bx = bx + dt * dx;
by = by + dt * dy;
delta = Math.sqrt(dx * dx + dy * dy);
if(dx<0)delta=-delta;
paint();
clearTimeout(timer);
timer = setTimeout(loop, delay);
}
loop();
}
function paint(){
var sub5=new svgpaint();
str="<svg width=\"500\" height=\"500\">";
str=str+sub5.rect(250+bx,by,20,20,"red");
str=str+sub5.line(250+bx,by,250,0,2,"blue");
str=str+"</svg>";
$("#memo").html(str);
}
class ex{
a:any[]=new Array();
b:number[]=new Array();
sol:number[]=new Array();
number_mat:number;
cal():void{
var s,t,tx:number;
var z:number;
for(s=1;s<this.number_mat+1;s++){
for(t=1;t<this.number_mat+1;t++){
z=this.a[t][s]/this.a[s][s];
if(s==t)z=0;
for(tx=1;tx<this.number_mat+1;tx++){
this.a[t][tx]=this.a[t][tx]-z*this.a[s][tx];
}
this.b[t]=this.b[t]-z*this.b[s];
}
}
for(s=1;s<this.number_mat+1;s++){
this.sol[s]=this.b[s]/this.a[s][s];
}
}
}
最終更新:2015年10月13日 05:54