アットウィキロゴ

ex9654

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