Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Основы САПР. CAD CAM CAE

.pdf
Скачиваний:
13
Добавлен:
19.11.2023
Размер:
29.79 Mб
Скачать

482

Приложение В. Операторы Эйлера

МЕКН

КЕМН

Vl

Vl

8

МЕКН

КЕМН

б

Рис. 8.5. Действие оператора МЕКН (КЕМН)

8.1.6. MZEV и КZEVсоздать (уничтожить) ребро нулевой длины и вершину

Оператор MZEV разбивает вершину V1 на две новые вершины V1 и V2, добавляя

ребро Е1 нулевой длины (рис. В.6). Вершина разбивается вертикально, а не гори­ зонтально, поскольку новое ребро Е1 принадлежит заданным кольцам L1 и L2. Таким образом, вершина V1 будет разбита горизонтально, если на входе будут заданы кольца LЗ и L4 (см. рис. 5.31 ). Входные и выходные аргументы операто­

ров MZEV и КZEV могут быть описаны так:

MZEV (В. Ll. L2. Vl. &El. &V2)

KZEV (В. &Ll. &L2. &Vl. El.&V2)

Оператор КZEV можно интерпретировать как обратный по отношению к MZEV.

MZEV

KZEV

Рис. 8.6. Действие оператора MZEV (КZEV)

8.1.7. МРКН и КРМНсоздать (уничтожить) внешнее кольцо

и уничтожить (создать) кольцо отверстия

Оператор МРКН преобразует кольцо отверстия во внешнее кольцо (рис. В.7).

Точнее, он преобразует кольцо отверстия L1 во внешнее кольцо. Кроме того, он дает на выходе кольцо L2, чтобы зафиксировать тот факт, что кольцо L1 изна­

чально было кольцом отверстия L2. Аналогичным образом, оператор КРМН пре­

образует внешнее кольцо L1 в кольцо отверстия, принадлежащее внешнему коль­

цу L2. Исходя из этого, входные и выходные аргументы операторов МРКН и

КРМН могут быть описаны ~ак:

МРКН (В. КРМН (В.

Ll. &L2)

Ll. L2)

8.2. Применение операторов Эйлера

483

 

 

 

МРКН

КРМН

Рис. В.7. Действие оператора МРКН (КРМН)

При применении операторов МРКН и КРМН, когда кольцо отверстия L1 превраща­

ется во внешнее кольцо, моrут образоваться два несвязанных объема. Справиться

с этой проблемой можно, сохранив разъединенные объемы внутри отдельных обо­

лочек после выполнения поиска по внешним кольцам, образующим каждую из

оболочек. Точно так же необходимо объединить две отдельные оболочки, если

кольца L1 и L2 изначально принадлежат отдельным оболочкам, заданным КРМН.

8.2. Применение операторов Эйлера

Теперь приведем несколько примеров, показьшающих, как описанные выше опе­ раторы Эйлера используются для реализации функций моделирования. Другие функции моделирования моrут быть реализованы аналогичным образом.

8.2.1. Трансляционное заметание

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

собом, можно будет придать желаемую ориентацию позже. Ниже следует описа­

ние процедуры.

1.Из двух точек на двумерном профиле, который предстоит транслировать, соз­ дается начальный элемент. А именно, с помощью оператора MEWLS мы соз­

даем две вершины в этих точках, ребро между вершинами, внешнее кольцо,

обходящее эти вершины в обоих направлениях, и оболочку (рис. В.8). Кольцо изображается цепочкой со стрелками. Непременно .обратите внимание на то, как изменяется кольцо L1 по ходу процедуры. Кольцо и оболочка не имеют

физического смысла на этом шаге, но об их существовании заявляется с це­

лью выделения памяти.

Vl

Рис. В.В. Результат после шага 1

2.Точки профиля соединяются с созданным на шаге 1 начальным ребром путем

применения операторов MEV, следуя профилю до тех пор, пока все точки не

484

Приложение В. Операторы Эйлера

окажутся соединены (рис. В.9). Если профиль содержит n точек, оператор

MEV будет вызван на этом шаге n - 2 раз.

V2

Vn

Рис. 8.9. Результат после шага 2

3.Добавлением ребра между первой и последней вершиной с помощью опера­

тора MEL создается замкнутый многоугольник (рис. В.10). Обратите внима­

ние, что исходное кольцо L1 разделяется новым ребром на два новых кольца L1 и L2. Позже мы обнаружим, что L1 станет верхней гранью, а L2 - нижней

гранью создаваемого объема.

Рис. 8.10. Результат после шага 3

4.В направлении трансляции создаются ребра (рис. В.11). Для этого n раз вы­

