gyrovector
Version:
Gyrovector classes for hyperbolic, Euclidean, and spherical geometries
55 lines (39 loc) • 1.58 kB
text/typescript
import { VectorLike } from '../src/vectorLike';
import { VectorSpaceLike } from '../src/vectorSpaceLike';
import { dp5 } from './dp5';
export const curvatureMinusOne = <
GyrovectorType extends VectorLike<2, GyrovectorType>,
>(
space: VectorSpaceLike<2, GyrovectorType>,
) => {
it(`adds`, () => {
const u = space.createVector(0.2, 0.5);
const v = space.createVector(-0.6, 0.1);
const result = u.add(v).array();
// Answer supplied from https://github.com/joshgreaves/Gyrovectors
expect(dp5(result)).toEqual(['-0.58307', '0.44454']);
});
it(`substracts`, () => {
const u = space.createVector(0.2, 0.5);
const v = space.createVector(-0.6, 0.1);
const result = u.add(v).sub(v).array();
expect(dp5(result)).toEqual(['0.20000', '0.50000']);
});
it(`multiplies`, () => {
const u = space.createVector(-0.2, 0.5);
const result = u.mult(2.5).array();
// Answer supplied from https://github.com/joshgreaves/Gyrovectors
expect(dp5(result)).toEqual(['-0.33651', '0.84127']);
});
it(`multiplies by zero`, () => {
const u = space.createVector(-0.2, 0.5);
const result = u.mult(0).array();
expect(dp5(result)).toEqual(['0.00000', '0.00000']);
});
it(`divides`, () => {
const u = space.createVector(-0.2, 0.5);
const result = u.div(0.4).array();
// Answer supplied from https://github.com/joshgreaves/Gyrovectors
expect(dp5(result)).toEqual(['-0.33651', '0.84127']);
});
};