Метод "марширующих кубов"

Класс MarchingCubes предназначен для получения пересечения аппроксимируемой поверхности и куба в методе "марширующих кубов". Вершины куба кодируются восьмибитным числом, а результат выводится в виде массива массивов рёбер, которые поверхность пересекает. Нумерация вершин и рёбер показана на рисунке:

//          Нумерация вершин и рёбер куба
//
//         4-----7        +-7---+        +-----+
//        /|    /|       4|    6|       /8    /1
//       5-----6 |      +---5-+ |      +-----+ 1
//       | 0---|-3      | +-3-|-+      9 +---1-+
//       |/    |/       |0    |2       |/    0/
//       1-----2        +---1-+        +-----+

class MarchingCubes
{
    DynArray<DynArray<nat> > poly[256];
public:
    MarchingCubes();
    CArrRef<DynArray<nat> > operator[] ( nat8 i ) const
    {
        return poly[i];
    }
};
Описание шаблонов классов CArrRef и DynArray находится здесь.

Исходники находятся здесь

Наверх