Операторы Эйлера

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

Поскольку большинство систем твердотельного моделирования основаны на структуре данных B-Rep, мы рассмотрим операции, манипулирующие данными, организованными именно в виде структуры B-Rep. Вы уже знаете, что в структурах данных B-Rep хранятся такие топологические элементы, как оболочки, грани, кольца, ребра и вершины. Мы можем рассматривать операторы, работающие с такими элементами, то есть операторы создания ребра, удаления вершины и т. д. Если эти операторы использовать в реализации функций моделирования, сразу возникнут проблемы.

Попытка рассматривать топологический элемент отдельно от тех элементов, с которыми он связан, несет в себе внутреннее противоречие. К топологическим элементам применимо приведенное ниже равенство, которое называется формулой Эйлера—Пуанкаре [120, 23]:

Операторы Эйлера

где v — количество вершин, е — количество ребер, f — количество граней или внешних колец, h количество колец отверстий, s — количество оболочек и р — количество сквозных проходов через отверстия в теле. Можно проверить это уравнение на фигуре, изображенной на рис. 5.39. Здесь v = 16, f= 10, h = 2, s = 1 и р = 1 (посчитайте самостоятельно). Подставив эти значения в уравнение (5.1), мы получим:

      16-24 + 10-2 = 2(1-1).

то есть уравнение 5.1 оказывается верным. Из этого уравнения мы можем сделать вывод, что шесть топологических элементов не могут быть независимы одновременно. Независимость обеспечивается лишь для пяти из них.

Манипулирование топологическими элементами по отдельности оказывается малоэффективным, поскольку в большинстве случаев добавление или удаление элемента приводит к изменению состояния других элементов. Например, добавление диагонального ребра приводит к увеличению количества граней, поскольку исходная грань делится на две (рис. 5.40). Для достижения эффективности нужно иметь оператор, который самостоятельно заботился бы обо всех побочных эффектах этого рода.

Операторы Эйлера

Операторы Эйлера

Итак, было бы удобно иметь операторы, которые манипулировали бы небольшими группами топологических элементов, а не каждым из них в отдельности. Поскольку в формуле (5.1) одновременно являются независимыми пять элементов, для увеличения или уменьшения количества любого из шести топологических элементов из этого уравнения необходимо пять операторов. Таким образом нам нужно определить не более пяти операторов. Полезно было бы определить их так, чтобы они одновременно изменяли такие элементы, которые часто меняются вместе, когда конструктор варьирует форму тела Предсказать, какая именно группа топологических элементов будет изменятся наиболее часто, не так-то просто. Однако операторы должны включать топологические элементы которые по меньшей мере удовлетворяют уравнению Эйлера-Пуанкаре. Например, нам подошел бы оператор, создающий ребро и вершину, поскольку он позволяет увеличить количество ребер и вершин на единицу, сохраняя истинность уравнения (5.1). Благодаря этому объемное тело, изначально являвшееся корректным гарантированно останется таковым после изменения его топологии Операторы удовлетворяющие перечисленным выше требованиям, называются операторами Эйлера (Eujer operators). Существует много разных наборов операторов Эйлера и в каждой системе твердотельного моделирования используется свой собственный набор. Изменение, показанное на рис. 5.41, - пример применения оператора Эйлера, который называется Создать Ребро и Кольцо (Make and Edge and а Loop МEL. Этот оператор увеличивает число колец, соединяя две вершины одного кольца новым ребром. Легко представить себе использование этого операто- ра для деления грани на две части перед поднятием одной из этих частей. На рис. 5.44 перечислены операторы Эйлера, часто используемые в этой книге.

В приложении В перечислили операторы Эйлера, используемые в системе твеердотельного моделирования SINUMOD, и описали реализацию типичных функций моделирования. Список операторов практически совпадает с предложенным Чийокурой [35]. Подробное описание операторов Эйлера и их реализации можно найти в работах [106, 35].

Операторы Эйлера

 

Смотрите также