flow like the river
This commit is contained in:
commit
013fe673f3
42435 changed files with 5764238 additions and 0 deletions
68
VISUALIZACION/node_modules/ngraph.forcelayout/test/eulerIntegrator.js
generated
vendored
Executable file
68
VISUALIZACION/node_modules/ngraph.forcelayout/test/eulerIntegrator.js
generated
vendored
Executable file
|
|
@ -0,0 +1,68 @@
|
|||
var test = require('tap').test;
|
||||
var dimensions = 2;
|
||||
var Body = require('../lib/codeGenerators/generateCreateBody')(dimensions);
|
||||
var integrate = require('../lib/codeGenerators/generateIntegrator')(dimensions);
|
||||
|
||||
test('Body preserves velocity without forces', function (t) {
|
||||
var body = new Body();
|
||||
var timeStep = 1;
|
||||
body.mass = 1; body.velocity.x = 1;
|
||||
|
||||
integrate([body], timeStep);
|
||||
t.equal(body.pos.x, 1, 'Should move by 1 pixel on first iteration');
|
||||
|
||||
timeStep = 2; // let's increase time step:
|
||||
integrate([body], timeStep);
|
||||
t.equal(body.pos.x, 3, 'Should move by 2 pixel on second iteration');
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('Body gains velocity under force', function (t) {
|
||||
var body = new Body();
|
||||
var timeStep = 1;
|
||||
body.mass = 1; body.force.x = 0.1;
|
||||
|
||||
// F = m * a;
|
||||
// since mass = 1 => F = a = y';
|
||||
integrate([body], timeStep);
|
||||
t.equal(body.velocity.x, 0.1, 'Should increase velocity');
|
||||
|
||||
integrate([body], timeStep);
|
||||
t.equal(body.velocity.x, 0.2, 'Should increase velocity');
|
||||
// floating point math:
|
||||
t.ok(0.29 < body.pos.x && body.pos.x < 0.31, 'Position should be at 0.3 now');
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('No bodies yield 0 movement', function (t) {
|
||||
var movement = integrate([], 2);
|
||||
t.equal(movement, 0, 'Nothing has moved');
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('Body does not move faster than 1px', function (t) {
|
||||
var body = new Body();
|
||||
var timeStep = 1;
|
||||
body.mass = 1; body.force.x = 2;
|
||||
|
||||
integrate([body], timeStep);
|
||||
t.ok(body.velocity.x <= 1, 'Velocity should be within speed limit');
|
||||
|
||||
integrate([body], timeStep);
|
||||
t.ok(body.velocity.x <= 1, 'Velocity should be within speed limit');
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('Can get total system movement', function (t) {
|
||||
var body = new Body();
|
||||
var timeStep = 1;
|
||||
body.mass = 1; body.velocity.x = 0.2;
|
||||
|
||||
var movement = integrate([body], timeStep);
|
||||
// to improve performance, integrator does not take square root, thus
|
||||
// total movement is .2 * .2 = 0.04;
|
||||
t.ok(0.04 <= movement && movement <= 0.041, 'System should travel by 0.2 pixels');
|
||||
t.end();
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue