Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
7 / 7 / 0
Регистрация: 05.04.2016
Сообщений: 410

Найти область пересечения фигур

13.01.2018, 23:43. Показов 9841. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, господа.
Ситуация такова: имеется два массива точек (каждая - объект, хранящий 3 координаты, по x, y и z), все точки обоих массивов лежат в плоскости и мы знаем в какой (имеем вектор нормали и имеем точку (называется zeroPoint у меня), лежащую в плоскости (да, все точки из массивов тоже лежат, но то что они лежат в ней я узнаю только благодаря zeroPoint, потому всё равно эта информация есть)), каждый из массивов точек представляет из себя фигуру: точку, отрезок или же многоугольник (гарантированно выпуклый), нужно найти пересечение данных фигур, т.е. массив точек, представляющих из себя фигуру, которая является пересечением изначальных двух фигур.
Дополнение: в случае с многоугольником не гарантируется, что точки будут расположены в прямом порядке (т.е. что если строить рёбра проходя напрямую по массиву точек - не гарантируется, что получите нужный многоугольник, вершины могут быть перемешаны)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.01.2018, 23:43
Ответы с готовыми решениями:

Найти площадь пересечения двух фигур
Даны координаты прямоугольника и прямоугольного треугольника. Найти площадь пересечения двух фигур.

Заливка пересечения фигур
есть 2 прямоугольника которые пересекаются как найти их пересечение и выполнить его заливку нажатием на кнопку from tkinter import...

Найти точки пересечения заданных фигур
Здравствуйте,помогите,пожалуйста. Я начинающий студент - программист и у мне уже дана задача для моей курсовой работы. Задача состоит в...

15
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
13.01.2018, 23:58
Nordicus666, Пересечение проекций на плоскость пытаешься установить?
0
7 / 7 / 0
Регистрация: 05.04.2016
Сообщений: 410
14.01.2018, 00:03  [ТС]
не проекций, я пытаюсь на данный момент найти область касания объектов, что б найти её центр (сумма всех вершин области касания поделить на кол-во вершин), что б из этой точки уже кидать объектам импульсы, которые уже изменят движение и вращение объектов
всё кроме нахождения области касания уже реализовано, отсутствует только описанный в шапке темы момент
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
14.01.2018, 00:20
Nordicus666, Тогда откуда путаница с порядком точек? Если добрался до этого момента то тут известна грань/ребро касания а соответственно и порядок точек в ней.
0
7 / 7 / 0
Регистрация: 05.04.2016
Сообщений: 410
14.01.2018, 00:24  [ТС]
все фигуры (3д) - триангулированны, следовательно в плоскости касания от одной фигуры может быть несколько полигонов, допустим у меня есть куб, одна его грань состоит из двух треугольных полигонов, следовательно в момент касания по вашему алгоритму я б проходил по списку полигонов и записал бы туда не 4 вершины, а 6 (от двух полигонов, по 3 от каждого, две вершины дублировались бы), по моему же запишется 4 вершины, при том в обоих алгоритмах не обязательно в прямом порядке всё получится.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
14.01.2018, 00:29
Nordicus666, А ты коллизии по модели для отрисовки чтоли делаешь? Это реально себе жизнь усложнять там где не надо.
А если делать по модели с нетриангулированными гранями то работают алгоритмы отсечения по произвольному окну.
https://www.bsu.by/Cache/Page/353613.pdf
0
7 / 7 / 0
Регистрация: 05.04.2016
Сообщений: 410
14.01.2018, 00:47  [ТС]
просто используемая мною моделька (т.е. набор вершин и индексы какие вершины составляют полигон) на текущий момент берутся из одного и того же массива, т.е. из того, который задаёт внешний вид, соответственно триангулированный.. не стоило? в принципе не сложно исправить, вообще не сложно.
прочитал пару слайдов, там всё под 2д, но проблема то в том, что у меня все точки хоть и лежат в одной плоскости, но координаты то их в трёхмерном формате
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
14.01.2018, 00:56
Цитата Сообщение от Nordicus666 Посмотреть сообщение
прочитал пару слайдов, там всё под 2д, но проблема то в том, что у меня все точки хоть и лежат в одной плоскости, но координаты то их в трёхмерном формате
Ну перевести их в 2D не так и сложно. Для этого нужно задать пару перпендикулярных осей лежащих в плоскости и найти
проекции точек на них. Это если в лоб решать. Если же делать с нетриангулированными гранями то можно заранее иметь координаты вершин в плоскости грани. при этом нужно будет только произвести афинное преобразование второй фигуры для того чтобы поиметь координаты обоих полигонов в одной СК.
Цитата Сообщение от Nordicus666 Посмотреть сообщение
в принципе не сложно исправить, вообще не сложно.
Будет гораздо проще. И в вычислительном плане тоже.
0
7 / 7 / 0
Регистрация: 05.04.2016
Сообщений: 410
14.01.2018, 01:01  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну перевести их в 2D не так и сложно. Для этого нужно задать пару перпендикулярных осей лежащих в плоскости и найти
проекции точек на них.
думал над переводом, но не думал, что это будет так просто c:
но вот откуда взять пару перпендикулярных осей? точнее перпендикуляр то в плоскости найти не проблема, у меня даже отдельная функция для этого реализована (нужна была для одной вещи), но вот первую ось? рандомный же вектор не возьмёшь, нужно что б он принадлежал плоскости.. какой можно взять? (скорей всего тут я просто уже туплю, но не могу сообразить поскольку 5 часов ночи, голова не особо соображает)
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Будет гораздо проще. И в вычислительном плане тоже.
ок, ща переделаю
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
14.01.2018, 01:05
Цитата Сообщение от Nordicus666 Посмотреть сообщение
но вот откуда взять пару перпендикулярных осей?
Можно с потолка. По большому счету не важно как они ориентированы и где находится центр. Главное что они лежат в плоскости и координаты вершин обоих полигонов будут в одной СК. Я обычно беру одну из вершин в качестве центра, одно ребро в качестве направления одной оси, и перпендикуляр к нему в качестве второй.
0
7 / 7 / 0
Регистрация: 05.04.2016
Сообщений: 410
14.01.2018, 01:10  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Я обычно беру одну из вершин в качестве центра, одно ребро в качестве направления одной оси, и перпендикуляр к нему в качестве второй.
действительно, почему бы и нет, как раз из двух фигур суммарно минимум две точки будут.
Что ж, спасибо большое, всё это в совокупности должно, потенциально, решить вопрос из шапки темы
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
14.01.2018, 01:46
Цитата Сообщение от Nordicus666 Посмотреть сообщение
у меня даже отдельная функция для этого реализована (нужна была для одной вещи),
Она для многих вещей нужна. Это кстати банальное векторное произведение. Умножаем вектор лежащий в плоскости на нормальный вектор плоскости и вуаля - перпендикуляр лежащий в плоскости.
0
7 / 7 / 0
Регистрация: 05.04.2016
Сообщений: 410
14.01.2018, 16:27  [ТС]
да, у меня просто реализована немного другая, нахождение перпендикуляра к вектору v1 в плоскости, формируемой векторами v1 и v2, т.е. там два векторных произведения, но тут можно и эту использовать, это и так понятно (по крайней мере теперь, когда я выспался )
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
14.01.2018, 16:46
Цитата Сообщение от Nordicus666 Посмотреть сообщение
формируемой векторами v1 и v2,
v1 и v2 используются для вычисления нормального вектора который здесь уже есть.

