UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

32 lines (30 loc) 830 B
/** * Get the X coordinate of a point with a certain Y coordinate, interpolated between two points. * Interpolation is robust even if the points have the same Y coordinate * @param {vec2} point1 * @param {vec2} point2 * @param {Number} y * @return {Array} X and Y of interpolated point * @alias module:modeling/maths/utils.interpolateBetween2DPointsForY */ const interpolateBetween2DPointsForY = (point1, point2, y) => { let f1 = y - point1[1] let f2 = point2[1] - point1[1] if (f2 < 0) { f1 = -f1 f2 = -f2 } let t if (f1 <= 0) { t = 0.0 } else if (f1 >= f2) { t = 1.0 } else if (f2 < 1e-10) { // FIXME Should this be EPS? t = 0.5 } else { t = f1 / f2 } const result = point1[0] + t * (point2[0] - point1[0]) return result } module.exports = interpolateBetween2DPointsForY