книги / Основы САПР. CAD CAM CAE
.pdf8.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
vз
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 станет верхней гранью.
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 становится нижней гранью.
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ъ с помощью операторов Эйлера.
8.2. Применение оnераторов Эйлера |
491 |
QПри помощи оператора MEL соединяются новые вершины, созданные на пре дыдущих шагах, и создаются грани. Оператор MEL применяется восемь раз, в
результате чего создается восемь ребер и восемь вершин (рис. В.26, г). Обра
тите внимание, что четыре грани в середине не содержат в себе областей.
QРебра нулевой длины уничтожаются оператором KEL (рис. В.26, д). Когда ребро уничтожается оператором KEL, две грани, для которых это ребро было
общим, объединяются. Оператор KEL применяется восемь раз, в результате
чего остается одно связующее ребро нулевой длины (рис. В.26, д).
ОСвязующее ребро удаляется оператором КЕМН. Так как КЕМН превращает одно из двух колец, связанных с удаляемым ребром, в кольцо отверстия, не обходимо преобразовать его во внешнее кольцо с помощью оператора МРКН.
Как было сказано выше, МРКН обнаружит наличие двух несвязанных обо
лочек и сохранит разделенные шестигранники в двух отдельных оболочках
(рис. В.27, е).