login писал(а):
обьекты - длинные полоски, их часто будут через серединку выбиратьДайте угадаю: полоски выравниваются по вертикали с определённым шагом, примерно равным их высоте, а по горизонтали - с шагом минимальных долей, так же отображаемых определённым фиксированным числом точек. Так вот что Вам мешает округлять все используемые в навигации координаты до ближайших "клеточек"? Делите нацело Y на шаг по вертикали, X - по горизонтали, получите относительный номер линии и доли в этой линии, на которую приходятся координаты (такое "округление" позволит рассматривать "полоски" как одномерные отрезки с выравненными по "клеткам" координатами начала и конца). В случае "полосок" достаточно отбирать те, что совпали по номеру линии (попали между границами рамки по вертикали), потом те, номер конечной иили начальной долей которых попадает в пределы, ограниченные рамкой. В зависимости от способа округления - в большую, в меньшую сторону, отбросом дробной части и т.п., меняется точность выбора рамкой, хотя имеет смысл рамку жёстко привязать к "клеткам" для наглядности (меньше ресурсов) либо подсвечивать "полоски" по мере выбора (больше ресурсов).