Рефераты. Задачи графических преобразований в приложениях моделирования с использованием ЭВМ

sin y     0     cos y    0

0         0         0         1


Матрица вращения вокруг оси аппикат на угол c:

 



           [ Rz ] =

 
cos c   sin c     0      0

-sin

(4.3)

 
c    cos c    0      0

0         0            1     0

0         0            0      1



Полезно обратить внимание на место знака « - » в каждой из трех приведенных матриц.

Б. Матрица растяжения-сжатия:


 


a      0      0      0

[ D ] =

 

                                     (4.4)

 
0      b      0      0

0      0      g      0

0      0      0      1


где

a > 0 – коэффицент растяжения (сжатия) вдоль оси абсцисс;

b > 0 – коэффицент растяжения (сжатия) вдоль оси ординат;

g > 0 – коэффицент растяжения (сжатия) вдоль оси аппликат.


В. Матрицы отражения

    Матрица отражения относительно плоскости ху:

 

1      0      0      0

      [ Mz ] =

 

                                     (4.5)

 
0      1      0      0

0      0      -1      0

0      0      0      1


Матрица отражения относительно плоскости yz:

 


-1      0      0      0

[ Mx ] =

 

                                     (4.6)

 
0      1      0      0

0      0      1      0

0      0      0      1


  Матрица отражения относительно плоскости zx:

 


1      0      0      0

[ My ] =

 

                                     (4.7)

 
0      -1      0      0

0      0      1      0

0      0      0      1


Г. Матрица переноса (здесь (l, m, n) - вектор переноса):

 


1      0      0      0

[ T ] =

 

                                     (4.8)

 
0      1      0      0

0      0      1      0

l      m      n      1


Как и в двумерном случае, все выписанные матрицы невырождены.

Приведем важный пример построения матрицы сложного преобразования по его геометрическому описанию.

Пример 3. Построить матрицу вращения на угол j вокруг прямой L, проходящей через точку А (a, b, c) и имеющую направляющий вектор (l, m, n). Можно считать, что направляющий вектор прямой является единичным:

l2 + m2 + n2 = 1

На рис. 10 схематично показано, матрицу какого преобразования требуется найти.



Z

 

Y

 
                                                                              L                                                                                             



 



X

Рис. 10


Решение сформулированной задачи разбивается на несколько шагов. Опишем последовательно каждый из них.

1-й  шаг. Перенос на вектор –А (-a, -b, -c) при помощи матрицы



 


1      0      0      0

[ T ] =

 

                                     (4.9)

 
0      1      0      0

0      0      1      0

-a     -b     -c      1


            В результате этого преноса мы добиваемся того, чтобы прямая L проходила через начало координат.

            2-й  шаг. Совмещение оси аппликатс прямой L двумя поворотами вокруг оси абсцисс и оси ординат.

            1-й поворот – вокруг оси абсцисс на угол y (подлежащий определению). Чтобы найти этот угол, рассмотрим ортогональную проекцию L’ исходной прямой L на плоскость X = 0 (рис. 11).



Z

 

X

 
L’    L       q         

                                                 Y

             Y                 




        0

 





Рис. 11


Направляющий вектор прямой L’ определяется просто – он равен

(0, m, n).

Отсюда сразу же вытекает, что


cos y = n / d,       sin y = m / d,                                                                  (4.10)


где


                                                          d =     m2 + n2                                                                        (4.11)


            Соответствующая матрица вращения имеет следующий вид:


 


1      0      0      0

                                (4.12)

 

[ Rx ] =

 
0    n/d    m/d   0

0    -m/d   n/d   0

0      0      0      1





Под действием преобразования, описываемого этой матрицей, координаты вектора (l, m, n) изменятся. Подсчитав их, в результате получим


                                             (l, m, n, 1)[ Rx ] = (l, 0, d, 1).                                     (4.13)


2-й поворот вокруг оси оси ординат на угол q, определяемый соотношениями

                                                  сos q = l,  sin q = -d                                              (4.14)


