|
22 / 56 / 9
Регистрация: 29.09.2011
Сообщений: 618
|
|
Пересечение треугольников14.12.2014, 03:24. Показов 13486. Ответов 49
Метки нет (Все метки)
Надо определить, пересекаютя ли треугольники. Наличие общей грани нельзя считать пересечением, но если один треугольник лежит внутри другого, то это пересечение.
Подойдёт ли мне алгоритм, описаный здесь: Пересечение треугольников в 3d (пятый пост)?
0
|
|
| 14.12.2014, 03:24 | |
|
Ответы с готовыми решениями:
49
Пересечение треугольников
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|||||||
| 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-х треугольников в трехмерном пространстве?
Пересечение двух прямых и проверка на пересечение Пересечение двух треугольников Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|