Зачем объекту невидимая рамка

Сложная модель в игре или графическом редакторе может состоять из тысяч поверхностей и мелких деталей. Если при каждом движении мыши проверять, коснулся ли курсор каждой из них, интерфейс тратил бы время на множество заведомо ненужных вычислений. Поэтому вокруг модели помещают простую ограничивающую область — обычно коробку или другую геометрическую фигуру, которая полностью охватывает объект, но не видна пользователю.

Быстрая проверка отсекает лишнюю работу

Сначала программа проверяет, попал ли курсор в эту область. Если нет, искать точное пересечение с моделью бессмысленно: курсор заведомо далеко. Если попал — это ещё не означает, что объект выбран. Курсор мог оказаться в пустом углу рамки, поэтому только теперь система проверяет его положение относительно настоящей геометрии.

Такой двухэтапный поиск похож на проверку адреса по крупной карте, а затем по подробному плану: сначала быстро выяснить, находится ли точка в нужном районе, и лишь потом разбирать детали. Особенно заметна экономия, когда на экране много объектов или модели сложны, а курсор постоянно движется.

Почему рамка не должна быть точной

Рамку выбирают не ради красивого совпадения с контуром, а ради дешёвой проверки. Чем проще её форма, тем быстрее вычислить попадание; зато слишком свободная рамка чаще пропускает курсор на второй, более дорогой этап. Это компромисс между скоростью и числом лишних точных проверок.

Для пользователя рамка остаётся невидимой: она не меняет вид объекта и не ограничивает возможные действия. Она лишь помогает программе быстро решить, когда вообще стоит присматриваться к модели в подробностях.