fabric-texture
Version:
This JavaScript library enables fast and efficient image distortion transformations using Canvas 2D.
46 lines (45 loc) • 1.49 kB
TypeScript
/**
* 计算点到直线的垂足坐标
*
* 计算从指定点到直线的垂线与该直线的交点(垂足)坐标。
* 该函数处理了所有可能的情况,包括:
* 1. 直线垂直于 y 轴
* 2. 直线垂直于 x 轴
* 3. 一般情况的斜线
*
* 计算步骤:
* 1. 处理特殊情况(垂直于坐标轴的直线)
* 2. 计算直线斜率
* 3. 计算垂线斜率(与原直线斜率互为负倒数)
* 4. 通过联立方程求解交点
*
* @param p1 - 直线的起点坐标
* @property {number} x - x坐标
* @property {number} y - y坐标
* @param p2 - 直线的终点坐标
* @property {number} x - x坐标
* @property {number} y - y坐标
* @param p0 - 需要计算垂足的点坐标
* @property {number} x - x坐标
* @property {number} y - y坐标
*
* @returns {Coord} 垂足坐标
* @property {number} x - 垂足的x坐标
* @property {number} y - 垂足的y坐标
*
* @example
* ```typescript
* const start = { x: 0, y: 10 };
* const end = { x: 20, y: 10 };
* const point = { x: 5, y: 15 };
*
* const intersection = calcPerpendicularIntersection(start, end, point);
* console.log(intersection); // { x: 5, y: 10 }
* ```
*
* @remarks
* - 输入的两点不能重合,否则无法确定直线
* - 返回的坐标总是在直线上
* - 适用于直线而不限于线段(交点可能在延长线上)
*/
export declare const calcPerpendicularIntersection: (p1: Coord, p2: Coord, p0: Coord) => Coord;