4.1.8 Проекция скорости точки звена относительно другого звена на вектор
Значением датчика является проекция скорости точки Point2* на звене Body2 относительно звена Body1. Проекция осуществляется на вектор, зависящий от заданного значения необязательного именованного параметра fixingVector = … . Если параметр fixingVector = lockVector: или его значение не задано, то значением датчика является проекция скорости на вектор Vector*. Если параметр fixingVector = unlockVector:, то значением датчика является проекция скорости на вектор Vector.Точка Point2* и вектор Vector* являются соответственно копиями заданных объектов Point2, Vector и совпадают с ними в момент создания. Точка Point2* создается при переводе проекта из режима редактирования в режим исследования и прикрепляется к звену Body2. Если у датчика необязательный именованный параметр fixingVector = lockVector: или его значение не задано, то при переводе проекта из режима редактирования в режим исследования создается вектор Vector* и прикрепляется к звену, определяемому по необязательному именованному параметру bodyFixVector к Body1, если bodyFixVector = firstBody:, и к Body2, если bodyFixVector = secondBody:.
Если объекты Point2 и Vector не прикреплены к звеньям, то на виде проекта эти объекты не перемещаются вместе с механизмом в процессе его движения. Копии объектов Point2* и Vector* являются внутренними системными объектами и не отображаются на виде проекта.
Датчик можно использовать для определения относительной скорости между двумя точками на разных звеньях.
Пример такого использования приведен ниже, в описании датчика.
|
Размерность значения датчика - [length / time].
Датчик является дифференцируемым по параметрам положения механизма, если необязательный именованный параметр fixingVector=lockVector:

Рис. 7. Проекция скорости точки звена относительно другого звена на вектор
Синтаксис метода создания
transVelocity(Body1, Vector, Body2, Point2, fixingVector=..., bodyFixVector=...)
Обязательные позиционные параметры метода
body Body1
vector Vector
Исходный вектор для проецирования скорости. При необходимости создается копия этого вектора Vector* и прикрепляется к звену, определяемому по необязательному именованному параметру bodyFixVector.
body Body2
point Point2
Необязательные именованные параметры метода
fixingVector = [lockVector:/unlockVector:]
Параметр определяет, какой из векторов используется для проекции. Им может быть исходный вектор или вектор, который создается по исходному вектору и прикрепляется к звену, определяемому по необязательному именованному параметру bodyFixVector. Положение исходного вектора относительно первого и второго звена может изменяться в процессе движения механизма.
По умолчанию fixingVector = lockVector:.
fixingVector = lockVector:Для проекции используется вектор, который создается по исходному вектору и прикрепляется к звену, определяемому по необязательному именованному параметру bodyFixVector, при переводе проекта в режим исследования.
fixingVector = unlockVector:Для проекции используется исходный вектор, положение которого относительно первого и второго звена может изменяться в процессе движения механизма.
bodyFixVector = [firstBody:/secondBody:]
Параметр определяет, к какому звену происходит прикрепление вектора. Параметр не имеет смысла, если fixingVector = unlockVector:
По умолчанию bodyFixVector = firstBody:.
bodyFixVector = firstBody:Для проекции используется вектор, который создается по исходному вектору и прикрепляется к первому звену при переводе проекта в режим исследования.
bodyFixVector = secondBody:Для проекции используется вектор, который создается по исходному вектору и прикрепляется ко второму звену при переводе проекта в режим исследования.
Описание
При переводе проекта из режима редактирования в режим исследования для датчика выполняются следующие действия.
1. Создается точка Point2*, которая прикреплена к звену Body2 и в момент создания совпадает с точкой Point2.
2. Если именованный параметр fixingVector = lockVector: или его значение не задано, то создается вектор Vector*. Он прикреплен к звену Body1, если bodyFixVector = firstBody:, или к звену Body2, если bodyFixVector = secondBody:, и в момент создания совпадает с вектором Vector.
Если именованный параметр fixingVector = lockVector: или его значение не задано, то значением датчика является проекция на вектор Vector* скорости точки Point2* относительно звена Body1.
Если именованный параметр fixingVector = unlockVector:, то значением датчика является проекция на вектор Vector скорости точки Point2* относительно звена Body1.
Датчик можно использовать для определения относительной скорости между двумя точками на разных звеньях.
В качестве примера рассмотрим определение относительной скорости между точкой 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);
...
//датчик Vel_A_B определяет относительную скорость
// между точками A и B
sensor Vel_A_B = transVelocity(b1, vectorPP(A, B), b2, B,
fixingVector = unlockVector:);
...
|