Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2014, 11:52   #1
_BYTE
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 56
По умолчанию Алгоритм Брезенхема для разложения отрезка в растр

помогите разобраться с этим алгоритмом, перечитал много сайтов, но че то никак не врублюсь, вот как этот коэфициент отклонения высчитывать? вообще пиксель он же как бы мельчайшая точка и как линия может проходить через пиксель если меньше пикселя ничего нет? о_О

з.ы. например вот что написано об этом в википедии: http://ru.wikipedia.org/wiki/Алгоритм_Брезенхэма но че то там так все запутано...
_BYTE вне форума Ответить с цитированием
Старый 16.03.2014, 13:25   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

пиксель - не точка, а вполне себе такой квадратик с известными размерами.
Smogg вне форума Ответить с цитированием
Старый 17.03.2014, 01:17   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,330
По умолчанию

Пиксел - это вполне измеряемая величина, больше того, пиксел состоит из трех цветовых точек, которыми и задается цвет пикселя.
Возьми увеличительное стекло и посмотри на пиксел.

Возьми тетрадный лист или лист из блокнота, который уже разлинован в клетку. Каждую клетку считаем пикселом (экран монитора под лупой).
Закрась одну клетку - это начальная координата будущей линии.
Выбери дополнительные (вторая координата линии) клетки по следующему правилу - одна по горизонтали от начальной, следующая повыше и последняя - так, что бы линия, соединяющая ее с закрашеной была под 45 град.
Соедини тонкой линией (карандашем) выбранные точки с закрашеной.
Смотри как линия пересекает клетки (пикселы).
В некоторых случаях она проходит через центр пиксела, а в некоторых цепляет только его край.
Т.о. когда линия проходит прямо через центр пиксела - он светится.
В том случае, когда линия не проходит через центр пиксела, следует сделать выбор: либо пиксел должен светиться, либо будет светиться соседний пиксел. Все зависит от того, к центру какого пиксела ближе проходит линия.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 17.03.2014, 09:54   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
В том случае, когда линия не проходит через центр пиксела, следует сделать выбор: либо пиксел должен светиться, либо будет светиться соседний пиксел. Все зависит от того, к центру какого пиксела ближе проходит линия.
Никакого выбора делать не нужно. Если линия пересекат пиксель хоть на 1%, он светится.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 17.03.2014, 11:07   #5
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Никакого выбора делать не нужно. Если линия пересекат пиксель хоть на 1%, он светится.
А если линия проходит ровно между пикселями?
Smogg вне форума Ответить с цитированием
Старый 17.03.2014, 11:10   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
..., больше того, пиксел состоит из трех цветовых точек, которыми и задается цвет пикселя
Если еще и это учитывать, то ClearType уже получится )

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Никакого выбора делать не нужно. Если линия пересекат пиксель хоть на 1%, он светится.
не могу согласиться, порог чувствительности должен быть

Цитата:
Сообщение от Smogg Посмотреть сообщение
А если линия проходит ровно между пикселями?
А на википедию вы без картинок заходили? Там и примеры есть


А уж в поиске по картинкам.. ууу
https://www.google.ru/search?q=%D0%B...D0%BC&tbm=isch
Благодарить в репутацию. Проклинать — туда же

Последний раз редактировалось Luuzuk; 17.03.2014 в 11:19.
Luuzuk вне форума Ответить с цитированием
Старый 17.03.2014, 12:28   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Это в идеале, для псевдографики актуально. Ничего страшного не произойдёт, если пиксели будут перекрывать друг друга. Для злаза это будет совершенно незаметно.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм брезенхема Иварунька Общие вопросы Delphi 1 20.11.2012 00:57
Нужно найти алгоритм для пересечения отрезка с набором прямоугольников Trinock Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 01.12.2011 14:31
Алгоритм Брезенхема vedro-compota Общие вопросы Delphi 5 31.05.2010 19:49
Алгоритм Брезенхема для рисования эллипса vedro-compota Общие вопросы Delphi 4 24.05.2010 20:35
Как записать растр в файл? Как прочесть растр из файла? litvin44 Win Api 1 20.05.2010 23:17