Добрый день.
Вопрос глупейший, подозреваю сказывается отсутствие ВО в области (менеджер самого среднего звена по образованию)
Есть сетка N x M, есть точка S(x,y) из которой проведена прямая в F(x,y).
Задача определить ячейки которые пересекаются прямой с некой толерантностью (если прямая идёт очень близко к некой ячейке но не пересекает её, мы всё равно засчитаем по причине попадания в зону толерантности).
Вот недокартинка иллюстрирующая что мне нужно.
https://www.dropbox.com/s/gjxdwqapyafdh69/Clipboard01.png
На картинке розовая — прямая, зеленое — зона толерантности, и алгоритм должен обозначить левую нижнюю ячейку как попадающую под прямую.
Сейчас алгоритм написан крайне неэффективно. Я прохожу по каждой точке прямой с константным небольшим шагом (около 1/100) размера ячейки и проверяю принадлежность точки на этом шаге какой либо ячейке. После этого проверяется зона вокруг точки (проверяю псевдоокружность с константным радиусом с шагом 45 градусов, и проверяю ячейки по этой окружности).
Оно примерно даёт то что нужно, но работает с совершенно неприемлемой скоростью да и точность далека от идеала (а для алгоритма крайне нежелательны false-negative результаты, уж лучше false-positive).
Подскажите пожалуйста в какую сторону покопать.