Springheadで使用可能な関節の種類は
ヒンジ (PHHingeIf)
スライダ (PHSliderIf)
パスジョイント (PHPathJointIf)
ボールジョイント (PHBallJointIf)
バネ (PHSpringIf)
の5種類です.種類ごとに,自由度・拘束の仕方・変位の求め方が異なります.
ヒンジは軸回転関節です. ヒンジは,Fig #.#.#に示すようにソケットとプラグのz軸が一致するように拘束します. このときソケットのy軸とプラグのy軸の成す角(x軸同士でも同じことですが)が関節変位となります.
関節変位を取得するAPIは自由度関節(PH1DJointIf)で共通です.そのためヒンジに限らずスライダ・パスジョイントでも使用できます.
= =0trueptPH1DJointIfクラス height0.75pt
関節の変位を取得します.変位のはかり方は関節の種類に依存します.
スライダは自由度の直動関節です. スライダは,Fig #.#.#に示すようにソケットとプラグのz軸が同一直線上に乗り,かつ両者のx軸,y軸が同じ向きを向くように拘束します. このときソケットの原点からプラグの原点までが関節変位となります.
パスジョイントはソケットとプラグの相対位置関係をパラメータの自由曲線で表現する関節です.詳しくは後述します.
T.B.D.
|
|
(a) |
(b) |
ボールジョイントは自由度の回転関節です. ボールジョイントはFig #.#.#(a)に示すようにソケットとプラグの原点が一致するように拘束します. ソケット座標系をプラグ座標系に変換するようなクォータニオンが変位となります.
一方で,ボールジョイントの変位はオイラー角の一種であるSwing-Twist座標系(Fig #.#.#(b))で取得することもできます. ソケットとプラグのz軸同士がなす角をスイング角(Swing),プラグのz軸をソケットのx-y平面への射影がソケットのx軸となす角をスイング方位角(Swing-Dir),プラグのz軸周りの回転角度をツイスト角(Twist)と呼びます.Swing-Twist座標系は,後述するボールジョイントの関節可動範囲の指定に用います.
この2種類の変位は,それぞれに対応した関数で取得することができます. = =0trueptPHBallJointクラス height0.75pt
ソケット座標系をプラグ座標系に変換するようなクォータニオンを返します.
Swing-Twist座標系で表現された関節変位を返します.
剛体間を連結するダンパ付きバネです.ソケット座標系とプラグ座標系が一致するときが自然状態で,位置の変位・姿勢の変位に比例して自然状態に戻すような力・モーメントを発生します.並進運動に作用するバネ・ダンパ係数と,回転運動に作用するバネ・ダンパ係数はディスクリプタによってそれぞれ設定できます.
=
PHSpringDesc |
||
Vec3d spring & 並進運動に対するバネ係数 |
||
Vec3d damper & 並進運動に対するダンパ係数 |
||
double springOri & 回転運動に対するバネ係数 |
||
double damperOri & 回転運動に対するダンパ係数 |