Пересечение прямой ячеек сетки
От: BYBelorus Беларусь N/A
Дата: 25.05.13 12:22
Оценка:
Добрый день.
Вопрос глупейший, подозреваю сказывается отсутствие ВО в области (менеджер самого среднего звена по образованию)

Есть сетка N x M, есть точка S(x,y) из которой проведена прямая в F(x,y).
Задача определить ячейки которые пересекаются прямой с некой толерантностью (если прямая идёт очень близко к некой ячейке но не пересекает её, мы всё равно засчитаем по причине попадания в зону толерантности).

Вот недокартинка иллюстрирующая что мне нужно.
https://www.dropbox.com/s/gjxdwqapyafdh69/Clipboard01.png
На картинке розовая — прямая, зеленое — зона толерантности, и алгоритм должен обозначить левую нижнюю ячейку как попадающую под прямую.

Сейчас алгоритм написан крайне неэффективно. Я прохожу по каждой точке прямой с константным небольшим шагом (около 1/100) размера ячейки и проверяю принадлежность точки на этом шаге какой либо ячейке. После этого проверяется зона вокруг точки (проверяю псевдоокружность с константным радиусом с шагом 45 градусов, и проверяю ячейки по этой окружности).

Оно примерно даёт то что нужно, но работает с совершенно неприемлемой скоростью да и точность далека от идеала (а для алгоритма крайне нежелательны false-negative результаты, уж лучше false-positive).

Подскажите пожалуйста в какую сторону покопать.
Ищу работу Windows Phone разработчиком.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.