Найти все точки с целочисленными координатами внутри тетраэдра

Пытаюсь найти все точки с целочисленными координатами, которые лежат внутри тетраэдра (хочу как-то прокрутить их). Я знаю координаты четырех точек (A, B, C, D), определяющих тетраэдр.

В настоящее время я нахожу ограничивающую рамку тетраэдра (минимальные и максимальные координаты x, y, z A, B, C, D), а затем выполняю цикл по всем точкам внутри ограничивающей рамки. коробка. Для каждой такой точки я вычисляю барицентрические координаты (используя уравнения из Википедии) и проверяю, находится ли точка внутри тетраэдра (если какая-либо из барицентрических координат отрицательна или больше 1, точка не т внутри).

Есть ли лучший способ сделать это? В настоящее время вероятность того, что точка, которую я тестирую (из ограничивающей рамки), действительно находится внутри тетраэдра, составляет около 1/6, поэтому я думаю, что делаю слишком много ненужных вычислений.

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

5
задан ppalasek 15 May 2012 в 00:19
поделиться