jsketcher/modules/math/equality.ts

36 lines
No EOL
991 B
TypeScript

import {distanceSquared3, distanceSquaredAB3, distanceSquaredANegB3} from "math/distance";
export const TOLERANCE = 1E-6;
export const TOLERANCE_SQ = TOLERANCE * TOLERANCE;
export function areEqual(v1, v2, tolerance) {
return Math.abs(v1 - v2) < tolerance;
}
export function areVectorsEqual(v1, v2, toleranceSQ) {
return areEqual(distanceSquaredAB3(v1, v2), 0, toleranceSQ);
}
export function areNegVectorsEqual(v1, v2, toleranceSQ) {
return areEqual(distanceSquaredANegB3(v1, v2), 0, toleranceSQ);
}
export function areVectorsEqual3(v1, v2, toleranceSQ) {
return areEqual(distanceSquared3(v1[0], v1[1], v1[2], v2[0], v2[1], v2[2]), 0, toleranceSQ);
}
export function vectorsEqual(v1, v2) {
return areVectorsEqual(v1, v2, TOLERANCE_SQ);
}
export function equal(v1, v2) {
return areEqual(v1, v2, TOLERANCE);
}
export function strictEqual(a, b) {
return a.x == b.x && a.y == b.y && a.z == b.z;
}
export function strictEqual2D(a, b) {
return a.x == b.x && a.y == b.y;
}