jsketcher/modules/math/vectorFactory.ts
2022-08-15 23:47:20 -07:00

37 lines
No EOL
724 B
TypeScript

import {veqXYZ} from 'geom/tolerance';
import Vector from './vector';
export default class VectorFactory {
vectors: Vector[];
constructor() {
this.vectors = [];
}
addVertices(vertices: Vector[]) {
for (const v of vertices) {
this.vectors.push(v);
}
}
find(x, y, z): Vector {
for (const v of this.vectors) {
if (veqXYZ(v.x, v.y, v.z, x, y, z)) {
return v;
}
}
return null;
}
create(x, y, z, onExistent?): Vector {
let vector = this.find(x, y, z);
if (vector === null) {
vector = new Vector(x, y, z);
this.vectors.push(vector);
} else if (onExistent !== undefined) {
return onExistent(vector);
}
return vector;
}
}