Форум программистов, компьютерный форум, киберфорум
Геометрия
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 3

Определить пересечение прямоугольника с фигурой

08.12.2016, 18:04. Показов 752. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую. Моё задание - написать векторный графический редактор, текущая цель - сделать выделение фигур.
Выглядит это примерно .

Мне нужно вывести формулы для каждой из представленных фигур таким образом, чтобы при касании линии фигуры она автоматически выделялась, при условии, что каждая из фигур ограничена прямоугольником, который не должен никак влиять на выделение. Для примера - эллипс создаётся по двум точкам - верхняя левая и нижняя правая; нужно сделать выделение таким образом, чтобы выделяя данную фигуру вне её границ - она не выделялась, даже если выделение лежит в области прямоугольника данной фигуры. Нужно составить проверку на то, лежит ли какой-либо фрагмент фигуры в прямоугольной области. Вторую неделю не могу составить данный алгоритм.

Кратко о том, что имеется:
- x0, y0, x1, y1 - координаты краёв прямоугольной области выделения
- ax, ay, bx, by - координаты краёв фигуры
- radius - радиус закругления у прямоугольника с закруглёнными краями
- angle, count - угол поворота многоугольника и количество вершин в нём
Для каких фигур:
- Прямоугольник
- Прямая линия
- Закруглённый прямоугольник
- Эллипс
- Многоугольник

Код пишется на языке Python с использованием библиотеки wxWidgets, исходник моего быдлокода можно прочитать здесь.
Благодарю за помощь.
Нарушение Правил форума, пункт 4.11. Картинки и любые другие файлы загружайте на форум, во избежание их удаления или потери на сторонних ресурсах. По этой же причине коды программ также должны находиться на форуме.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.12.2016, 18:04
Ответы с готовыми решениями:

Какой фигурой является пересечение смежных AOB и BOC углов
Доброго времени суток. Никак не могу понять, что от меня хотят в следующей задаче: Какой фигурой является пересечение смежных AOB и...

Определить пересечение между отрезком и плоскостью
Доброго времени суток! Дано следующее задание(описываю как я сам его понял, ниже представляю оригинал): Есть отрезок и плоскость в...

Определить Вершины Прямоугольника
Имеется произвольный отрезок(даны его концы, назовем из cx1,cy1, cx2,cy2) на плоскости и длина от концов этих отрезков до вершин(везде...

5
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
09.12.2016, 11:40
Цитата Сообщение от Ariosjentu Посмотреть сообщение
чтобы при касании линии фигуры она автоматически выделялась,
У вас фигуры заданы пикселями. Каждой фигуре назначить уникальный цвет. Анализировать какой цвет пикселей есть в прямоугольнике выделения.
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 3
09.12.2016, 12:13  [ТС]
К сожалению, такой метод рассматривать нельзя, ибо
1) Помимо черного цвета существует еще палитра цветов
2) Кроме прозрачных фигур есть и залитые, и при наложении фигур это тоже нужно учитывать
3) Это сложный метод - требуется каким-либо образом определить цвет в точке, а в прямоугольном выделении этих точек достаточно, чтобы это затрачивало время на обработку.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
09.12.2016, 12:35
Цитата Сообщение от Ariosjentu Посмотреть сообщение
Помимо черного цвета существует еще палитра цветов
Так использовать это и предлагаю. Для выделения пиксельно заданных фигур с наложением только анализ пикселей поможет. Ваша змейка от руки там пиксели, анализ границ не имеет смысла, аппроксимировать ее ломанной долго и сложно.
Цитата Сообщение от Ariosjentu Посмотреть сообщение
требуется каким-либо образом определить цвет в точке,
Считать кусок экрана в массив RGB и проверить в цикле c CASE.
Цитата Сообщение от Ariosjentu Посмотреть сообщение
чтобы это затрачивало время на обработку.
Это плата за пиксельное задание кривой от руки которые накладываться на залитые области.

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

1)Или более грубый: принадлежность точки фигуры прямоугольнику выделения.
2)Еще более грубый и часто ошибочный: принадлежность точек краев фигуры прямоугольнику выделения.
0
2903 / 1937 / 210
Регистрация: 05.06.2011
Сообщений: 5,714
09.12.2016, 16:33
Ну дык: сначала (эвристика, чисто для скорости) смотрим, пересекается ли прямоугольник выделения с прямоугольником фигуры. Потом, если да, проверяем, лежат ли вершины прямоугольника выделения внутри фигуры.
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 3
10.12.2016, 17:04  [ТС]
Для прямоугольника это просто определить, но помимо прямоугольника есть и фигуры с точками, не образкющими прямую вида x=n или y=n
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2016, 17:04
Помогаю со студенческими работами здесь

Как определить, лежит ли точка в площади прямоугольника?
Здравствуйте! Помогите решить задачу (геометрия). Заданы координаты двух противоположных вершин x1y1, x3y3 прямоугольника и координаты...

Пересечение отрезка и прямоугольника
Вот, что значит не учить математику в школе :((( Подскажите, plz, как определить сабж?

Определить, где находится текущая точка: внутри прямоугольника, снаружи, на границе прямоугольника
Представьте, что у вас на форме есть прямоугольник, границы которого на 10 пикселей отстоят от границ рабочей области формы. Необходимо...

Определить пересечение треугольников
Помогите определить пересечение треугольников уже неделю сижу class Point { public: float x, y; Point(float _x = 0, float _y =...

Определить функцию пересечение х у
Помогите пожалуйста! нужно определить функцию (пересечение х у), результатом которой является список атомов (без повторения) одновременно...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru