Определить пересекаются ли 2 треугольника в 3d - C#
Формулировка задачи:
Вот например 2 треугольника: (для примера)
Как определить пересекаются они или нет.
Есть ли готовая функция для этого? (не важно c++ или c#)
И важно что бы места где вершины или стороны соединяются не считалось пересечением.
struct Point { int X; int Y; int Z; } struct Triangle { Point p1; Point p2; Point p3; } ... //First triangle Point p1 = new Point(); p1.X = 0; p1.Y = 0; p1.Z = 0; Point p2 = new Point(); p2.X = 0; p2.Y = 0; p2.Z = 10; Point p3 = new Point(); p3.X = 10; p3.Y = 0; p3.Z = 0; Triangle t1 = new Triangle(); t1.p1 = p1; t1.p2 = p2; t1.p3 = p3; ... //Second Triangle Point p1 = new Point(); p1.X = 5; p1.Y = 5; p1.Z = 5; Point p2 = new Point(); p2.X = 5; p2.Y = -5; p2.Z = 5; Point p3 = new Point(); p3.X = 5; p3.Y = 0; p3.Z = 10; Triangle t2 = new Triangle(); t2.p1 = p1; t2.p2 = p2; t2.p3 = p3;
Решение задачи: «Определить пересекаются ли 2 треугольника в 3d»
textual
Листинг программы
//Плоскость, в которой лежит текущий треугольник Plane pl = new Plane(V1, V2, V3); //Сторона между первой и второй вершинами данного треугольника Line l = new Line(tr.V1, tr.V2); //Точка пересечения стороны и плоскости Point3D? crosspt = pl.CrossPoint(l); //Если сторона и плоскость пересекаются if (crosspt != null) //Проверяем, чтобы точка находилась внутри треугольника if (IsPointInside(tr, crosspt.Value)) return crosspt;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д