Всем привет!
Есть вот задачка, но я не могу её решить ввиду незнания дискретной математики (вроде оно из этой области).
Дано:
Прямая, заданная: вектором и точкой или двумя точками или уравнением y = kx + b.
Итератор на прямоугольной матрице, позволяющий смещение на 1 ячейку вверх, вниз, направо или влево, и установку значения в текущую ячейку.
Возможность получить этот итератор для любой ячейки, заданной координатами i и j.
Задача:
Провести прямую, используя минимальное количество из 5 операций итератора.
Я полагаю, что задачу можно решить, рассчитав для прямой последовательность действий и выполнив её в цикле. Например, для прямой в ~30 градусов пересекающей ось Х последовательность будет такой: направо, установить 1, направо, установить единицу, направо, вверх, установить единицу. Результат:
**
**
**
Но вот как получить эту последовательность — для меня вопрос ещё тот. Уже почти 4 часа бьюсь, ничего не получается
. Другие решиния, кстати, приветствуются
Здравствуйте, korzhik, Вы писали:
K>Я думаю, что тебе нужен алгоритм Брезенхема генерации 4-х связной развертки отрезка
Спасибо! А можно в двух словах про что такое развёртка отрезка? Или сцылку? Я нашёл вот это
http://www.codenet.ru/progr/video/alg/alg2.php — но там только код на паскакале, а мне бы почитать... И что там ещё за ЦДА такое?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, korzhik, Вы писали:
K>>Я думаю, что тебе нужен алгоритм Брезенхема генерации 4-х связной развертки отрезка
А>Спасибо! А можно в двух словах про что такое развёртка отрезка? Или сцылку? Я нашёл вот это http://www.codenet.ru/progr/video/alg/alg2.php — но там только код на паскакале, а мне бы почитать... И что там ещё за ЦДА такое?
ну так погугли.вот что я нашёл:
http://alglib.sources.ru/graphics/section4connected.php
http://ermak.cs.nstu.ru/kg_rivs/kg02.htm#tth_sEc0.2