UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

25 lines (20 loc) 681 B
const vec3 = require('../vec3') /** * Determine the closest point on the given line to the given point. * * @param {line3} line - line of reference * @param {vec3} point - point of reference * @returns {vec3} a point * @alias module:modeling/maths/line3.closestPoint */ const closestPoint = (line, point) => { const lpoint = line[0] const ldirection = line[1] const a = vec3.dot(vec3.subtract(vec3.create(), point, lpoint), ldirection) const b = vec3.dot(ldirection, ldirection) const t = a / b const closestpoint = vec3.scale(vec3.create(), ldirection, t) vec3.add(closestpoint, closestpoint, lpoint) return closestpoint } module.exports = closestPoint