Pull to refresh

Comments 8

Описание луча прямой — не самая светлая идея. Как минимум конус (с большим весом вдоль оси, чем по краям).


Впрочем, если лучей не очень много — можно обойтись без воксельного пространства вообще. "Пересечения" ищутся просто — достаточно искать не точку пересечения, а две ближайшие точки прямых. Проходим по всем парам прямых, считаем, оставляем только те, где расстояние мало (сложность: "малость" расстояния зависит от расстояния до пеленгатора). Потом каждую точку проверяем на близость к остальным лучам (или просто прогоняем по серединам отрезков какой-то алгоритм поиска кластеров).
Но с вокселями код всяко проще отладить.

Проходим по всем парам прямых ...

Да, этот вариант, думаю, будет поточнее, но тут есть тонкость: мы получаем кубическую ассимптотику, и при большом числе лучей производительность просядет.

А с конусами интересно, надо будет попробовать.

Меньше, чем кубическую: первый проход — по парам прямых O(nn), из nn точек оставляем m — второй проход O(m*n).
Но всё равно воксельная модель проще (в смысле, в её реализации труднее накосячить).

Но в плохом случае m = O(n*n), в результате получаем второй проход O(m*n) = O(n*n*n).

Нет-нет, такой плохой случай можно исключить сразу. Если у нас получилось n*n равноправных точек — они или все ложные, или все истинные (и тогда можно просто выбрать из них часть более-менее произвольно — например, по 2 точки на прямую).


Впрочем, это всё неважно — у вас уже есть более простой работоспособный алгоритм, позволяющий модификации "малой кровью".

Возможно подобным образом искать устройства, которые подключились к определенной Wi-Fi-точке?
Можно, но абонентские устройства искать намного сложнее, так как они не спешат сообщать свой идентификатор по широковещательному каналу.

Upd: не туда ответил.
Sign up to leave a comment.

Articles