Cоответствующая матрица вращения записывается в следующем виде:

l      0       d     0

[ Ry ] =

 

                                     (4.15)

 
0      1      0      0

-d      0      l      0

0      0      0      1


3-й  шаг. Вращение вокруг прямой L на заданный угол j.

Так ка теперь прямая L совпадает с осью аппликат, то соответствующая матрица имеет следующий вид:


 



           [ Rz ] =

 
cos j   sin j     0      0

-sin

(4.16)

 
j    cos j    0      0

0         0            1     0

0         0            0      1


4-й  шаг. Поворот вокруг оси ординат на угол -q.

5-й  шаг. Поворот вокруг оси абсцисс на угол -y.

Однако вращение в пространстве некоммутативно. Поэтому порядок, в котором проводятся вращения, является весьма существенным.

6-й  шаг. Перенос на вектор А (a, b, c).

Перемножив найденные матрицы в порядке их построения, получим следующую матрицу:

[ T ][ Rx ][ Ry ][ Rz ][ Ry ]-1[ Rx ]-1 [ T ]-1.


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




l2 + cos j(1 – l2)               l(1 – cos j)m + n sin j       l(1 – cos j)n – m sin j          0

l(1 – cos j)m – n sin j       m2 + cos j(1 – m2)                   m(1 – cos j)n + lsin j     0

l(1 – cos j)n + m sin j         m(1 – cos j)n – lsin j            n2 + cos j(1 - n2)              0

0                                          0                                                0                                        1



Рассматривая примеры подобного рода, мы будем получать в результате невырожденные матрицы вида




a1     a2    a3    0

[ А ] =

 

                                     (4.17)

 
b1     b2     b3     0

g1     g2      g3     0

l      m      n      1


При помощи таких матриц можно преобразовать любые плоские и пространственные фигуры.

Пример 4.  Требуется подвергнуть заданному аффинному преобразованию выпуклый многогранник.

Для этого сначала по геометрическому описанию отображения находим его матрицу [ A ]. Замечая далее, что произвольный выпуклый многогранник однозначно задается набором всех своих вершин

Vi ( xi,  yi,  zi),   i = 1,…,n,

Строим матрицу

 


x1      y1      z1      1

                                          V =       .  .  .  .  .  .  .  .  .  .                                             (4.18)        

xn      yn      zn      1



Подвергая этот набор преобразованию, описываемому найденной невырожденной матрицей четвертого порядка, [ V ][ A ], мы получаем набор вершин нового выпуклого многогранника – образа исходного (рис. 12).


      Z

 




        0                                       

                                                Y    

      X


Рис. 11



5.     Заключение

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

  Программа построена на основе принципов объектно-ориентированного программирования (ООП). Такой подход был признан оптимальным для данной задачи с учетом того, что модель станка строится на основе компоновочного кода. При реализации сначала была рассмотрена цепочка узлов, представляющая станок. Это привело к трудностям и неудобству реализации отображения 3-х мерной модели в эмулированном графическом пространстве. Поэтому была реализована концепция, рассматривающая станок, как “дерево” объектов, исходя из того, что один из узлов станка, а именно станина, является неподвижным и зафиксированным жесткой привязкой к системе координат. Таким образом, полученная модель представляла собой объект, из которого выходили две “ветви” объектов.

Принципы ООП позволили создать базовый класс, из которого были получены дочерние классы для станины и остальных узлов. Каждый объект инкапсулировал свои свойства и “видел” лишь свои геометрические размеры и координаты, в которые он должен быть помещен, в результате чего модель получилась гибкой.

6.     Список используемой литературы.

1.      Шишкин Е. В., Боресков А. В. Компьютерная графика. М.: Диалог-МИФИ, 1995. – 288 с., ил.

2.  Вайсберг А. В., Гриценко М. Е. Формирование структуры станка на ранних стадиях проектирования. – Точность автоматизированных производств (ТАП – 97). Сборник статей международной научно-технической конференции. Пенза, 1997., с. 52 – 53.



Страницы: 1, 2, 3, 4



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.