@technobuddha/library
Version: 
A large library of useful functions
21 lines • 1.93 kB
JavaScript
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==