|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.05.2013, 04:04 | #1 |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
Массив и прямая.
Дан двумерный массив, 2 координаты и пустой массив точек.
Как в массив точек можно занести ВСЕ точки массива, лежащих на прямой между 2мя заданными точками? Знаю только как их занести с определенным интервалом, но если прямая лежит на мельчайшем кусочке квадрата, тот может не занестись. На изображении в список занесется только одна из попарно закрашенных клеток. Увеличивать число шагов не вариант, так как одна клетка - минимальная дискретная единица, то бишь пиксель.
alextrof94$gmail.com
|
30.05.2013, 08:44 | #2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
|
30.05.2013, 19:51 | #3 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Кроме уже предложенного Брезенхема можно просто проверять расстояние от центра клетки до линии и в случае, если оно меньше 1/sqrt(2), проверять углы клетки на то, что все они лежат по одну сторону прямой.
Если же идти по тому, пути, по которому пошли Вы - "шагать" вдоль прямой, то шаги нужно делать не постоянными, а до пересечения с ближайшей линией сетки. Т.е. 1. Делаем текущей точкой исходную 2. Вычисляем ближайшее пересечение с сеткой линии, выходящей из исходной точки. 3. Делаем точку пересечения текущей. 4. Если мы не дошли до конца отрезка - на шаг 1. |
31.05.2013, 09:57 | #4 | |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
Цитата:
alextrof94$gmail.com
|
|
31.05.2013, 13:33 | #5 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
1. Брезенхем - это не один единственный алгоритм, а семейство алгоритмов. Среди них есть и тот, что Вам нужен.
2. Надеюсь, насчет тех двух алгоритмов, которые я предложил кроме Брезенхема, возражений нет? |
31.05.2013, 14:03 | #6 | |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
Цитата:
На счет Брезенхема еще почитаю.
alextrof94$gmail.com
|
|
31.05.2013, 17:37 | #7 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Числовая прямая | ThomasHoffman | Помощь студентам | 3 | 26.11.2012 21:02 |
Прямая линия | Kyran29 | Мультимедиа в Delphi | 7 | 30.05.2012 17:11 |
Квадрат и прямая | xXSilentXx | Общие вопросы C/C++ | 14 | 26.07.2011 19:24 |
Прямая | VirusOfLove | Помощь студентам | 8 | 05.12.2009 09:37 |
Прямая в пространстве | Neuros1s | Общие вопросы Delphi | 12 | 29.06.2007 00:06 |