わたしのためのめも



---

相対座標系で力・トルク


void dBodyAddRelForce(dBodyID, dReal fx, dReal fy, dReal fz);
void dBodyAddRelTorque(dBodyID, dReal fx, dReal fy, dReal fz);

物体の相対座標系での位置(x, y, z) に力またはトルクを作用する関数
fx fy fzは力ベクトル

---

作用点を指定して力・トルクを入力(絶対座標)


void dBodyAddForceAtPos(dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);
void dBodyAddRelForceAtPos(dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);

指定した位置ベクトルに力を作用する関数
fx fy fzは力ベクトル
px py pzは作用点(絶対座標)

---

作用点を指定して力・トルクを入力(相対座標)


void dBodyAddForceAtRelPos(dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);
void dBodyAddRelForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);

指定した位置ベクトルに力を作用する関数
fx fy fzは力ベクトル
px py pzは作用点(相対座標)

---

座標変換


void dBodyGetPosRelPoint (dBodyID b, dReal px, dReal py, dReal pz, dVector3 result)
void dBodyGetRelPointVel (dBodyID b, dReal px, dReal py, dReal pz, dVector3 result)
void dBodyVectorToWorld(dBodyID body,  dReal px, dReal py, dReal pz, dVector3 result)
void dBodyVectorFromWorld(dBodyID body,   dReal px, dReal py, dReal pz, dVector3 result);

絶対座標系の位置(px, py, pz)をbから見た相対座標系に変換する。結果はresultにコピーされる?
下は相対座標を絶対座標へ変換する
その下はbodyからみたpx,py,pzの位置ベクトルを絶対座標系へ変換,resultにコピー
その下はそれの逆.絶対座標で見た位置ベクトルをbodyの座標系に変換
---

接触モードの設定

mode意味
dContactMu2これが設定されない場合,muが両方向の摩擦として適用.設定した場合,muが方向1,mu2が方向2に作用
dContactFDir1設定された場合,fdir1が摩擦方向1となる.それ以外は接触点の法線方向と垂直になるよう摩擦方向1が決まる.
dContactBounce接触表面が反発性を持つ.反発係数はbounceで設定する.
dContactSoftERP接触点の接線方向にERPを設定する.やわらか衝突
dContactSoftCFM接触点の接線方向にCFMを設定する.やわらか衝突
dContactMotion1摩擦表面はボディの運動に無関係に移動する.ベルトコンベアが摩擦表面にあるような状況
dContactMotion2摩擦方向2に↑
dContactMotionN法線方向に↑↑
dcontactSlip1摩擦方向1に力依存のスリップ
dcontactSlip2摩擦方向2に↑
dcontactApprox1_1摩擦方向1に摩擦四角錐モデルを使用する
dcontactApprox1_2摩擦方向2に↑
dcontactApprox1両方向に↑↑

---

外積計算


void dCROSS(a,op,b,c)

外積の計算。a op b × cを計算する。ここで、opは=, +=, または-=となり、 a, b, cは3次元ベクトル。
つまり,b×cの結果をaに加算,減算,代入するコマンド

---

ジオメトリの形状を知りたい


int dGeomGetClass(dGeomID geom);

geomのクラスが返ってくる
クラス形状
dSphereClass
dBoxClass直方体
dCapsuleClassカプセル
dCylinderClassシリンダ
dPlaneClass平面
dGeomTransformClassジオメトリトランスフォーム
dRayClass光線
dTriMeshClass三角メッシュ
dSimpleSpaceClass単純スペース
dHashSpaceClassハッシュ表ベースのスペース

---

質量関係

---

質量加算


dMassAdd(dMass *a,const dMass *b)

aにbを足す
---

質量調整


void dMassAdjust(dMass *mass, dReal newmass)

massを全質量がnewmassになるよう調整する.
---

質量回転


void dMassRotate(dMass *mass, const dMatrix3 R);

質量massを回転行列R分回転させる.
よくわからないけど慣性テンソルの中身がかわる
---

**dMassTranslate(dMass *mass, dReal x, dReal y, dReal z);

massを相対座標でx,t,zの位置に調整する.重心移動できるらしい.

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます