-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdynamic-test.js
More file actions
75 lines (51 loc) · 1.33 KB
/
dynamic-test.js
File metadata and controls
75 lines (51 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*
unit
mm, g,
k(N/m) =(pa * m)
N = kg m/s/s
N*10^6 g mm/s/s
MA = KX = MG
m/1000 * a/1000 = Kx/1000 = m/1000 G = mg/10^6
m/1000 * a = Kx = m G = mg/1000
*/
import Linkage from "./src/linkage.js";
const Unit = Linkage.Unit;
$(function(){
// create snew cene
var scene = new Linkage.Scene( Linkage.DynamicSolver );
scene.setGravity(true);
var dom = scene.initCanvas();
document.body.appendChild(dom);
// create points
const POINT_NUM = 2;
var points = [];
for( var i=0; i<POINT_NUM; i++){
points.push( new Linkage.Point("point0",
[0 , (50 - i*100) * Unit.mm],
/* fixed = */ i==0 || i==POINT_NUM,
/* mass = */ 100 * Unit.g));
scene.addPoint( points[i] );
if( i > 0){
// linear
var linear = new Linkage.Constraints.Linear( points[i-1], points[i]);
linear._springK = 1000.0;
scene.addConstraint( linear );
// damper
var damper = new Linkage.Constraints.LinearDamper( points[i-1], points[i], 1);
scene.addConstraint( damper );
}
if(1<i){
var rotational =
new Linkage.Constraints.RotationalSpring(points[i-2], points[i-1], points[i], 10.0);
scene.addConstraint( rotational);
}
}
console.log( `dof is ${scene.getDof()}`);
scene.solver.build();
function animate(){
requestAnimationFrame( animate );
scene.update();
scene.render();
}
animate();
});