mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-06 08:25:19 +01:00
49 lines
1.2 KiB
TypeScript
49 lines
1.2 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 const TIGHT_TOLERANCE = 1e-6;
|
|
|
|
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);
|
|
}
|
|
|