@js-draw/math
Version:
A math library for js-draw.
33 lines (26 loc) • 920 B
text/typescript
import { Vec2 } from './Vec2';
import Vec3 from './Vec3';
describe('Vec2', () => {
it('Magnitude', () => {
expect(Vec2.of(3, 4).magnitude()).toBe(5);
});
it('Addition', () => {
expect(Vec2.of(1, 2).plus(Vec2.of(3, 4))).objEq(Vec2.of(4, 6));
expect(Vec2.of(1, 2).plus(Vec3.of(3, 4, 1))).objEq(Vec3.of(4, 6, 1));
});
it('Multiplication', () => {
expect(Vec2.of(1, -1).times(22)).objEq(Vec2.of(22, -22));
expect(Vec2.of(1, -1).scale(Vec3.of(-1, 2, 3))).objEq(Vec2.of(-1, -2));
});
it('More complicated expressions', () => {
expect(Vec2.of(1, 2).plus(Vec2.of(3, 4)).times(2)).objEq(Vec2.of(8, 12));
});
it('Angle', () => {
expect(Vec2.of(-1, 1).angle()).toBeCloseTo((3 * Math.PI) / 4);
});
it('Perpindicular', () => {
const tolerance = 0.001;
expect(Vec2.unitX.cross(Vec3.unitZ)).objEq(Vec2.unitY.times(-1), tolerance);
expect(Vec2.unitX.orthog()).objEq(Vec2.unitY, tolerance);
});
});