|
1 / 1 / 1
Регистрация: 08.06.2013
Сообщений: 70
|
|
Заливка произвольных фигур09.05.2016, 14:02. Показов 6736. Ответов 7
Метки нет (Все метки)
Всем здравствуйте.
Возникла проблема с заливкой в OpenGL. Использую C#, WF, Tao.OpenGL. Есть сетка, на которой строятся сплайны (BSpline), надо залить цветом промежуток между двумя соседними сплайнами. Ничего кроме как по-пиксельной заливки мне не пришло в голову, но, мне кажется, этот вариант не есть самый оптимальный. Может кто подсказать как правильно такое делать или где поискать информацию, или вообще куда копать? Так же вопрос номер 2: Как залить замкнутый сплайн (BSpline)? П.С. построение BSpline взято с https://en.wikipedia.org/wiki/B-spline Приложение: На рисунке два сплайна, надо залить промежуток между ними.
0
|
|
| 09.05.2016, 14:02 | |
|
Ответы с готовыми решениями:
7
заливка фигур. Заливка цветмо фигур |
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 09.05.2016, 17:33 | |
|
Промотайте до “Рис. 2. 8. Невыпуклый многоугольник”
http://bourabai.kz/graphics/OpenGL/2.htm GL_POLYGON это Выпуклые многоугольники значит нельзя впадины в текущем заливаемом контуре. Наверно нужно разбить на куски пространство между кривыми и заливать каждый выпуклый кусок через GL_POLYGON. Если все ломанные от b –spline будут иметь постоянно возрастающие координаты X то можно попробовать брать просто 2 точки на b –spline 2 точки на кривой снизу. Создать цикл в котором окрашивать кусками. А если нет, то нужно продумать алгоритм как разбивать на выпуклые области сложный многоугольник. Добавлено через 24 минуты Похоже нужно брать тесселятор. http://www.songho.ca/opengl/gl_tessellation.html
0
|
|
| 10.05.2016, 00:14 | ||||||
|
Мне кажется, что самый простой способ заливки (и единственный, который я применял) это использовать алгоритм: https://ru.wikipedia.org/wiki/Заливка
Добавлено через 5 минут Этот алгоритм ещё применяется не только для заливки, но и в игре Сапёр. Я с ним познакомился, когда делал этот тутор Там этот алгоритм реализован на языке C#:
0
|
||||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 10.05.2016, 00:52 | |
|
Наверно что этот алгоритм намного медленней чем через GL_POLYGON если через CPU делать, считает каждый пиксель. А через GL_POLYGON на видеокарту отправляет только границы какую область закрашивать, а значит намного быстрей. Но возможно этот алгоритм будет быстрей чем через GL_POLYGON если это будет шейдер на спец языке.
0
|
|
| 10.05.2016, 01:21 | ||
|
0
|
||
|
1 / 1 / 1
Регистрация: 08.06.2013
Сообщений: 70
|
|
| 10.05.2016, 10:22 [ТС] | |
|
Проблема в том, что обе этих кривых - сплайны. У них количество разбиений между точками 10 (в данном случае), т.е. между каждой точкой 10 линий!
Конечно, есть возможность (вероятнее всего), сделать так, что бы суммарное количество разбиений на прямой было одинаковым (т.е. что бы сплайн сверху строился, допустим из 1000 прямых и нижний тоже из 1000), тогда можно заливать все обычным GL_POLYGON(там выйдет трапеция, где по Х - будут ее основания). Так же есть возможность воспользоваться заливкой(рекурсивной по 4 направлениям), предложенной 8Observer8, но это будет долгая вещь, особенно если сплайнов будет куча и границы двух цветов. А насчет тесселяции, пробовал разобраться, но так и не понял, каким образом там область разбивается на эти треугольники. Там надо определиться как область описанную двумя(одним) сплайнами разбить и в какой последовательности подавать точки. Пока что отложил эту идею на потом.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 10.05.2016, 15:10 | |
|
Найдите книгу и диск в инете бесплатно Райт, Липчак - OpenGL Суперкнига.
Там описание тесселяции на русском и пример прога FLORIDA. Стр 500 гдето. Выглядит как просто задание сложного многоугольника массивом. Значит ваша задачка похоже сведется к все точки от кривых последовательно ввести и все.
0
|
|
|
0 / 0 / 0
Регистрация: 13.05.2016
Сообщений: 14
|
|||||||||||
| 22.05.2016, 17:14 | |||||||||||
|
Рекурсивный обход очень долгий и неэффективный в моем случае. Как минимум из-за того, что точки имеют не константное положение на OpenGLControl:
А с тесселяцией я очень долго мучился, но таки смог запустить на c#, все работает хорошо, вроде бы и достаточно быстро (ну вроде как).
0
|
|||||||||||
| 22.05.2016, 17:14 | |
|
Помогаю со студенческими работами здесь
8
Рандомная заливка фигур
Создание произвольных фигур и подсчет матрицы Заполнение произвольных плоских фигур треугольниками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|