C++ 判断点是否在边上的函数: isOnSide() 解释
该函数 isOnSide(Point p, Side e) 用于判断一个点 p 是否在给定的边 e 上。
首先,函数会判断点的横坐标是否在边的横坐标范围内,如果不在,则肯定不在边上,直接返回 false。
接着,函数会计算出边的斜率,即 (e.end.y - e.start.y) / (e.end.x - e.start.x)。这里使用了斜率公式,即斜率等于两点之间纵坐标的差除以横坐标的差。
然后,函数会计算出点在边上的纵坐标,即斜率乘以点到边起点的横坐标距离再加上边起点的纵坐标。这里使用了点斜式公式,即 y - y1 = k(x - x1),其中 k 为斜率,(x1, y1) 为边的起点坐标。
最后,函数会判断点的纵坐标是否等于计算出来的纵坐标,如果是,则说明点在边上,返回 true,否则返回 false。
总之,该函数的实现就是利用了直线的斜率和点斜式公式,判断点是否在直线上。
bool isOnSide(Point p, Side e) {
if (p.x < e.start.x || p.x > e.end.x) {
return false;
}
double slope = (e.end.y - e.start.y) / (e.end.x - e.start.x);
double y = slope * (p.x - e.start.x) + e.start.y;
return p.y == y;
}
原文地址: https://www.cveoy.top/t/topic/jl8Y 著作权归作者所有。请勿转载和采集!