假設你有一個矩形,左下角的點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值的例子,你的測試失敗了,你覺得它不應該。 –
「但我認爲這是給我錯誤的答案」不夠好。你需要描述它在你眼中的失敗。讓我們猜測是不好的。 –