![]() |
|
|
![]()
|
|
| Flap |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 16.11.2005 Репутация: нет Всего: нет |
Народ, подскажите, какой алгоритм подходит для универсального рисования толстой ломанной линии? Вроде как надо преобразовать в многоугольник и закрасить его. Но что делать, например, с замкнутой линией? Она же превращается в многоугольник с дыркой посередине. Или если я хочу сделать закругленные концы? Совсем, запутался.
|
|||
|
||||
| MaxB |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 10.2.2004 Где: Украина, Одесса Репутация: нет Всего: 1 |
Это смотря чем ты пользуешся для вывода графики, есть множество способов выводить толстую линию. Можно преоразовать ломаную линию в triangle strip, это будет хорошо для DirectX или OpenGL, если ты выводишь по пикселям используй например алгоритм Брезенхема.
На счет прямоугольника можно и им, а на концах выводить закрашенные окружности. Кстати в GDI есть функции вывода толстой линией там даже имеется возможность поставить наконечники. Если что-то по подробней интересует спрашивай. |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
А можно рядышком рисовать много тонкихъ линий опр. длинны. Можно добиться и эффекта закругления.
|
|||
|
||||
| Flap |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 16.11.2005 Репутация: нет Всего: нет |
Я делаю полностью все сам. Т.е. получаю битмам и вперед - по точкам. Многоугольник мне более симпатичен, потому что его проще отсекать прямоугольником вывода. На концах тоже планирую многоугольники - это возволит делать экзотические концы типа стрелок, шариков и т.п. А ломаную линию я, наверное попробую выводить с помощью отдельных четырехугольников: по одному на каждый прямой участок. Но тоже не факт, вдруг захочется делать скругленную линию или вообще кривую? Насчет Брезнехема: им я вывожу простые линии, толстые пока не пробовал. Потому что, опять же не вижу способа их правильно отсекать. Добавлено @ 09:17
В принципе да, но будет слишком медленно и будут попадаться дырки. Если только горизонтальными, но это получится таже заливка многоугольника. |
||||
|
|||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Погоди, а разве стандартно не задать толщину линии, а потом на краях аккуратно её закруглить, например кругом?
-------------------- Всем добра |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Я вычислял координаты зеленых точек, соединял их и заливал то, что получалось. Вот и все...
Присоединённый файл ( Кол-во скачиваний: 28 )
line.jpg 4,49 Kb-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Flap |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 16.11.2005 Репутация: нет Всего: нет |
В принципе да, примерно так и делаю. Результат в файле. Черная линия - сама линия, синий пунктир - то, что закрасится (заливка еще не готова). Но если линия очень толстая и извилистая, то придется делать честное объединение полигонов (у меня сейчас упрощенно считается). Тогда следующий вопрос: как теперь считать кривые? Бить на много-много отрезков? Это сообщение отредактировал(а) Flap - 21.2.2006, 12:16 Присоединённый файл ( Кол-во скачиваний: 20 )
img1.PNG 4,88 Kb |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |