jsketcher/modules/geom/tolerance.ts
Val Erastov (xibyte) e11c1f7f4a geom module
2020-07-19 22:37:24 -07:00

48 lines
1.1 KiB
TypeScript

import {distanceSquared3} from "math/distance";
import {areEqual, areNegVectorsEqual, areVectorsEqual, areVectorsEqual3} from "math/equality";
export const TOLERANCE = 1e-3;
export const TOLERANCE_SQ = TOLERANCE * TOLERANCE;
export const EPSILON = 1e-12;
export const EPSILON_SQ = EPSILON * EPSILON;
//tolerance used for parametric domain which is between 0..1
export const TOLERANCE_01 = TOLERANCE * 1e-2;
export const TOLERANCE_01_SQ = TOLERANCE * TOLERANCE;
export const NUMERICAL_SOLVE_TOL = 1e-8;
export function eqTol(a, b) {
return areEqual(a, b, TOLERANCE);
}
export function eqSqTol(a, b) {
return areEqual(a, b, TOLERANCE_SQ);
}
export function eqEps(a, b) {
return areEqual(a, b, EPSILON);
}
export function veq(a, b) {
return areVectorsEqual(a, b, TOLERANCE_SQ);
}
export function veqNeg(a, b) {
return areNegVectorsEqual(a, b, TOLERANCE_SQ);
}
export function veq3(a, b) {
return areVectorsEqual3(a, b, TOLERANCE_SQ);
}
export function veqXYZ(x1, y1, z1, x2, y2, z2) {
return distanceSquared3(x1, y1, z1, x2, y2, z2) < TOLERANCE_SQ;
}
export function ueq(a, b) {
return areEqual(a, b, TOLERANCE_01);
}