假设你有一个矩形,左下角的点0,0和右上角的点是100,100。 现在两条线相交矩形。我必须找出交点的坐标。我已经做到了。现在的问题是我不知道它是否在矩形内。我用双重比较。但我认为这是给我错误的答案。假设交点是(x,y)。我用这种检查进行比较:如果(X> = 0.0 & & X < = 100.0 & & Y> = 0.0 & &Ŷ< = 100.0)。我该怎么办?C++浮点比较
//this function generates line
line genline(int x1 , int y1 , int x2 , int y2){
line l ;
l.A = y2 - y1 ;
l.B = x1 - x2 ;
l.C = l.A * x1 + l.B * y1 ;
return l ;
}
//this function checks intersection
bool intersect(line m ,line n) {
int det = m.A * n.B - m.B * n.A ;
if(det == 0){
return false ;
}
else {
double x = (n.B * m.C - m.B * n.C)/(det * 1.0) ;
double y = (m.A * n.C - n.A * m.C)/(det * 1.0) ;
if(x >= 0.0 && x <= L && y >= 0.0 && y <= W) { return true ; }
else{ return false ; }
}
}
编辑: 这两个线被拉伸到无限。
你确定你的交点计算是正确的吗?我们可以看到更多的代码吗? – quasiverse
你的矩形测试很好。请描述你为什么认为失败。请给出一个x,y值的例子,你的测试失败了,你觉得它不应该。 –
“但我认为这是给我错误的答案”不够好。你需要描述它在你眼中的失败。让我们猜测是不好的。 –