import { Vector2D } from './Vector2D'; export namespace Vector2DArray { export function equal(lhs: Vector2D[], rhs: Vector2D[]) { if (lhs.length !== rhs.length) return false; for (let i = 0; i < lhs.length; i++) if (!lhs[i].equals(rhs[i])) return false; return true; } export function deepEqual(lhs?: Vector2D[], rhs?: Vector2D[]) { if (lhs === undefined || rhs === undefined) return lhs === rhs; return equal(lhs, rhs); } export function fuzzyEqual(lhs: Vector2D[], rhs: Vector2D[], epsilon?: number) { if (lhs.length !== rhs.length) return false; for (let i = 0; i < lhs.length; i++) if (!lhs[i].fuzzyEquals(rhs[i], epsilon)) return false; return true; } export function fuzzyDeepEqual(lhs?: Vector2D[], rhs?: Vector2D[], epsilon?: number) { if (lhs === undefined || rhs === undefined) return lhs === rhs; return fuzzyEqual(lhs, rhs, epsilon); } export function compare(lhs: Vector2D[], rhs: Vector2D[]) { const lhsLength = lhs.length; const rhsLength = rhs.length; const minLength = Math.min(lhsLength, rhsLength); for (let i = 0; i < minLength; i++) { const result = Vector2D.compare(lhs[i], rhs[i]); if (result !== 0) return result; } return lhsLength < rhsLength ? -1 : lhsLength > rhsLength ? 1 : 0; } }