зывается оператор MEV. Результаты вызова оператора MEV один и n раз соот­ ветственно показаны на рис. В.11 и рис. В.12. Обратите внимание, как

меняется кольцо L1 по мере применемня операторов.

Рис. 8.11. Результат после однократного

Рис. 8.12. Результат после применения

применения оператора MEV

оператора MEV n раз

5. Боковые грани создаются путем добавления соответствующих ребер

(рис. В.13 и В.14). Для этогоn раз вызывается оператор MEL Результаты вы­

зова оператора MEL один и n раз соответственно показаны на рис. В.13 и В.14.

Когда операция заметания будет закончена, L1 станет верхней гранью.

6.2. Применение операторов Эйлера

485

 

 

 

Рис. В.13. Результат однократного

Рис. В.14. Результат после применения

применения оператора MEL

оператора MEL n раз

8.2.2. Вращательное заметание

Теперь рассмотрим вращательное заметание, при котором объем создается путем вращения двумерной замкнутой области. Предположим, что функция моделиро­

вания требует от нас нарисовать двумерный профиль в плоскости xz, rде z явля­

ется осью вращения (рис. В.15). Это предположение не ограничивает возможно­

стей моделирования, поскольку объему, созданному таким способом, можно

будет придать желаемую ориентацию позже. Ниже следует описание процедуры.

Эта процедура описывает вращение на зво·, однако чтобы получить процедуру для неполноrо оборота, потребуются лишь незначительные модификации.

z

Рис. В.15. Замкнутый профиль в плоскости xz

1.Из двух точек на двумерном профиле, который предстоит вращать, создается

начальный элемент (рис. В.16). Это делается с помощью оператора MEWLS, как и в трансляционном заметании. Обратите внимание, что кольцо опреде­ ляется так же, как на рис. В.8.

z

Vl

х

Рис. в.16. Результат после шага 1

486

Приложение В. Оnераторы Эйлера

 

 

 

2.Точки профиля соединяются с созданным на шаге 1 начальным ребром путем

применения операторов MEV, следуя профилю до тех пор, пока все точки не

окажутся соединены, как и на шаге 2 процедуры трансляционного заметания.

Если профиль содержит n точек, оператор MEV будет вызван на этом шаге n - ·2 раз. Результат изображен на рис. В.17.

z

х+-------------

'

Рис. В.17. Результат nосле шага 2

3.Шаги 1 и 2 повторяются для создания зеркального отображения профиля по от­ ношению к плоскости yz (рис. В.18). После создания зеркального изображения

вызывается оператор КРМН, уничтожающий оболочку, связанную с этим изобра­

жением, и превращающий кольцо L2 в кольцо отверстия, принадлежащего L1.

z

Х+

----------~

 

Рис. В. 18. Результат nосле шага 3

4.Кольцо L2 сливается с кольцом L1 путем соединения их ребром. Оператор МЕКН создает соединительное ребро с полукруглой геометрией на плоскости ху (рис. В.19).

Рис. В. 19. Результат после шага 4

8.2. Применение операторов Эйлера

487

5.Симметричные вершины соединяются соответствующими ребрами (рис. В.20 и В.21). Каждое ребро будет иметь форму полуокружности, как и выше. Для

этого n - 1 раз выполняется оператор MEL. Результаты вызова оператора

MEL один и n- 1 раз соответственно показаны на рис. В.20 и В.21. Обратите

внимание, как меняется кольцо L1 по мере применения операторов MEL.

X4-------------------+J

Рис. 8.20. Результат после однократного применения оператора MEL

z

х+--------=======~---­

Рис. 8.21. Результат после применения оператора MEL n - 1 раз

6.Шаг 5 повторяется, в результате чего создаются грани на задней половине

объема (то есть оператор MEL применяется n раз). Чтобы понять, что про­

исходит на этом шаге, просто посмотрите на рисунки, демонстрирующие из­

менение геометрии по мере применения операторов MEL. Поскольку задняя

сторона объема лучше отображается при виде сверху, на рис. В.22, В.23

и В.24 показан вид объема сверху после выполнения шага 5 и после приме­ нения оператора MEL один и n раз соответственно. Обратите внимание на то,

как меняется кольцо L1 по мере применения операторов MEL: по завершении

операции вращательного заметания L1 становится нижней гранью.

488

Приложение В. Операторы Эйлера

Рис. 8.22. Результат после шага 5

Рис. 8.23. Результат после однократного применения оператора MEL

Ll

Рис. 8.24. Результат после применения оператора MEL n раз

8.2.3. Соэдание примитивов

Как вы помните, большинство систем твердотельного моделирования позволяют

пользователям получать объемы простых форм, на основе которых можно моде­

лировать более сложные объемы. Этот метод работает, поскольку процедуры, ис­

