Форум «Всё о Паскале» _ Задачи _ Пересечение треугольников
Автор: feniks25 16.01.2008 20:21
Здравствуйте, есть у кого функция для определения пересечения двух треугольников. Результат булевый да\нет? можно и чисто математическое решение, но функцией будет лучше.
Эскизы прикрепленных изображений
Автор: Client 16.01.2008 21:39
Сначала определяешь, пересекаются ли хоть какие-то стороны стороны, определяешь координаты этой точки, и проверяешь ее на принадлежность к одному из треугольников.
Автор: feniks25 16.01.2008 22:06
Цитата(Client @ 16.01.2008 16:39)
Сначала определяешь, пересекаются ли хоть какие-то стороны стороны
Но у меня ни одна сторона не пересекается, а треугольники да. есть просто функция типа function trianglecheck(p1,p2,p3,p4,p5,p6):boolean; p1=x,y,z
Автор: volvo 16.01.2008 22:09
Цитата
есть у кого функция для определения пересечения двух треугольников
Благодарю, конечно, там много полезной информации, тока я ничего не понял. Читаю как какие-то иероглифы.
int tri_tri_intersect(float V0[3],float V1[3],float V2[3], * float U0[3],float U1[3],float U2[3]) это то?
Автор: volvo 16.01.2008 23:26
Угу... То самое... В начале (в комментариях же написано:
Цитата
* 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
)
Автор: feniks25 17.01.2008 0:07
Цитата(volvo @ 16.01.2008 18:26)
Угу... То самое... В начале (в комментариях же написано:)
Ну не знаааю я Си. float V0[3] это типа вершина с тремя координатами в виде массива?
Для Delphi ничего нет?
Автор: volvo 17.01.2008 4:45
Цитата
Для Delphi ничего нет?
Есть же программа готовая - неужели так сложно переконвертировать ее в Дельфи? Я где-то на форуме (в разделе ОС и ПО, кажется) давал ссылку на конвертер, да там и вручную - дел на полчаса максимум: все макросы сделать процедурами (а лучше - функциями) и все...
Update: Вот набросок, вроде бы нигде не ошибся - тестируй...
Обычная http://zeus.sai.msu.ru:7000/programming/bp70_lr/lr4.shtml#15 с вариантной частью: одновременно можешь обращаться к координатам точки как через поля X, Y, Z, так и через элементы массива arr[i], фактически поля, описанные в разных метках селектора (false и true) находятся в одном месте памяти. На X "накладывается" arr[0], на Y - накладывается arr[1], и на Z - arr[2].
Я очень часто такое использую, если мне надо в разных местах обращаться по-разному к полям записи. Где-то удобнее работать с именованными полями, где-то с массивом значений. Это - универсальный способ...
Автор: feniks25 18.01.2008 1:46
Цитата(volvo @ 17.01.2008 20:09)
Обычная http://zeus.sai.msu.ru:7000/programming/bp70_lr/lr4.shtml#15 с вариантной частью: