Отображение трехмерной точки на грань Платонового (архимедова) тела

Я хочу вычислить результирующую сетку поверхности платоновых (или, может быть, архимедовых) тел, примененную с картой смещения для каждой грани. Сетка должна отображать мелкие детали карты смещения и быть водонепроницаемой и многообразной (для 3D-печати).

Для этого я подумал об использовании неявной функции CGAL для создания трехмерной сетки поверхности. Затем я сопоставил каждую точку вокселя с соответствующим лицом, применил преобразование системы координат из воксельного пространства к лицу и просмотрел поле высоты лица. Я знаю, как построить матрицу преобразования для каждого лица, поэтому я подумал о следующем алгоритме проверки, содержится ли воксель в солиде:

  1. Find the face which is nearest to the point A
    • For the given point A, find the 3 nearest vertexes of the platonic (archimedian) solid by iterating all vertexes and compare the distance to A
    • Отсортируйте 3 вершины по наименьшему индексу в массиве вершин.
    • Создайте целое число (лексикографический индекс) из индексов вершин: (v[0]nn+v[1]*n+v[3]*1), где n — количество вершин.
    • Перебрать массив кортежей (лексикографический индекс, лицо) и найти лицо с тем же лексикографическим индексом
  2. Каждое лицо имеет предварительно рассчитанную матрицу преобразования и поле высоты. Примените матрицу преобразования и найдите поле высоты, чтобы узнать, находится ли A внутри или снаружи твердого тела.

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


person Sebastian Baltes    schedule 15.03.2013    source источник


Ответы (1)


Подход, основанный на вокселах, не удался: много артефактов, низкое разрешение. Я закончил тем, что создал 2D-карты высот, применил к ним алгоритм упрощения, затем спроецировал их на грани твердого тела и, наконец, объединил сетки граней в одну сетку по специальному алгоритму.

person Sebastian Baltes    schedule 31.07.2013