新增工具方法

This commit is contained in:
fan 2023-07-13 16:12:44 +08:00
parent 0a0cb0a77a
commit f9bb2279e8

View File

@ -517,3 +517,34 @@ export function angleOfIncludedAngle(
}
return angle;
}
/**
* 线
* @param point
* @param start 线
* @param end 线
* @returns
*/
export function isPointOnLineSegment(
point: IPointData,
start: IPointData,
end: IPointData
) {
// 计算向量AB和向量AC的叉积
const crossProduct =
(end.y - start.y) * (point.x - start.x) -
(end.x - start.x) * (point.y - start.y);
// 如果叉积为0则点在直线上
if (crossProduct === 0) {
// 接下来判断点是否在线段上
if (
point.x >= Math.min(start.x, end.x) &&
point.x <= Math.max(start.x, end.x) &&
point.y >= Math.min(start.y, end.y) &&
point.y <= Math.max(start.y, end.y)
) {
return true; // 点在线段上
}
}
return false; // 点不在线段上
}