2016-12-20 3 views
0

У меня есть сетка, каждая ячейка которой определяется ее координатами x и y (целые числа). Эта сетка имеет ширину 100x100.Алгоритм Брешенема с одной точкой и углом

Я даюсь ячейку (x0, y0) и угол A.

Моя цель состоит, чтобы иметь возможность получить координаты всех ячеек, пересекаемых линией ((x0, y0), A), внутри сетки.

Как это сделать? Проблема в том, что у меня нет длины строки ...

Я думал о том, чтобы найти второй пункт, а затем использовать алгоритм Брешенема, но слишком сложно его вычислить, потому что вторая точка, которую я нахожу, обычно вне моей сетки. Таким образом, я думал о модификации алгоритма Брешенема (http://www.roguebasin.com/index.php?title=Bresenham%27s_Line_Algorithm#Python), но я не знаю, как это сделать, учитывая, что алгоритм основан на том, что у нас есть две точки на входе! :/

Заранее благодарю вас за помощь.

+1

Использовать тот факт, что '(y1 - y0)/(x1 - x0) = tan (A)' для вычисления второй точки. –

+0

«все ячейки, пересекаемые линией ...», создает более толстую угловую линию, где каждая ячейка соединена с вертикальным или горизонтальным соседом. Алгоритм Брешенема создает другую более тонкую линию, где ячейки могут соединяться по диагонали. Почему ты хочешь? –

ответ

0

Предположим, что угол таков, что линия выйдет из сетки вдоль оси х до выхода вдоль оси y. Это означает, что вы знаете координату x конца этой строки и можете вычислить ее координату y, используя формулу, данную @AxelKemper. (Если нужно, поменяйте роли xy в приведенном выше.) Если вы не можете сказать, что это за случай, просто выберите один, выполните вычисление, и если он выпадет вне сетки, используйте другой случай.

Смежные вопросы