Autodesk Inventor API. Первые шаги/TransientGeometry: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 621:
Другой вариант интерпретации матриц — матрица задает изменение положения и ориентации. Этот подход концептуально иной, нежели использование матриц для задания систем координат, поскольку задается не абсолютное положение, а изменение положения. Чтобы это сделать, вы создаете матрицу, которая определяет желаемое изменение, а затем применяете его к другой матрице.
 
Приведем пример для демонстрации этого подхода. Положим, вы желаете переместить некоторые детали в сборке на 5 см вдоль оси <math>x</math>. Одно решение базируется на информации, которую мы узнали ранее о матрицах для задания системы координат. Оно заключается в непосредственном редактировании матрицы, чтобы переместить систему координат компонента не 5 см вдоль положительного направления оси <math>x</math>.
 
<pre>
Строка 670:
Next
</pre>
 
 
Обе программы дают одинаковые результаты. Для столь простой задачи первое решение выглядит несколько проще. Однако, если требуемое преобразование окажется заметно сложнее, чем тривиальное перемещение, то использование матрицы преобразования становится уже заметно легче, чем перевычисление каждый раз системы координат. Ниже будет показано, как для сложных преобразований можно в одной матрице комбинировать несколько преобразований.
 
Продемонстрируем «упаковку» последовательных преобразований в одной матрице. Предположим, нам необходимо повернуть компонент на 45° вокруг оси <math>x</math>, затем на 30° вокруг оси <math>y</math>, после чего переместить его на 5 см вдоль оси <math>x</math> и на 3 см вдоль оси <math>z</math>. Как мы могли бы определить матрицу, выполняющую такое преобразование? Гораздо проще определить каждое из последовательных преобразований отдельно, а затем применить функционал матриц, чтобы вычислить итоговую матрицу комбинированного преобразования. Умножение матриц порождает новую матрицу, которая содержит преобразование-комбинацию исходных. Порядок матриц-сомножителей имеет значение, поскольку влияет на результат. Данная операция выполняется с помощью метода TransformBy. Метод выполняет умножение матрицы-аргумента на текущую. В общем случае, вы имеете матрицу и преобразуете ее, изменяя с помощью другой матрицы. Рассмотрим, как это работает на практике при решении поставленной выше задачи.
 
<pre>
'Число Пи
Dim dPi As Double
dPi = Atn(1) * 4 'Число Пи
 
'ссылка на вспомогательную геометрию
Строка 706 ⟶ 704 :
' Применение трансляционного преобразования
Call oTransMatrix.TransformBy(oTempMatrix)
 
 
' Цикл по компонентам сборки