gyrovector
Version:
Gyrovector classes for hyperbolic, Euclidean, and spherical geometries
39 lines (32 loc) • 879 B
text/typescript
import { VectorLike } from './vectorLike';
import { VectorSpaceLikeWithoutCreate } from './vectorSpaceLike';
/**
* Base class making it easy to define vector spaces which are mostly boilerplate
*/
export class VectorSpaceBase<
Dimension extends number,
Vector extends VectorLike<Dimension, Vector>,
> implements VectorSpaceLikeWithoutCreate<Dimension, Vector>
{
constructor() {}
add(u: Vector, v: Vector): Vector {
return u.add(v);
}
sub(u: Vector, v: Vector): Vector {
return u.sub(v);
}
mult(c: number, u: Vector): Vector {
return u.mult(c);
}
div(c: number, u: Vector): Vector {
return u.div(c);
}
rotate(
u: Vector,
radians: number,
firstAxis?: number,
secondAxis?: number,
): Vector {
return u.rotate(radians, firstAxis, secondAxis);
}
}