Как рассчитать сечение тетраэдра

У меня есть объемная сетка, которая на самом деле является тетраэдрической сеткой. Я хотел бы рассчитать поперечное сечение этой сетки с учетом функции плоскости, говоря z = 0. Я могу себе представить, что поперечное сечение тетраэдра представляет собой либо треугольник, либо четырехугольник. Для первого случая, треугольника, как только я рассчитаю 3 точки пересечения, я смогу его получить; но во втором случае, как я могу превратить четырехугольник в 2 треугольника? Моя проблема в том, что я не могу определить диагональ четырехугольника.


person C. Wang    schedule 24.11.2014    source источник
comment
Мне кажется, что вам нужно решить математическую задачу, а не проблему кодирования.   -  person mhawke    schedule 24.11.2014


Ответы (2)


Пересечь все ребра тетраэдра плоскостью. Вы получите 3 или 4 точки пересечения.

Если 3 точки, то один треугольник.

Если 4 точки, то они образуют выпуклый четырехугольник. Возьмите любые 3 точки, образующие первый треугольник. Другой треугольник формируется из четвертой точки и двух концов ребра, у которого эта точка находится справа.

В качестве альтернативы (для более общего решения) пометьте точки пересечения индексами граней, попадающих на ребро, и восстановите кольцо меток.

Пример: ребра являются общими для граней AB, CD, DA и BC; тогда это сечение ABCD.

person Yves Daoust    schedule 24.11.2014

Этот ответ описывает общий алгоритм пересечения объема и плоскости. Он вернет вершины пересечения по порядку, поэтому легко определить диагональ вашего четырехугольника.

person ryanm    schedule 01.12.2014