|
22 / 56 / 9
Регистрация: 29.09.2011
Сообщений: 618
|
|
Пересечение треугольников14.12.2014, 03:24. Показов 13798. Ответов 49
Метки нет (Все метки)
Надо определить, пересекаютя ли треугольники. Наличие общей грани нельзя считать пересечением, но если один треугольник лежит внутри другого, то это пересечение.
Подойдёт ли мне алгоритм, описаный здесь: Пересечение треугольников в 3d (пятый пост)?
0
|
|
| 14.12.2014, 03:24 | |
|
Ответы с готовыми решениями:
49
Пересечение треугольников
|
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
|
|||||||
| 15.12.2014, 00:36 | |||||||
![]() но у меня есть своя работа и это пока может растянутся на большой срок ![]() а алгоритм прост как "Колумбово яйцо" Мысль я высказал кстати, Уважаемый, от Вас я даже мысли не услышал, только ссылки какие то, задача то кому нужна? Мне могут оппонировать Mr.X, D_in_practice, но не Вы, посему я подожду так месяца два, когда сессия закончится, и выложу свое решение(которого у меня пока нет, есть мысли вслух) человек который не понимает разницу между математикой и конкретным языком программирования Информатитика есть наука о сборе, обработке и передаче информации кстати решение о двух треугольниках, тоже информатике не интересно, ей интересно пересекаются данные треугольники(Да) или нет(Нет) что и должна вернуть функция реализованная на Си
3
|
|||||||
|
22 / 56 / 9
Регистрация: 29.09.2011
Сообщений: 618
|
||
| 15.12.2014, 02:15 [ТС] | ||
|
Сколько будет 7х8 ?
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
| 15.12.2014, 05:43 | |
|
2
|
|
|
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
|
||||||
| 16.12.2014, 09:47 | ||||||
|
1. Нахожу все точки пересечения треугольников
2. Если точек больше 2-х значит прересеклись. Иначе Создаю многоугольник включающий в себя все тт пересечения и тт наших треугольников. https://www.cyberforum.ru/cpp-... ost6807894 3. Сравниваю площадь многоугольника, с площадями треугольников.
1
|
||||||
| 16.12.2014, 10:52 | |
|
0
|
|
|
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
|
|
| 16.12.2014, 10:58 | |
|
если три точки значит точно пересеклись,
если 2 точки или одна может быть просто касание или один треугольник в другом если нет точек может оказаться что один треугольник в другом. И конечно может оказаться что я чего то не учел. P.S. Первая программа абсолютна не работает, Пересечение треугольников хотя я раньше видел подобное решение на форуме, потому что представьте еврейскую звезду, пересекаются треугольники и нет вершин внутри треугольников.
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
| 16.12.2014, 11:00 | ||||||
|
D_in_practice, треугольники, имеющие общую сторону
1
|
||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 16.12.2014, 11:39 | |
|
D_in_practice, я извиняюсь за тупизм, то разве касание треугольников не есть их пересечение? Это всмысле именно математически разные понятия?
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
| 16.12.2014, 12:19 | |
|
0
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 16.12.2014, 12:30 | ||
|
Меня смутил ответ D_in_practice. Я думал есть какая-то разница в терминах: пересекаются, соприкасаются. Конкретно такая, что соприкасающиеся нельзя назвать пересекающимися.
1
|
||
|
34 / 34 / 4
Регистрация: 19.02.2013
Сообщений: 118
|
|
| 16.12.2014, 12:40 | |
|
Я, с позволения вставлю свои 5 копеек.
Не так давно я решал похожую задачу в Матлабе... Мне видится 2 уровня абстракции при решении данной задачи. 1. Можно оперировать сторонами треугольника как "прямыми проходящими через 2 точки". Если эти прямые пересекаются то для системы из двух уравнений этих прямых существует решение. Если прямые совпадают, то существует бесконечное множество решений. Минипроблемка в том, что любые не параллельные прямые где-нибудь да и пересекутся, поэтому при решении задачи таким способом нужно составить вагончик условий принадлежности точек пересечений к границам отрезков (сторон), кроме того особого внимания потребует случай, когда 1 треугольник вписан во второй. С этой позиции наиболее ультимативным выглядит решение, которое предложил ValeryS, единственный случай который придётся учесть отдельно - это упомянутая "звезда Давида". 2. уровень абстракции: Можно оперировать треугольниками, как двумерными фигурами. Если бы скажем решалась задача о пересечении двух окружностей, то нужно было бы объединить в одну систему уравнения для этих окружностей и если система имеет решение - значит они пересекаются. В случае же с треугольниками, каждый можно задать системой из трёх неравенств (Если при работе с каждой прямой описывать где верх, где низ, и где другие прямые, то это уже само по себе громоздко), однако, забегая вперёд, могу сказать что самый простой способ сделать это - усреднить координаты вершин Треугольника, и полученные координаты центра треугольника подставить по очереди в уравнения прямой для каждой из сторон. Таким образом можно получить три неравенства и объеденить их в систему. Получив две системы неравенств их надо будет объединить в одну, и если полученная система из 6 неравенств будет иметь решение - значит они пересекаются. В этом случае последнее, что тебе останется - это проверить не касаются ли они только стороной. Если ты решаешь задачу, там на конкурс какой-то то второй вариант тебе должен быть более интересен. Если же тебе просто надо чтобы это работало, то я бы советовал тебе начать с того что предложил ValeryS, а для того, чтобы учесть случай "звезды Давида" тебе нужно будет кроме каждой из вершин, также проверить центр каждого треугольника на предмет принадлежности к другому треугольнику. Вот и весь рецепт. Эпилог: Я испытал небывалую гамму чувств, когда, проработав над своей задачей дня 3, на этом-же форуме развил похожую теорию, а в ответ мне сказали что это всё уже решено в стандартной матлабовской функции :-)))
1
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
| 16.12.2014, 14:03 | |
|
Добавлено через 1 минуту
Алексей89, да вы жжете просто! А можете то же самое, но в стихах?
1
|
|
|
22 / 56 / 9
Регистрация: 29.09.2011
Сообщений: 618
|
|||||||
| 16.12.2014, 17:22 [ТС] | |||||||
|
D_in_practice, отдельное спасибо Вам за алгоритм, я его внимательно просмотрю и подумаю, чем он может оказаться лучше того, который у меня уже есть. Позже мне надо будет организовать вычитание многоугольников, скорее всего он мне тоже поможет. Пока что я так сделал, очень похоже на то, что говорил Mr.X: Кликните здесь для просмотра всего текста
1
|
|||||||
|
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
|
|||||||||
| 16.12.2014, 19:27 | |||||||||
|
{0, 0}, {1, 0} и {2, 0}, {3, 0} - не пересекаются {0, 0}, {2, 0} и {1, 0}, {3, 0} - пересекаются а по формуле выдаст одинаковый результат Вот рабочий код, ошибок вроде пока не вижу: 1. Нахожу точки пересечения, повторяющиеся не беру. 2. Если точек 3 и больше значит пересеклись. 3. Если точек 0 или 1, то при пересечении один треугольник окажется в другом и площадь фигуры составленная из всех точек будет меньше максимального из треугольников. 4. Если точек 2, я смотрю площадь фигуры полученой всеми точками, на равенство сумме площадей треугольников. В последнем случае не уверен в правильности.
_20_, Вам отдельное спасибо за звезду Давида которую я пропустил, сразу видно человек пытался задачу решить сам. Всем спасибо
0
|
|||||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 16.12.2014, 21:16 | ||
|
D_in_practice, вы меня недопоняли.
1
|
||
| 16.12.2014, 21:28 | |
|
Не по теме: Mr.X, тогда это только один из 6 возможных случаев, о чем Вы сказали уже.
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|||
| 16.12.2014, 21:46 | |||
|
D_in_practice, что-то у меня ваша программа, скопированная без изменений, через раз то 0, то 1 выводит.
Добавлено через 9 минут
0
|
|||
|
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
|
||||
| 16.12.2014, 22:04 | ||||
|
Mr.X, а параллельные стороны не берем, например случай с общей прямой x = 0?
0
|
||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 16.12.2014, 22:09 | ||
|
0
|
||
|
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
|
||
| 16.12.2014, 22:22 | ||
|
Mr.X, Чем это она неправильная? Ну да я ошибся пару раз, но ведь не ошибается только тот кто ничего не делает.
С этой проверкой она 100% работает, но мне кажется что и без нее, это только случаай для 2-х общих точек нужно проверять по нему, и то не факт. Не по теме: Ладно молчу, код некрасивый
0
|
||
| 16.12.2014, 22:22 | |
|
Помогаю со студенческими работами здесь
40
Определить пересечение треугольников Как определить пересечение 2-х треугольников в трехмерном пространстве?
Пересечение двух прямых и проверка на пересечение Пересечение двух треугольников Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|