2010-11-01 2 views
1

Я проверяю пересечение двух объектов .. и у меня есть класс MBR с данными, мнимыми низкими [2] и высокими [2] .. но я не получаю 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

Что вы подразумеваете под "intersect"? То есть что вы ожидаете? (Вот почему недостоверные имена, такие как «MBR», плохи) –

+0

«Но я не собираюсь пересекаться», я думаю, он спрашивает, что делает функция «пересекает». Это может быть просто функция с совпадающим именем. – irrelephant

+0

@irrelephant: Хм .. Я разбираю это как «Я не получаю ожидаемый расчет, который должен быть пересечением». Но я полагаю, что это может быть «Я тоже не понимаю, пересекаюсь» ... Я полагаю, что это проблема, когда не нужно время, чтобы не использовать сленг в вопросах - это приводит к двусмысленности при использовании в письменной форме. –

ответ

3

intersects сравнивает MBR на другой MBR и возвращает значение FALSE, если любое из значений в первой МБР-х low[] больше, чем значения (в соответствующих индексов) во втором MBR-х high[] или если любое из значений в первые MBR high[] меньше значений (в соответствующих индексах) во втором MBR low[]. В противном случае возвращается TRUE.

+0

+1 - потому что это правильный ответ, предполагающий правильный перевод «Я не получаю intersect "is" Я не понимаю, что функция 'intersect' вычисляет". Если ответ OP указывает, что это его предназначение, я также удалю свой ответ. –

+0

, но это функция найти пересечение? и MBR на самом деле является минимальной ограничивающей рамкой – piyapiya

+0

@piyapiya: это похоже на то, что вы подразумеваете «включение», а не «пересечение». То есть вы говорите, что две точки определяют четырехугольник и хотят знать, может ли один такой четырехугольник поместиться внутри другого. –

1

Не совсем уверен, что вы подразумеваете под пересечением. Если вы говорите о пересечении множеств, вы, вероятно, должны использовать std::set_intersection, а не пытаться самостоятельно реализовать это. Помните, что std::set_intersection требует, чтобы вход уже отсортирован.

+0

, но в моем случае пользователь дает две точки p1 и p2 в форме x и y .. теперь я wan tot find пересекаюсь .. если вы знаете около 9 моделей пересечений и минимальную ограничительную рамку MBR, чем вы понять, что я хочу делать .. но я не получаю эту функцию ... как ее найти пересечение с моим классом MBR (два члена данных с низким [2] и высоким [2]) .. – piyapiya

+0

и еще одно: я не понимаю использование const внутри функции, в начале и конце прототипа функции. plz ссылается на ссылку, связанную только с использованием констант. – piyapiya

+0

@piyapiya: Я не знаю математической концепции, которая говорит о двух моментах, которые могут «пересекаться». Возможно, две линии или лучи, или сегменты линии, но не точки. –

1

Если верхняя граница одной коробки меньше нижней границы другого блока, то два окна не пересекаются. Точно так же, если нижняя граница одной коробки больше верхней границы другой коробки. В противном случае два поля пересекаются.

Эта проверка выполняется как для X-, так и для Y-координат.

Смежные вопросы