Изоповерхность

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Изоповерхность — это трёхмерный аналог изолинии, то есть поверхность, представляющая точки с постоянным значением (например, давления, температуры, скорости или плотности) в некоторой части пространства. Другими словами, это множество уровня непрерывной функции, областью определения которой является трёхмерное пространство.

Термин «изоповерхность» иногда используется для более общих областей с размерностью большей 3[1].

Изоповерхность завихренностей, вызванных лопастью пропеллера. Заметим, что изоповерхность изображена в виде цветных срезов.

Приложения[править | править код]

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

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

Многочисленные другие дисциплины, в которых используются трёхмерные данные, часто используют изоповерхности для получения информации в областях фармакологии, химии, геофизики и метеорологии.

Алгоритмы реализации[править | править код]

Алгоритм «Marching Cubes»[править | править код]

Алгоритм «marching cubes» впервые опубликован в 1987 году в сборнике работ конференции SIGGRAPH (авторы — Лоренсен и Клайн[2]). Алгоритм создаёт поверхность по пересечениям рёбер объёмной решётки с поверхностью тела. В точке, где поверхность пересекает ребро, алгоритм создаёт вершину. С использованием таблицы различных треугольников, определяемых различными шаблонами пересечений рёбер, алгоритм воспроизводит поверхность. Этот алгоритм имеет решения для реализации как в CPU, так и в GPU.

Алгоритм «Asymptotic Decider»[править | править код]

Алгоритм «asymptotic decider»[en] разработан как развитие алгоритма «marching cubes», чтобы избавиться от неопределённости в алгоритме.

Алгоритм «Marching Tetrahedra»[править | править код]

Алгоритм «marching tetrahedral»[en] разработан как развитие алгоритма «marching cubes» с целью избавиться от неопределённости в алгоритме и создавать более качественные поверхности.

Алгоритм «Surface Nets»[править | править код]

Алгоритм «Surface Nets» помещает вершину пересечения в середину вокселя, а не на рёбрах, что приводит к более гладкой поверхности.

Двойственное контурирование[править | править код]

Алгоритм двойственного контурирования впервые опубликован в 2002 году в сборнике работ конференции SIGGRAPH (авторы Ю и Лосассо[3]). Алгоритм разработан как расширение одновременно алгоритмов «surface nets» и «marching cubes». Алгоритм сохраняет двойственную вершину внутри вокселя, но не обязательно в центре. Двойственное контурирование максимально использует положение и нормаль, где поверхность пересекает рёбра вокселя, чтобы интерполировать положение двойственной вершины внутри вокселя. Это позволяет создавать ровные или гладкие поверхности, поскольку поверхностная сетка часто выглядит глыбистой или неверно скошенной[4]. Двойственное контурирование часто использует построение поверхностей с помощью октодеревьев для оптимизации числа треугольников в результирующем представлении поверхности.

Двойственное контурирование многообразия[править | править код]

Двойственное контурирование многообразия включает анализ соседей узла октодерева для поддержки непрерывности поверхности многообразия[5][6][7].

Примеры[править | править код]

Примерами изоповерхностей являются «метасферы», используемые при трёхмерной визуализации. Более общим способом построения изоповерхности является использование представления функции[en].

См. также[править | править код]

Примечания[править | править код]

  1. Hamilton–Jacobi equation (6 декабря 2020). Дата обращения: 14 декабря 2020.
  2. Lorensen, Cline, 1987.
  3. Tao Ju, Frank Losasso, Scott Schaefer, Joe Warren: Dual Contouring of Hermite Data. Архивировано 18 сентября 2017 года. In: ACM Transactions on Graphics, Volume 21 Issue 3, July 2002
  4. Smooth Voxel Terrain (Part 2) | 0 FPS. Дата обращения: 31 декабря 2020. Архивировано 8 января 2021 года.
  5. Scott Schaefer, Tao Ju, Joe Warren. Manifold Dual Contouring. Дата обращения: 31 декабря 2020. Архивировано 8 мая 2018 года.
  6. Lin X (2015-12-30). Manifold Dual Contouring. Источник. Дата обращения: 31 декабря 2020. Архивировано 11 сентября 2020 года.
  7. Lin X. Github Repository - isosurface (23 октября 2016). Дата обращения: 31 декабря 2020. Архивировано 8 ноября 2020 года.

Литература[править | править код]

Ссылки[править | править код]