"Уточняющее прицеливание"

From
Alex Astafiev (2:5000/228.16)
To
Nickita A Startcev
Date
2002-05-07T05:00Z
Area
RU.ALGORITHMS
Здравствуй Nickita, ничего, если я тут на диванчик прилягу?

 NAS> Есть одномерный массив элементов (x,y,data), где x,y - координаты
 NAS> этого псевдоточечного объекта. Диапазон в котором лежат координаты
 NAS> известен.

 NAS>
 NAS> Можно ли найти ближайший к X0,Y0 объект быстрее, чем за o(n) ?
 NAS>
 NAS> Есть ли решение более быстрое чем нижеприведенное?
 NAS>
 NAS> 1) берем расстояние до первого объекта, запоминаем вместе с номером
 NAS> объекта. 2) перебираем подряд оставшиеся объекты, если попался более
 NAS> близкий - 'перезапоминаем' расстояние и номер.

Если диапазон координат известен, то
 Quadtree. Далее, выбор каждого листа дерева - хэш-функция от положения
мыши внутри квадрата. и так - до конкретной точки.

В простейшем случае, один прямой хэш из одной lookup-table:

void int get_point_index()
{
 return point_indexes[mouse.y][mouse.x];
}

только lookup табличка point_indexes[][] будет великовата. В аккурат по
величине экрана, X*Y.

это o(n) или быстрее?  >8-E)

---
 * Origin: Alex Raider/ Flash inc. 1992-2002 (2:5000/228.16)