![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Rian |
![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здравствуйте, есть у кого функция для определения пересечения двух треугольников. Результат булевый да\нет? можно и чисто математическое решение, но функцией будет лучше.
Эскизы прикрепленных изображений ![]() -------------------- Objective-C, Unity3d
|
![]() ![]() |
Client |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Сначала определяешь, пересекаются ли хоть какие-то стороны стороны, определяешь координаты этой точки, и проверяешь ее на принадлежность к одному из треугольников.
|
Rian |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
Сначала определяешь, пересекаются ли хоть какие-то стороны стороны Но у меня ни одна сторона не пересекается, а треугольники да. есть просто функция типа function trianglecheck(p1,p2,p3,p4,p5,p6):boolean; p1=x,y,z -------------------- Objective-C, Unity3d
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата есть у кого функция для определения пересечения двух треугольников Тебе сюда: АлгоЛист - Пересечение: Два треугольника |
Rian |
![]()
Сообщение
#5
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
Благодарю, конечно, там много полезной информации, тока я ничего не понял. Читаю как какие-то иероглифы. int tri_tri_intersect(float V0[3],float V1[3],float V2[3], * float U0[3],float U1[3],float U2[3]) это то? -------------------- Objective-C, Unity3d
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Угу... То самое... В начале (в комментариях же написано:
Цитата * int tri_tri_intersect(float V0[3],float V1[3],float V2[3], )* float U0[3],float U1[3],float U2[3]) * * parameters: vertices of triangle 1: V0,V1,V2 * vertices of triangle 2: U0,U1,U2 * result : returns 1 if the triangles intersect, otherwise 0 |
Rian |
![]()
Сообщение
#7
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
Угу... То самое... В начале (в комментариях же написано:) Ну не знаааю я Си. float V0[3] это типа вершина с тремя координатами в виде массива? Для Delphi ничего нет? ![]() -------------------- Objective-C, Unity3d
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата Для Delphi ничего нет? Есть же программа готовая - неужели так сложно переконвертировать ее в Дельфи? Я где-то на форуме (в разделе ОС и ПО, кажется) давал ссылку на конвертер, да там и вручную - дел на полчаса максимум: все макросы сделать процедурами (а лучше - функциями) и все...Update: Вот набросок, вроде бы нигде не ошибся - тестируй... Сообщение отредактировано: volvo - 17.01.2008 13:15 Прикрепленные файлы ![]() |
Rian |
![]()
Сообщение
#9
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, класс, работает!!!
![]() И код довольно быстрый. turion64-100 000 итераций за 50 мс только стало интересно как работает такое описание типа через case:
Прикрепленные файлы ![]() -------------------- Objective-C, Unity3d
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Цитата как работает такое описание типа через case Обычная запись с вариантной частью: одновременно можешь обращаться к координатам точки как через поля X, Y, Z, так и через элементы массива arr[i], фактически поля, описанные в разных метках селектора (false и true) находятся в одном месте памяти. На X "накладывается" arr[0], на Y - накладывается arr[1], и на Z - arr[2].Я очень часто такое использую, если мне надо в разных местах обращаться по-разному к полям записи. Где-то удобнее работать с именованными полями, где-то с массивом значений. Это - универсальный способ... |
Rian |
![]()
Сообщение
#11
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
-------------------- Objective-C, Unity3d
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 13:45 |