68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
import assert from 'node:assert';
|
|
import { Vec2, Circle } from '../src/2d.js';
|
|
|
|
describe('Vec2', function () {
|
|
it('construct', function() {
|
|
let p = new Vec2(1, 2);
|
|
assert.equal(p.x, 1);
|
|
assert.equal(p.y, 2);
|
|
});
|
|
|
|
it('equal', function() {
|
|
assert.ok((new Vec2(1, 2)).equal(new Vec2(1, 2)));
|
|
assert.ok(!(new Vec2(1, 2)).equal(new Vec2(1, 12)));
|
|
});
|
|
|
|
it('vector calculation', function() {
|
|
let p = new Vec2(2, 4), q = new Vec2(3, 1);
|
|
assert.ok(p.add(q).equal(new Vec2(5, 5)));
|
|
assert.ok(p.sub(q).equal(new Vec2(-1, 3)));
|
|
assert.ok(p.mul(1.5).equal(new Vec2(3, 6)));
|
|
assert.ok(p.yx().equal(new Vec2(4, 2)));
|
|
});
|
|
|
|
it('vector calculation(TO)', function () {
|
|
let p = new Vec2(2, 4), q = new Vec2(3, 1);
|
|
p.addTo(q);
|
|
assert.ok(p.equal(new Vec2(5, 5)));
|
|
p.subTo(q);
|
|
assert.ok(p.equal(new Vec2(2, 4)));
|
|
p.mulTo(1.5);
|
|
assert.ok(p.equal(new Vec2(3, 6)));
|
|
});
|
|
|
|
it('abs & norm', function() {
|
|
let p = new Vec2(3, 4);
|
|
assert.equal(p.abs(), 5);
|
|
assert.equal(p.norm(), 25);
|
|
});
|
|
|
|
it('complex calculation', function() {
|
|
let p = new Vec2(1, 4), q = new Vec2(0, 1);
|
|
assert.ok(p.complexMul(q).equal(new Vec2(-4, 1)));
|
|
assert.ok(p.complexDiv(q).equal(new Vec2(4, -1)));
|
|
assert.equal(q.arg(), Math.PI / 2);
|
|
});
|
|
|
|
it('dot & cross product', function() {
|
|
let p = new Vec2(2, 4), q = new Vec2(3, 1);
|
|
assert.equal(p.dot(q), 10);
|
|
assert.equal(p.cross(q), -10);
|
|
});
|
|
|
|
it('circle intersect', function() {
|
|
let c1 = new Circle(new Vec2(0, 0), 1);
|
|
let c2 = new Circle(new Vec2(0, 1.5), 1);
|
|
let c3 = new Circle(new Vec2(2, 2), 1);
|
|
assert.ok(Circle.intersect(c1, c2));
|
|
assert.ok(!Circle.intersect(c1, c3));
|
|
});
|
|
|
|
it('circle collision elimation', function() {
|
|
let c1 = new Circle(new Vec2(0, 0), 1);
|
|
let c2 = new Circle(new Vec2(0, 1.5), 1);
|
|
assert.ok(Circle.collisionElimation(c1, c2));
|
|
assert.ok(c1.equal(new Circle(new Vec2(0, -.25), 1)));
|
|
assert.ok(c2.equal(new Circle(new Vec2(0, 1.75), 1)));
|
|
});
|
|
}); |