educationdemura.nethomeeducationprofileodedownloadteamwrslinkODE講座20:好きな姿勢に設定しよう!ode2007.10.25お待たせしました。約半年ぶりのODE講座です。任意のベクトルの向きに沿うように円柱を表示させる方法に関してご質問があったので、試しにサンプルプログラムを作ってみました。ここではdRFromAxisAndAngle()とdRFromZAxis()のAPIを使って実現しています。この他にdRFromEulerAngles()のAPIもありますが、ODEのオイラー角はロボット関係者にとっては標準的ではないので省略します。詳細については、よくある質問をご覧ください。b[3]を通るベクトルと同じ姿勢を取るカプセルを2個表示させます。一つはdRFromAxisAndAngle()、もう一つはより簡単なdRFromZAxis()を使った方法です。dRFromZAxisはODEのメーリングリストで紹介された方法で、dRFromAxisAndAngle()は自分で考えてみました。[rad]回転したときの回転行列Rを取得する。ソースはode/src/rotation.cppにある。このAPIを使ってベクトルの向きにカプセルの姿勢を設定するためには、自分で回転軸とその姿勢に必要な角度を計算する必要があります。ジオメトリのデフォルトの初期姿勢は、カプセルや円柱なら直立した状態です。これを重心を通るある軸を中心に回転させ、その姿勢が設定したいベクトルの向きと同じになれば良いわけです。サンプルプログラムではこれを実装しています。rz)から回転行列Rを取得する。ソースはode/src/rotation.cppにある。このAPIは回転後のz軸を入力すると自動的にx軸、y軸を求め、それから回転行列Rを求めます。カプセルや円柱をベクトルの向きにするためには、rxにb[0]-a[0]、ryにb[1]-a[1]、rzにb[2]-a[2]を入れてください。カプセルや円柱の長軸方向を中心とした回転を考える必要がない場合は、こちらが簡単です。サンプルプログラムは簡単にするために衝突検出などは省いています。bを端点とする円柱を表示しよう。Translateを使って英語に機械翻訳しました。15回分を小一時間で翻訳・公開できましたが、英訳は相当ひどいです。球と直方体の表示方法を学びます。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。(3)タイトルとURLをコピーしました。