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

Содержимое удалено Содержимое добавлено
Строка 455:
Матрицы очень широко применяются в задачах точного позиционирования и изменения ориентация компонентов в сборках Инвентора.
 
Матрица представляет собой двумерный массив чисел. Для трехмерного пространства Инвентор поддерживает объект Matrix, для двумерных пространств предусмотрен объект Matrix2d. Объект Matrix представляет собой матрицу размерностью 4x4 (4 строки и 4 столбца). Объект Matrix2d представляет собой матрицу размерностью 3x3. Ниже Типичнаяпоказана типичная 3D-матрица 4x4 показана ниже.
 
<math>\begin{pmatrix}
Строка 465:
<!-- [[Изображение: TransGeom_Matrix_1.png | ]] -->
 
Объект Matrix инкапсулирует в себе 16 значений. и Выглядят матрицывыглядит довольно просто,. однако вовсеТем не такменее, просто научиться их корректно применять на практике. Изиз всей вспомогательной геометрии именно матрицы являютсяоказываются наименее очевидными объектами, иосвоение вызываюткоторых наибольшиеобычно трудности утребует программистов.некоторых усилий.
Дальнейшее изложение сфокусировано на практическом подходе к матрицам, который в свое время помог автору. Надеюсь, что этот подход окажется полезным и для читателя. В зависимости от решаемой задачи, я рассматриваю матрицы с двух точек зрения. В первом случае матрица служит инструментом для задания системы координат. Во втором случае матрица описывает некоторое геометрическое преобразование. Первый подход является самым простым и наиболее полезным.
 
Дальнейшее изложение сфокусировано на практическом подходе к матрицам, который в свое время помог автору. Надеюсь, что этот подход окажется полезным и для читателя. В зависимости от решаемой задачи, яможно рассматриваюрассматривать матрицы с двух точек зрения. В первом случае матрица служит инструментом для задания системы координат. Во втором случае матрица описывает некоторое геометрическое преобразование. Первый подход является самым простым и наиболее полезным.
Рассмотрим, из чего состоит система координат, и увидим, каким образом матрица обеспечивает требуемую информацию. Координатная система описывает положение и ориентацию в пространстве. В трехмерном пространстве начало координат есть трехмерная координатная точка (x.y.z), заданная в пространстве модели. Она задает положение системы координат. Ориентация системы координат описывается направлениями главных осей x, y и z.
 
Первый подход является самым простым и наиболее полезным.
В ортогональных системах координат, которые всегда используются Инвентором, действует ряд жестких правил, уже обсуждавшихся выше, а именно, оси x,y и z являются взаимно перпендикулярными, а направление оси z удовлетворяет правилу правой руки. Все три вектора направлений являются единичными.
Рассмотрим, из чего состоит система координат, и увидим, каким образом матрица обеспечивает требуемую информацию. Координатная система описывает положение и ориентацию в пространстве. В трехмерном пространстве начало координат есть трехмерная координатная точка (x.y.z), заданная в пространстве модели. Она задает положение системы координат. Ориентация системы координат описывается направлениями главных осей x, y и z.
<math>(x.y.z)</math>, заданная в пространстве модели. Она задает положение системы координат. Ориентация системы координат описывается направлениями главных осей <math>x</math>, <math>y</math> и <math>z</math>.
 
В ортогональных системах координат, которые всегда используются Инвентором, действует ряд жесткихупомянутых правил,выше ужежёстких обсуждавшихся вышеправил, а именно, оси <math>x</math>, <math>y</math> и <math>z</math> являются взаимно перпендикулярными, а направление оси <math>z</math> удовлетворяет правилу правой руки. Все три вектора направлений являются единичными.
 
[[Изображение: TransGeom_Matrix_2.jpg | ]]
 
 
Следующий рисунок показывает, каким образом матрица хранит геометрическую информацию о системе координат. Во-первых, при использовании матрицы вы можете игнорировать нижнюю строку. В ней всегда хранятся одни и те же значения 0, 0, 0, 1. Остальные 12 значений определяют координатную систему. Первый столбец описывает компоненты направления оси <math>x</math> (1,0,0). Второй столбец задает направление оси <math>y</math> (0,1,0), третий — оси <math>z</math> (0,0,1). Последний столбец определяет положение начала системы координат (0,0,0). Показанная справа матрица называется единичной. Начало координат и направления единичных векторов совпадают с базовой системой координат. Такая матрица не описывает ни перемещения, ни вращения.
 
[[Изображение: TransGeom_Matrix_3.jpg | ]]
 
 
Рассмотрим, как применить эту информацию для описания конкретной системы координат Как будет выглядеть матрица для задания системы координат с началом в точке (10,5,0) и повёрнутой на 45° вокруг оси <math>z</math>?
 
[[Изображение: TransGeom_Matrix_4.gif | ]]
 
 
Рассмотрим сначала ось <math>x</math>. Если новая система координат повернута на 45° вокруг оси <math>z</math>, значит и ось <math>x</math> повернута относительно базовой оси <math>x</math> на 45° в положительном направлении отсчета углов. Таким образом, ось <math>x</math> направлена в направлении вектора (1, 1, 0), но поскольку вектор системы координат должен быть единичным, то результат должен выглядеть так (0.707, 0.707, 0). Соответственно, ось <math>y</math> имеет отрицательную компоненту по <math>x</math> и положительную по <math>y</math> и будет выглядеть следующим образом (-0.707, 0.707, 0). Ось <math>z</math> направления не меняет (0, 0, 1). Наконец, в четвертом столбце вписываются координаты точки начала системы координат (10, 5, 0).
 
<!-- [[Изображение: TransGeom_Matrix_5.gif | ]] -->
Строка 495 ⟶ 498 :
\end{pmatrix}</math>
 
Приведенный ниже фрагмент кода демонстрирует технику формированияприменения описаннойсредств вышеAPI матрицы.для формирования Сописанной этой целью используется ряд средств APIматрицы. Во-первых, для задания осевых векторов применяются объекты UnitVector. Это гарантирует, что все векторы, как и требуется, будут единичными. Во-вторых, для задания матрицы используется метод SetCoordinateSystem объекта Matrix, что упрощает заполнение матрицы значениями.
 
При задании координатной системы не следует забывать, что все геометрические величины задаются во внутренних единицах Инвентора, в частности, '''длины всегда задаются в сантиметрах'''.
 
<pre>
Строка 573 ⟶ 576 :
</pre>
 
Чаще всего матрицы применяются при работе с компонентами сборок, а именно, матрицы используются для задания положения и ориентации вставляемых в сборку компонентов. Рассмотрим конкретный пример, используя деталь, показанную на рисункеследующем справарисунке. Детали подобной формы оказываются полезными при отладке использующих матрицы программ, поскольку прекрасно визуализируют ориентацию системы координат и результаты манипуляций с матрицами. Деталь сконструирована так, что начало координат находится на пересечении стрелок, а длинная стрелка направлена вдоль оси <math>x</math>.
 
[[Изображение: TransGeom_Matrix_6.jpg | ]]
 
 
Если вы откроете новую сборку и вручную вставите в сборку экземпляр такой детали, то увидите, что компонент оказался в начале координат сборки, а ориентация системы координат компонента будет эквивалентна ориентации системы координат сборки. Дело в том, что для позиционирования первого компонента Инвентор использует единичную матрицу. Если мы добавим к предыдущей программе следующий фрагмент кода, деталь будет вставлена в точке (10,5,0) и повернута вокруг оси <math>z</math> на 45°.
 
<pre>