Не по теме:

Цитата Сообщение от Nordicus666 Посмотреть сообщение
(по крайней мере теперь, когда я выспался )
Работал в одной конторе в которой начальник считал "проспал" уважительной причиной опоздания или даже прогула. Потому как сонный программист нихрена думать не в состоянии. Пусть лучше выспится и сделает за час чем 8 часов будет сидеть сонный :)

0
7 / 7 / 0
Регистрация: 05.04.2016
Сообщений: 410
14.01.2018, 18:06  [ТС]
я понимаю, что тут нормаль уже есть, и так уже использую (сейчас уже реализую алгоритм кируса-бека)
и хороший же у вас, однако, начальник был))
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
14.01.2018, 18:21
Цитата Сообщение от Nordicus666 Посмотреть сообщение
сейчас уже реализую алгоритм кируса-бека
Для выпуклых гораздо проще реализуется Сазерленда-Ходгмана (там в самом низу pdf) и вроде как эффективней.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.01.2018, 18:21
Помогаю со студенческими работами здесь

Как найти точки пересечения этих фигур
Всем доброго времени суток. У меня есть граф редактор. В нем рисуются более 15 видов фигур, считается их площадь (каждой отдельно), их...

OpenCV: найти соотношение площади пересечения двух фигур до их обьединения
Всем привет! Изучаю OpenCV и столкнулась с таким заданием: есть картинка, на которой нарисовано две фигуры, которые пересекаются....

Найти область пересечения прямоугольников
Есть структура structure Point с полями int x, y;. С помощью двух Point задается прямоугольник (первый Point - верхний левый угол,...

Проверка пересечения фигур
Всех приветствую. У меня возникла такая проблема, мне необходимо нарисованный полигон проверить на наличие пересечений с расставленными на...

Событие пересечения фигур
Привет. Есть координаты двух квадратов, то есть 4 координаты на квадрат. Необходимо определить пересечение этих квадратов и выполнить какой...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru