Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 16.10.2017
Сообщений: 3

Поиск замкнутого контура для заливки

10.01.2012, 11:16. Показов 3382. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишется "векторный графический редактор"... От части велосипед, но нужен...
Все примитивы раскладываем в набор отрезков (дугу, окружность и т.п.) ибо по-другому уже сил нет.
Требуется по щелчку пользователя залить область, в которую он ткнул... Так как пишется на C#, для этого нужно определить Region (ну или PathGeometry, если WPF). В общем, нужен набор отрезков из которых должен состоять контур.
На первый взгляд всё казалось простым, находили все пересечения всех объектов в double x, double y (пусть медленно, в данном случае это не играет роли), далее искали первый попавшийся объект контура правым горизонтальным лучом из точки заливки. И обходили контур вокруг точки, сворачивая на пересечениях в выбранном направлении...
Вроде бы всё работает, но есть но. Если отрезки накладываются друг на друга, получаются разные точки пересечения с другим отрезком, хотя на деле-то она должна быть одна.
Ну, например, один отрезок целиком накладывается на второй отрезок, который длиннее ( ---=====----) в итоге при пересечении с третьим отрезком у первого получается одна точка, а у второго другая, отличаются на 15ый знак double в координате. Ну, фигня, подумали мы и округлили точки пересечения до целого... Фиг там, сказала тестовая программа и нашла нам такую же точку, только координаты расходились уже не на 15ый знак double, а на 2 целых... И тут мы зашли в тупик.

Делать растровую заливку - легко, но она не даёт контура, а значит её надо высчитывать на каждый чих пользователя? (масштаб, скроллинг и т.п.), очевидно, что это не прибавит производительности в интерактиве и пользователь не сможет работать.

Вроде и задача должна быть избитая и алгоритм не могу найти никакой...
Подскажите куда по-копать... Надоело изобретать велосипед... Смотрели как работает AutoCAD и Inkscape... ОМГ... Один другого краше... Оба делают растровую заливку судя по всему, потом как-то находят её векторный контур с неким приближением... На выходе полный шлак, но алгоритм их тоже явно не простой... (Так-то не сложно, контур по растру найти, если бы не внутренние области которые надо исключать.)
Что делать и куда копать уже не понимаю совершенно...


PS. Пересечение отрезков считаем по алгоритму с http://algolist.manual.ru/math... line2d.php
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.01.2012, 11:16
Ответы с готовыми решениями:

Построить потенциальные диаграммы для замкнутого контура
Помогите плиз со вторым заданием...как полагаю нужно найти все 6 токов из системы уравнений, а вот что потом не понимаю...первое задание...

Заливка замкнутого контура
Здравствуйте! Пытаюсь реализовать заливку контура. Но получаю результат, объяснить который не могу. Вот на таком изображении Matlab...

Вычерчивание замкнутого контура (звезда)
Помогите найти ошибку в коде. Звезда не замыкается :( unit Unit1; interface uses Windows, Messages, SysUtils, Variants,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.01.2012, 11:16
Помогаю со студенческими работами здесь

Касательная в точке замкнутого контура на плоскости
Ребят, у меня есть замкнутый контур фигуры на плоскости, представленный упорядоченными точками с координатами x и y (p(x,y)). Мне нужно...

Заданная правая половина симметричного замкнутого базового контура
Заданная правая половина симметричного замкнутого базового контура и линия произвольного расположения, определить замкнутый контур, который...

Вычерчивание замкнутого контура (звезды) в точке нажатия кнопки мыши
Можете сделать готовый проект? Пожалуйста, разбираться времени нету, а домашнее задание сдать нужно ;) unit Stars_; interface uses ...

Нужно доказать, что работа замкнутого контура равна нулю
Очень нужна помощь

Алгоритм рекурсивной заливки произвольного контура
Ребят, всем привет! Есть следующий код. По идее это алгоритм рекурсивной заливки, но я не могу понять какие значения необходимо вписывать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД 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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru