我正在检查两个对象的交集..我有一个类MBR,数据会员低[2]和高[2] ..但我不是getiing intersect..c你解释这个函数..
intersects(const MBR* h) const
{
for (int i = 0; i < 2; i++)
{
if (low_[i] > h->high_[i] || high_[i] < h->low_[i])
return FALSE;
}
return TRUE;
答案 0 :(得分:3)
intersects
将MBR与另一个MBR进行比较,如果第一个MBR low[]
中的任何值大于第二个MBR {{1}中的值(在各个索引中),则返回FALSE或者,如果第一个MBR的high[]
中的任何值小于第二个MBR的high[]
中的值(在相应的索引中)。否则返回TRUE。
答案 1 :(得分:1)
不太确定你的意思是交叉。如果你在谈论集合的交集,你应该使用std::set_intersection
而不是试图自己实现这种事情。请记住,std::set_intersection
要求输入已经排序。
答案 2 :(得分:1)
如果一个框的上边框小于另一个框的下边框,则两个框不相交。同样,如果一个盒子的下边框大于另一个盒子的上边框。否则两个框相交。
对X坐标和Y坐标都进行了检查。