<分区>
今天看书的时候,发现了如下代码,判断两条线是否相交:
struct Line{
static double epsilon = 0.000001;
double slope;
double yintercept;
};
bool intersect(Line& line_1, Line& line_2)
{
bool ret_1 = abs(line_1.slope - line_2.slope) > epsilon;
bool ret_2 = abs(line_1.yintercept - line_2.yintercept) < epsilon;
return ret_1 || ret_2;
}
程序使用斜率和 y 轴截距来确定两条线是否相交。但是,我在这里很困惑为什么我们需要 epsilon
?为什么这里不能直接使用'=='?
这个方法下面有个通用的。作者说永远不要用 == 检查相等性。相反,检查差异是否小于 epsilon 值。