пользуемые для создания этих примитивов, заранее заданы, и примитиnы моrут

быть сгенерированы в любом желаемом размере в соответствии с параметрами,

8.2. Применение операторов Эйлера

489

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

шинство Примитивов можно создать с помощью этих функций моделирования.

На самом деле операторы Эйлера просто незаменимы для хранения примитивов

в системах твердотельного моделирования. Например, в листинге В.2 приведена

процедура создания примитивноrо параллелепипеда с параметрами W, D и Н, по­

казанного на рис. В.25.

z

х

Рис. 8.25. Параметры и система координат для параллелепипеда

Листинг 8.2. Процедура создания параллелепипеда

Body *Create Block (W. D. Н> douЫe W. D.-H:

{

Body *В:

Shell *S.

Loop *Ll. *L2. *LЗ. *L4. *L5. *Lб:

Edge *El. *Е2. *ЕЗ. *Е4. *Е5. *Еб:

Vertex *Vl. *V2. *VЗ. *V4. *V5. *Vб. *V7 *VB:

В~ malloc(sizeof(Body)):

MEVVLS(B. &El. &Vl. &V2. &Ll. &S. D/2. W/2. О. -D/2, -W/2. 0): MEV(B. Ll. V2. &Е2. &VЗ. -D/2. -W/2. 0):

MEV(B. Ll, VЗ. &ЕЗ. &V4. D/2. -W/2, 0): MEL(B. Ll. V4. Vl. &Е4. &l2):

MEV(B. Ll. Vl. &Е5. &V5. D/2. W/2, Н):

MEV(B. Ll. V2. &Еб. &Vб. -D/2. W/2. Н):

MEV(B. Ll, VЗ. &Е7 &V7 -D/2. -W/2. Н);

MEV(B. Ll, V4. &ЕВ. &VB. D/2. -W/2. Н): MEL(B. Ll. V5. Vб. &Е9. &LЗ):

MEL(B. Ll. Vб. V7 &ElO. &L4):

MEL(B. Ll. V7 VB. &Ell. &L5):

MEL(B. Ll. VB. V5. &Е12. &Lб): return(B):

Для реализации этих тре}( основных функций моделирования мы применили

операторы Эйлера в надлежащей последовательности. Приведенный ниже при­

мер являет собой дальнейwую демонстрацию того, что любую функцию модели­ рования можно реализоваrъ с помощью операторов Эйлера.

490

 

 

Приложение В. Оnераторы Эйлера

 

 

 

 

 

Пример 8.1

Покажите, как применить последовательность операторов Эйлера для реализа-

ции операции моделирования, которая разделит шестигранник (рис. В.26, а) на

два шестигранника (рис. В.26, е).

 

/

 

 

 

 

 

tJ

1

 

 

 

 

 

 

 

 

~ 4 1' МVЕ

t3

::

 

 

 

CJ

 

 

 

 

 

 

 

~ 4

1' MZEV

8

б

cJ :=CJ в

~ 8 1' MEL

t3 @ CJ

~ 3 1' KEL

[) ~ЬJ

~КЕМН

МРКН

г

д

[) ~[J в

Рис. 8.26. Реализация функции моделирования с nомощью оnераторов Эйлера

Решение

Необходимо последовательно вызвать следующие операторы Эйлера (рис. В.26).

О Ребра разбиваются надвое операторами MVE (рис. В.26, б). Этот оператор при-

меняется четыре раза.

ОК каждой вершине, созданной на предыдущем шаге, применяется оператор

MZEV, что приводит к результату, изображенному на рис. В.26, в. Оператор

MZEV также применяется четыре раза.

8.2. Применение оnераторов Эйлера

491

QПри помощи оператора MEL соединяются новые вершины, созданные на пре­ дыдущих шагах, и создаются грани. Оператор MEL применяется восемь раз, в

результате чего создается восемь ребер и восемь вершин (рис. В.26, г). Обра­

тите внимание, что четыре грани в середине не содержат в себе областей.

QРебра нулевой длины уничтожаются оператором KEL (рис. В.26, д). Когда ребро уничтожается оператором KEL, две грани, для которых это ребро было

общим, объединяются. Оператор KEL применяется восемь раз, в результате

чего остается одно связующее ребро нулевой длины (рис. В.26, д).

ОСвязующее ребро удаляется оператором КЕМН. Так как КЕМН превращает одно из двух колец, связанных с удаляемым ребром, в кольцо отверстия, не­ обходимо преобразовать его во внешнее кольцо с помощью оператора МРКН.

Как было сказано выше, МРКН обнаружит наличие двух несвязанных обо­

лочек и сохранит разделенные шестигранники в двух отдельных оболочках

(рис. В.27, е).

Соседние файлы в папке книги