UNPKG

@technobuddha/library

Version:
21 lines 1.93 kB
import { isOnLine } from "./is-on-line.js"; import { lineLength } from "./line-length.js"; /** * Determines whether a given point lies on a specified line segment within a certain tolerance. * * @param point - The Cartesian coordinates of the point to check. * @param line - The line segment defined by its endpoints. * @param epsilon - Optional tolerance for floating-point comparisons (default is 1e-10). * @returns `true` if the point lies on the line segment within the given tolerance, otherwise `false`. * * @group Geometry * @category Line Segment * @category Point */ export function isOnLineSegment(point, line, epsilon = 1e-10) { const len = lineLength(line); return (isOnLine(point, line, epsilon) && lineLength({ x0: line.x0, y0: line.y0, x1: point.x, y1: point.y }) <= len && lineLength({ x0: line.x1, y0: line.y1, x1: point.x, y1: point.y }) <= len); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtb24tbGluZS1zZWdtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2lzLW9uLWxpbmUtc2VnbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFnQixFQUFFLElBQWlCLEVBQUUsT0FBTyxHQUFHLEtBQUs7SUFDbEYsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLE9BQU8sQ0FDTCxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7UUFDOUIsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUc7UUFDekUsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FDMUUsQ0FBQztBQUNKLENBQUMifQ==