5.1.7 Проекция отрезка, соединяющего точки звеньев, на вектор

Точки Point1* и Point2* являются копиями заданных точек Point1 и Point2, а вектор Vector1* - копией заданного вектора Vector1 и совпадают с ними в момент создания. Точки Point1* и Point2* создаются при переводе проекта из режима редактирования в режим исследования и прикрепляются соответственно к звеньям Body1 и Body2. Если у датчика необязательный именованный параметр fixingVector = lockVector: или его значение не задано, то при переводе проекта из режима редактирования в режим исследования создается вектор Vector1* и прикрепляется к звену Body1.
Если объекты Point1, Point2 и Vector1 не прикреплены к звеньям, то на виде проекта эти объекты не перемещаются вместе с механизмом в процессе его движения. Копии объектов Point1*, Point2* и Vector1* являются внутренними системными объектами и не отображаются на виде проекта.
Датчик можно использовать для определения расстояния между двумя точками на разных звеньях. Пример такого использования приведен ниже, в описании датчика.
Размерность значения датчика - [length].
Датчик является дифференцируемым по параметрам положения механизма, если необязательный именованный параметр fixingVector=lockVector:.

Рис. 127. Проекция отрезка, соединяющего точки звеньев, на вектор
Синтаксис метода создания
bodyDisplacement(Body1, Point1, Vector1, Body2, Point2, fixingVector=...)
Обязательные позиционные параметры метода
body Body1
Имя первого звена.
point Point1
Исходная точка для первого звена. Копия этой точки Point1* прикрепляется к первому звену.
vector Vector1
Исходный вектор для проецирования отрезка, соединяющего точки звеньев. При необходимости создается копия этого вектора Vector1* и прикрепляется к первому звену.
body Body2
Имя второго звена.
point Point2
Исходная точка для второго звена. Копия этой точки Point2* прикрепляется ко второму звену.
Необязательные именованные параметры метода
fixingVector = [lockVector:/unlockVector:]
Параметр определяет, какой из векторов используется для проекции. Им может быть исходный вектор или вектор, который создается по исходному вектору и прикрепляется к первому звену. Положение исходного вектора относительно первого звена может изменяться в процессе движения механизма. По умолчанию fixingVector = lockVector:.

Для проекции используется вектор, который создается по исходному вектору и прикрепляется к первому звену при переводе проекта в режим исследования.

Для проекции используется исходный вектор, положение которого относительно первого звена может изменяться в процессе движения механизма.
Описание
При переводе проекта из режима редактирования в режим исследования для датчика выполняются следующие действия.
1. Создается точка Point1*, которая прикреплена к звену Body1 и в момент создания совпадает с точкой Point1.
2. Создается точка Point2*, которая прикреплена к звену Body2 и в момент создания совпадает с точкой Point2.
3. Если именованный параметр fixingVector = lockVector: или его значение не задано, то создается вектор Vector1*. Он прикреплен к звену Body1 и в момент создания совпадает с вектором Vector1.
Если именованный параметр fixingVector = lockVector: или его значение не задано, то значением датчика является длина проекции на вектор Vector1* отрезка, соединяющего точки Point1* и Point2*.
Если именованный параметр fixingVector = unlockVector:, то значением датчика является длина проекции на вектор Vector1 отрезка, соединяющего точки Point1* и Point2*.
Датчик можно использовать для определения расстояния между двумя точками на разных звеньях. В качестве примера рассмотрим определение расстояния между точкой A на звене b1 и точкой B на звене b2. В этом случае необходимо задать вектор проекции так, чтобы в процессе движения механизма он все время был параллелен отрезку, соединяющему точки A и B. Для этого сделайте следующее.
− Создайте вектор проекции методом «вектор по двум точкам», а в качестве параметров этого метода задайте точки A и B.
− Прикрепите точку A к звену b1, а точку B - к звену b2.
− В методе создания датчика задайте именованный параметр fixingVector = unlockVector:.
Пример
...
point A = point(0 [ m ], 0 [ m ], 0 [ m ]);
point B = point(1 [ m ], 0 [ m ], 0 [ m ]);
...
body b1 = body(color = index(15));
body b1 < (A);
body b2 = body(color = index(76));
body b2 < (B);
...
//датчик delta_A_B определяет расстояние между точками A и B
sensor delta_A_B = bodyDisplacement(b1, A, vectorPP(A, B), b2, B,
fixingVector = unlockVector:);
...