×

4.1.9 Проекция ускорения точки звена относительно другого звена на вектор

 Значением датчика является проекция ускорения точки Point2* на звене Body2 относительно звена Body1. Проекция осуществляется на вектор, зависящий от заданного значения необязательного именованного параметра fixingVector = … . Если параметр fixingVector = lockVector: или его значение не задано, то значением датчика является проекция ускорения на вектор Vector1*. Если параметр fixingVector = unlockVector:, то значением датчика является проекция ускорения на вектор Vector1.
 
Рис. 8. Проекция ускорения точки звена относительно другого звена на вектор
 
Точка Point2* и вектор Vector1* являются соответственно копиями заданных объектов Point2, Vector1 и совпадают с ними в момент создания. Точка Point2* создается при переводе проекта из режима редактирования в режим исследования и прикрепляется к звену Body2. Если у датчика необязательный именованный параметр fixingVector = lockVector: или его значение не задано, то при переводе проекта из режима редактирования в режим исследования создается вектор Vector1* и прикрепляется к звену Body1.
Если объекты Point2 и Vector1 не прикреплены к звеньям, то на виде проекта эти объекты не перемещаются вместе с механизмом в процессе его движения. Копии объектов Point2* и Vector1* являются внутренними системными объектами и не отображаются на виде проекта.
Датчик можно использовать для определения относительного ускорения между двумя точками на разных звеньях.
Пример такого использования приведен ниже, в описании датчика.
Размерность значения датчика - [length / time2].
Датчик не является дифференцируемым по параметрам положения механизма.
 
Синтаксис метода создания
transAcceleration(Body1, Vector1, Body2, Point2, fixingVector=..., valueAveraging=...)
 
Обязательные позиционные параметры метода
body Body1
Имя первого звена.
vector Vector1
Исходный вектор для проецирования ускорения. При необходимости создается копия этого вектора Vector1* и прикрепляется к первому звену.
body Body2
Имя второго звена.
point Point2
Исходная точка для второго звена. Копия этой точки Point2* прикрепляется ко второму звену.
 
Необязательные именованные параметры метода
fixingVector = [lockVector:/unlockVector:]
Параметр определяет, какой из векторов используется для проекции. Им может быть исходный вектор или вектор, который создается по исходному вектору и прикрепляется к звену, определяемому по необязательному именованному параметру bodyFixVector. Положение исходного вектора относительно первого и второго звена может изменяться в процессе движения механизма. По умолчанию fixingVector = lockVector:.
 fixingVector = lockVector:
Для проекции используется вектор, который создается по исходному вектору и прикрепляется к звену, определяемому по необязательному именованному параметру bodyFixVector, при переводе проекта в режим исследования.
 fixingVector = unlockVector:
Для проекции используется исходный вектор, положение которого относительно первого и второго звена может изменяться в процессе движения механизма.
 valueAveraging = scalar [-]
Количество шагов интегрирования, используемых для усреднения значения. Значение 0 соответствует отсутствию усреднения.
По умолчанию valueAveraging = 0.
 
Описание
При переводе проекта из режима редактирования в режим исследования для датчика выполняются следующие действия.
1.    Создается точка Point2*, которая прикреплена к звену Body2 и в момент создания совпадает с точкой Point2.
2.    Если именованный параметр fixingVector = lockVector: или его значение не задано, то создается вектор Vector1*. Он прикреплен к звену Body1 и в момент создания совпадает с вектором Vector1.
Если именованный параметр fixingVector = lockVector: или его значение не задано, то значением датчика является проекция на вектор Vector1* ускорения точки Point2* относительно звена Body1.
Если именованный параметр fixingVector = unlockVector:, то значением датчика является проекция на вектор Vector1 ускорения точки 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);
...
//датчик Accel_A_B определяет относительное ускорение
//                   между точками A и B
sensor Accel_A_B = trans Acceleration(b1, vectorPP(A, B), b2, B,
           fixingVector = unlockVector:);
...