API of ODE

注:ODEã®å˜ä½ç³»ã¯çµ±ä¸€ãŒå–れã¦ã„れã°ä½•ã§ã‚‚ã‹ã¾ã„ã¾ã›ã‚“.ãŸã ã—,角度ã¯radianã¨ãªã‚Šã¾ã™ï¼Žã“ã®ã‚µã‚¤ãƒˆã‚„ODE本ã§ã¯æ¨™æº–çš„ãªSIå˜ä½ç³»ã‚’使ã£ã¦ã„ã¾ã™ï¼ŽãªãŠã€drawstuffã®APIã§ã‚ã‚‹dsSetViewpoint(float xyz[3], float hpr[3])ã®è¦–ç·šæ–¹å‘ã®è§’度を設定ã™ã‚‹é…列hprã®å˜ä½ã ã‘ã¯åº¦ã¨ãªã‚Šã¾ã™ã€‚

Open Dynamics Engineã®API集ã§ã™ï¼Žï¼’å¹´å‰ã«ODE本ã«ä»˜éŒ²ã§æŽ²è¼‰ã—よã†ã¨ã—ã¾ã—ãŸãŒãƒšãƒ¼ã‚¸æ•°ã®åˆ¶ç´„ã§æ–­å¿µã—ã¾ã—ãŸï¼Žå°‘ã—å¤ã完全ãªAPI集ã§ã¯ã‚りã¾ã›ã‚“ãŒï¼Œå‚考ã«ãªã‚‹ã“ã¨ã‚’願ã£ã¦æŽ²è¼‰ã—ã¾ã™ï¼Žã¾ãŸï¼Œåˆ©ä¾¿æ€§ã®ãŸã‚ã«drawstuffã®APIも入れã¦ã„ã¾ã™ï¼Ždrawstuffã®APIã¯å°æ–‡å­—ã®dsã§å§‹ã¾ã‚Šï¼ŒSã®é …ã«å…¥ã‚Œã¦ã„ã¾ã™ï¼Žæ™‚間を見ã¤ã‘ã¦ãƒ–ラッシュアップã—ã¦ã„ããŸã„ã¨æ€ã£ã¦ã„ã¾ã™ï¼Ž


A

  • int dAllocateODEDataForThread(unsigned AllocateFlags);

ODEを使ã†å…¨ã¦ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã‹ã‚‰å‘¼ã³å‡ºã•ãªã‘れã°ãªã‚‰ãªã„.AllocateFlagsã¯ï¼ã¾ãŸã¯dAllocateFlagCollisinDateã§ã‚る.

  • int dAreConnected (dBodyID body1, dBodyID body2);

ボディbody1ã¨body2ãŒã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã§çµåˆã•れã¦ã„ãŸã‚‰1 ã‚’è¿”ã—,ãれ以外ã¯0ã‚’è¿”ã™ï¼Ž

  • int dAreConnectedExcluding (dBodyID body1, dBodyID body2, int joint_type);

ボディ1ã¨ãƒœãƒ‡ã‚£2ãŒjoint_typeã‚’æŒãŸãªã„ジョイントã§çµåˆã•れã¦ã„ãŸã‚‰1 ã‚’è¿”ã—,ãれ以外ã¯0 ã‚’ã™ï¼Žjoint_typeã¯dJointTypeXXX定数ã§ã‚る.ã“ã®å®šæ•°ã¯dJointGetType()ã‚’å‚照.ã“れã¯2 ã¤ã®ãƒœãƒ‡ã‚£ã«æŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’追加ã™ã‚‹ã‹ã©ã†ã‹æ±ºã‚ã‚‹ã¨ãã«å½¹ç«‹ã¤ï¼Žã‚‚ã—,ã™ã§ã«æŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆä»¥å¤–ã®ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã§çµåˆã•れã¦ã„ã‚‹å ´åˆã«æŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’追加ã™ã‚‹ã“ã¨ã¯é©åˆ‡ã§ã¯ãªã„ãŒï¼ŒæŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã§çµåˆã•れã¦ã„ã‚‹å ´åˆã«æŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’追加ã™ã‚‹ã“ã¨ã¯å•題ãªã„.

B

  • void dBodyAddForce(dBodyID, dReal fx, dReal fy, dReal fz);
  • void dBodyAddTorque(dBodyID, dReal fx, dReal fy, dReal fz);
  • void dBodyAddRelForce(dBodyID, dReal fx, dReal fy, dReal fz);
  • void dBodyAddRelTorque(dBodyID, dReal fx, dReal fy, dReal fz);
  • void dBodyAddForceAtPos(dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);
  • void dBodyAddForceAtRelPos(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);
  • void dBodyAddRelForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);

力をボディã«çµ¶å¯¾åº§æ¨™ç³»ã¾ãŸã¯ç›¸å¯¾åº§æ¨™ç³»ã§ä¸Žãˆã‚‹ï¼ŽåŠ›ã¯å„ボディã«è“„ç©ã•れるãŒï¼Œå„時間ステップ毎ã«0 ã«åˆæœŸåŒ–ã•れる.***RelForceã¨***RelTorque ã¯ç‰©ä½“ã®ç›¸å¯¾åº§æ¨™ç³»ã§ã®ä½ç½®(x, y, z) ã«åŠ›ã¾ãŸã¯ãƒˆãƒ«ã‚¯ã‚’作用ã™ã‚‹é–¢æ•°ã§ï¼Œ***ForceAtPos ã¨***ForceAtRelPos ã¯æŒ‡å®šã—ãŸä½ç½®ãƒ™ã‚¯ãƒˆãƒ«ã«åŠ›ã‚’ä½œç”¨ã™ã‚‹é–¢æ•°ã§ã‚る.

  • dBodyID dBodyCreate(dWorldID);

与ãˆã‚‰ã‚ŒãŸãƒ¯ãƒ¼ãƒ«ãƒ‰ã«ãƒœãƒ‡ã‚£ã‚’絶対座標系ã§ã®ä½ç½®(0,0,0) ã«ç”Ÿæˆã—,ãã®ID 番å·ã‚’è¿”ã™.

  • void dBodyDestroy(dBodyID);

dBodyID ã§æŒ‡å®šã•れãŸãƒœãƒ‡ã‚£ã‚’破壊ã™ã‚‹ï¼Žãƒœãƒ‡ã‚£ã«æŽ¥ç¶šã•れã¦ã„ãŸã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã¯æ©Ÿèƒ½ã—ãªããªã‚‹ãŒç ´å£Šã¯ã•れãªã„.

  • const dReal *dBodyGetForce(dBodyID);
  • const dReal *dBodyGetTorque(dBodyID);

ボディã«åŠ ãˆã‚‰ã‚Œã¦ã„る力ã€ãƒˆãƒ«ã‚¯ã‚’å–å¾—ã™ã‚‹ï¼Žé–¢ç¯€ã§çµåˆã•れã¦ã„る複数ã®ãƒœãƒ‡ã‚£ã®åŠ›ï¼Œãƒˆãƒ«ã‚¯ã‚’å–å¾—ã—ãŸã„å ´åˆã¯ï¼ŒdJointGetFeedback()を使ã†ã“ã¨ï¼Ž

  • void dBodyGetPointVel (dBodyID b, dReal px, dReal py, dReal pz,   dVector3 result)
絶対座標系ã§è¡¨ã•れã¦ã„ã‚‹ä½ç½®(px, py, pz)ã®é€Ÿåº¦ã‚’絶対座標系ã§å–å¾—ã™ã‚‹ã€‚
  • const dReal *dBodyGetPosition(dBodyID);

ボディã®ä½ç½®ã‚’å–å¾—ã™ã‚‹ï¼Žè¦ç´ æ•°ï¼“個ã®é…列ã§ã‚るボディã®ä½ç½®(x, y, z) ã¸ã®const ãƒã‚¤ãƒ³ã‚¿ã‚’è¿”ã™ï¼Ž

  • void dBodyGetPosRelPoint (dBodyID b, dReal px, dReal py, dReal pz, dVector3 result)


絶対座標系ã®ä½ç½®(px, py, pz)を相対座標系ã«å¤‰æ›ã™ã‚‹ã€‚dBodyGetRelPointPosã®å対。


  • void dBodyGetRelPointVel (dBodyID b, dReal px, dReal py, dReal pz, dVector3 result)
ボディ座標系ã§è¡¨ã•れã¦ã„ã‚‹ä½ç½®(px, py, pz)ã®é€Ÿåº¦ã‚’絶対座標系ã§å–å¾—ã™ã‚‹ã€‚
  • void dBodyGetRelPointPos (dBodyID b, dReal px, dReal py, dReal pz, dVector3 result)
相対座標系ã®ä½ç½®(px, py, pz)を絶対座標系ã«å¤‰æ›ã™ã‚‹ã€‚
  • const dReal *dBodyGetRotation(dBodyID);

ボディã®ä½ç½®ã—,dBodyGetRotation ã¯å›žè»¢è¡Œåˆ—(4行3列)ã¸ã®constãƒã‚¤ãƒ³ã‚¿ã‚’è¿”ã™ï¼Ž

  • const dReal * dBodyGetTorque(dBodyID);

ボディã«åŠ ãˆã‚‰ã‚Œã¦ã„るトルクをå–å¾—ã™ã‚‹ï¼Ž

  • void dBodySetMass(dBodyID, const dMass *mass);

質é‡ãƒ‘ラメータをボディã«ã‚»ãƒƒãƒˆã™ã‚‹ï¼Ž

  • void dBodySetPosition(dBodyID, dReal x, dReal y, dReal z);

dBodyID 番å·ã®ã¤ã„ãŸãƒœãƒ‡ã‚£ã®ä½ç½®ã‚’絶対座標系(x,y,z) ã«è¨­å®šã™ã‚‹.

  • dBodySetQuaternion(dBodyID body, const dQuaternion q);

body ã«ã‚¯ã‚ªãƒ¼ã‚¿ãƒ‹ã‚ªãƒ³q を設定ã™ã‚‹ï¼Ž

  • void dBodySetRotation(dBodyID, const dMatrix3 R);

ボディã®å§¿å‹¢ã‚’回転行列R ã«è¨­å®šã™ã‚‹.

  • void dBodyVectorToWorld(dBodyID body,  dReal px, dReal py, dReal pz, dVector3 result);

bodyã®åº§æ¨™ç³»ï¼ˆç›¸å¯¾åº§æ¨™ç³»ï¼‰ã®ãƒ™ã‚¯ãƒˆãƒ«(px, py, pz)を世界座標系(絶対座標系)ã¸å¤‰æ›ã—ï¼Œçµæžœã‚’resultã«æ ¼ç´ã™ã‚‹ï¼Ž

  • void dBodyVectorFromWorld(dBodyID body,   dReal px, dReal py, dReal pz, dVector3 result);

世界座標系(絶対座標系)ã®ãƒ™ã‚¯ãƒˆãƒ«(px, py, pz)ã‚’bodyã®åº§æ¨™ç³»ï¼ˆç›¸å¯¾åº§æ¨™ç³»ï¼‰ã¸å¤‰æ›ã—ï¼Œçµæžœã‚’resultã«æ ¼ç´ã™ã‚‹ï¼Ž


C

  • void dCleanupODEAllDataForThread();

ライブラリãŒdInitFlagManualThreadCleanupã§åˆæœŸåŒ–ã•れãŸã¨ãã ã‘,ライブラリをクリーンアップã™ã‚‹ãŸã‚(終了ã•ã›ã‚‹å‰ã®ãŠæŽƒé™¤ï¼‰ã«åˆ©ç”¨ã™ã‚‹ï¼Ž

  • void dCloseODE();

ライブラリを終了ã™ã‚‹ï¼ŽdInitODE2()ã¾ãŸã¯dInitODE()ãŒå…ˆã«å‘¼ã³å‡ºã•れã¦ã„ãªã‘れã°ã„ã‘ãªã„.ODEをシングルスレッドã‹ã‚‰ä½¿ã†å ´åˆã®ã¿ä½¿ç”¨ã™ã‚‹ã“ã¨ï¼Ž

  • int dCollide(dGeomID o1, dGeomID o2, int flags, dContactGeom *contact, int skip);

与ãˆã‚‰ã‚ŒãŸï¼’ã¤ã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªo1 ã¨o2 ãŒäº¤å·®ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ã¨ãã«ï¼Œãã‚Œã‚‰ã®æŽ¥è§¦æƒ…å ±ã‚’ç”Ÿæˆã™ã‚‹ï¼Žå¼•æ•°flags ã¯ç¾åœ¨ã®ã¨ã“ã‚ã‚¸ã‚ªãƒ¡ãƒˆãƒªãŒæŽ¥è§¦ã—ãŸéš›ã®æœ€å¤§æŽ¥è§¦ç‚¹æ•°ã‚’指定ã™ã‚‹æ•´æ•°ã§ã‚る.ãれãŒ0 ã«è¨­å®šã•れãŸå ´åˆã¯, 接触点ãŒï¼‘個ã‚ã‚‹ã‚‚ã®ã¨ã—ã¦è¨ˆç®—ã•れる.

引数contact ã¯dContactGeom 構造体é…列ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã§ã‚る.ã“ã®æ§‹é€ ä½“ã¯å°‘ãªãã¨ã‚‚æŽ¥è§¦ç‚¹ã®æœ€å¤§æ•°åˆ†ã®æƒ…å ±ã‚’ä¿æŒã§ããªã‘れã°ãªã‚‰ãªã„.dContactGeom 構造体ã¯ã‚ã‚‹é…列ã®ä¸­ã«å¤§ããªæ§‹é€ ä½“ã¨ã—ã¦åŸ‹ã‚è¾¼ã¾ã‚Œã¦ã„ã‚‹.

引数skip ã¯é…列中ã®ã‚ã‚‹dContactGeom 構造体ã‹ã‚‰æ¬¡ã®ãれã¸ã®ãƒã‚¤ãƒˆã‚ªãƒ•セットã§ã‚る.skip ã®ã‚µã‚¤ã‚ºãŒsizeof(dContact)ãªã‚‰ã°é€šå¸¸ï¼ˆC 言語スタイル)ã®é…列ã§ã‚り,ãれよりå°ã•ã„å ´åˆã¯ã‚¨ãƒ©ãƒ¼ã¨ãªã‚‹ï¼Žã‚‚ã—,ジオメトリãŒäº¤å·®ã—ãŸã‚‰ï¼ˆæŽ¥è§¦é…列を更新ã—ã¦ï¼‰æŽ¥è§¦ç‚¹æ•°ã‚’è¿”ã™ï¼Žäº¤å·®ã—ãªã„å ´åˆã¯0 ã‚’è¿”ã™ï¼Ž

ã“ã®é–¢æ•°ã¯o1 ã¨o2 ãŒåŒã˜ã‚¹ãƒšãƒ¼ã‚¹ã ã‚ã†ãŒé•ã†ã‚¹ãƒšãƒ¼ã‚¹ã«æ‰€å±žã—ã¦ã‚‚ã‹ã¾ã‚ãšã«è¨ˆç®—ã™ã‚‹ï¼Ž

struct dContact {
    dSurfaceParameters <strong>surface</strong>;
    dContactGeom <strong>geom</strong>;
    dVector3 <strong>fdir1</strong>;
};

struct dSurfaceParameters {
    int <strong>mode</strong>; // 接触フラグ.以下ã®è¡¨ã‚’å‚ç…§
    dReal <strong>mu</strong>; // 摩擦係数.ã“れã¯å¿…ãšè¨­å®šã—ãªã‘れã°ãªã‚‰ãªã„.
    // 以下ã®ãƒ¡ãƒ³ãƒã‚’使ã†ãŸã‚ã«å¯¾å¿œã™ã‚‹flagã‚’modeã§è¨­å®šã—ãªã‘れã°ãªã‚‰ãªã„
    dReal <strong>mu2</strong>; // muãŒæ‘©æ“¦æ–¹å‘1,mu2ã¯æ‘©æ“¦æ–¹å‘2, mu2ãŒè¨­å®šã•れãªã„å ´åˆã¯muãŒä¸¡æ–¹å‘ã«é©ç”¨
    dReal <strong>bounce</strong>; // å発係数
    dReal <strong>bounce_vel</strong>; // è·³ã­è¿”ã‚‹ãŸã‚ã®æœ€ä½Žé€Ÿåº¦ï¼Žbounceを設定ã—ãŸå ´åˆã“れも設定ã—ãªã‘れã°ãªã‚‰ãªã„.
    dReal <strong>soft_erp</strong>; // æŽ¥è§¦ç‚¹ã®æ³•ç·šæ–¹å‘ã®erp
    dReal <strong>soft_cfm</strong>;  // æŽ¥è§¦ç‚¹ã®æ³•ç·šæ–¹å‘ã®cfm
    dReal <strong>motion1</strong>, <strong>motion2</strong>, <strong>motionN</strong>; // 摩擦方å‘1,2,法線方å‘ã®è¡¨é¢é€Ÿåº¦
    dReal <strong>slip1</strong>, <strong>slip2</strong>; // 摩擦方å‘1,2ã®ã‚¹ãƒªãƒƒãƒ—(force-dependent slip)
};

modeã®è¡¨

dContactMu2 設定ã•れãªã„å ´åˆã¯muãŒä¸¡æ–¹å‘ã®æ‘©æ“¦ä¿‚æ•°ã«é©ç”¨ï¼Žè¨­å®šã•れãŸå ´åˆã¯muãŒæ‘©æ“¦æ–¹å‘1,mu2ã¯æ‘©æ“¦æ–¹å‘ï¼’
dContactFDir1 設定ã•れãŸå ´åˆã¯fdir1ãŒæ‘©æ“¦æ–¹å‘1ã¨ãªã‚Šï¼Œãã‚Œä»¥å¤–ã¯æŽ¥è§¦ç‚¹ã®æ³•ç·šæ–¹å‘ã¨åž‚ç›´ã«ãªã‚‹ã‚ˆã†ã«æ‘©æ“¦æ–¹å‘1ãŒè¨ˆç®—ã•れる.
dContactBounce 設定ã•ã‚ŒãŸæŽ¥è§¦è¡¨é¢ãŒå発性をæŒã¤ï¼Žå発係数ã¯bounceã§è¨­å®šã™ã‚‹ï¼Ž
dContactSoftERP 設定ã•れãŸå ´åˆï¼ŒæŽ¥è§¦ç‚¹ã®æŽ¥ç·šæ–¹å‘ã«erpを設定ã™ã‚‹ï¼Žè¡¨é¢ã‚’ã‚„ã‚らã‹ãã™ã‚‹åŠ¹æžœã‚’æŒã¤ï¼Ž
dContactSoftCFM 設定ã•れãŸå ´åˆï¼ŒæŽ¥è§¦ç‚¹ã®æŽ¥ç·šæ–¹å‘ã«cfmを設定ã™ã‚‹ï¼Žè¡¨é¢ã‚’ã‚„ã‚らã‹ãã™ã‚‹åŠ¹æžœã‚’æŒã¤ï¼Ž
ContactMotion1 設定ã•れãŸå ´åˆï¼Œæ‘©æ“¦è¡¨é¢ã¯ãƒœãƒ‡ã‚£ã®é‹å‹•ã«ç„¡é–¢ä¿‚ã«ç§»å‹•ã™ã‚‹ï¼Žãƒ™ãƒ«ãƒˆã‚³ãƒ³ãƒ™ã‚¢ãŒæ‘©æ“¦è¡¨é¢ã«ã‚ã‚‹ã“ã¨ã‚’想åƒã—ã¦æ¬²ã—ã„.ã“ã®ãƒ•ラグã¯motion1を摩擦方å‘1ã«è¨­å®šã™ã‚‹ï¼Ž
dContactMotion2 åŒä¸Šï¼ŽãŸã ã—,摩擦方å‘ï¼’
dContactMotionN åŒä¸Šï¼ŽãŸã ã—,法線方å‘
dContactSlip1 摩擦方å‘1ã®åŠ›ä¾å­˜æ€§ã‚¹ãƒªãƒƒãƒ—(Force-dependent-slip,FDS)
dContactSlip2 摩擦方å‘ï¼’ã®FDS
dContactApprox1_1 設定ã•れãŸå ´åˆã¯æ‘©æ“¦æ–¹å‘ï¼‘ã«æ‘©æ“¦å››è§’éŒãƒ¢ãƒ‡ãƒ«ã‚’é©ç”¨ã™ã‚‹ï¼Žè¨­å®šã•れãªã„å ´åˆã¯åŠ›é™ç•Œå®šæ•°è¿‘似(constant-force-limit)ãŒç”¨ã„られる.ã“ã®å ´åˆã¯ï¼Œmuã¯æ‘©æ“¦åŠ›ã®é™ç•Œå€¤ã¨ãªã‚‹ï¼Ž
dContactApprox1_2 設定ã•れãŸå ´åˆã¯æ‘©æ“¦æ–¹å‘ï¼’ã«æ‘©æ“¦å››è§’éŒãƒ¢ãƒ‡ãƒ«ã‚’é©ç”¨ã™ã‚‹ï¼Žè¨­å®šã•れãªã„å ´åˆã¯åŠ›é™ç•Œå®šæ•°è¿‘似(constant-force-limit)ãŒç”¨ã„られる.ã“ã®å ´åˆã¯ï¼Œmuã¯æ‘©æ“¦åŠ›ã®é™ç•Œå€¤ã¨ãªã‚‹ï¼Ž
dContactApprox1 設定ã•れãŸå ´åˆã¯ï¼Œæ‘©æ“¦æ–¹å‘1ã¨ï¼’ã«æ‘©æ“¦å››è§’éŒãƒ¢ãƒ‡ãƒ«ã‚’é©ç”¨ã™ã‚‹ï¼Ž

  • dGeomID dCreateBox (dSpaceID space, dReal lx, dReal ly, dReal lz);

space ã§æŒ‡å®šã•れãŸã‚¹ãƒšãƒ¼ã‚¹ã«x,y,z è»¸ã«æ²¿ã£ãŸé•·ã•lx,ly,lz ã®ç›´æ–¹ä½“ジオメトリを生æˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Žç›´æ–¹ä½“ジオメトリã®å‚照点ã¯ãã®é‡å¿ƒã§ã‚る.

  • dGeomID dCreateCapsule(dSpaceID space, dReal r, dReal l);

space ã§æŒ‡å®šã•れãŸã‚¹ãƒšãƒ¼ã‚¹ã«åŠå¾„r,長ã•l ã®ã‚«ãƒ—セルジオメトリを生æˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Žã‚«ãƒ—ã‚»ãƒ«ã¯æ™®é€šã®å††æŸ±ã®ä¸¡ç«¯ã«åŠçƒã‚’被ã›ãŸã‚ˆã†ãªã‚‚ã®ã§ã‚る.ã“ã®ç‰¹å¾´ã¯è¡çªæ¤œå‡ºã®å†…部コードを拘æŸã‹ã¤æ­£ç¢ºã«ã™ã‚‹ã“ã¨ãŒã§ãる.引数l ã«ã¯åŠçƒã®ã‚­ãƒ£ãƒƒãƒ—を入れãªã„.キャップã®åŠå¾„ã¯å††æŸ±ã®åŠå¾„r ã¨åŒã˜ã§ã‚る.


  • dGeomID dCreateCylinder(dSpaceID space, dReal r, dReal l);

スペースspaceã«åŠå¾„r,長ã•l ã®å††æŸ±ã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’生æˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Žâ€˜

  • dGeomID dCreateGeomTransform(dSpaceID space);

スペースspaceã«ã‚¸ã‚ªãƒ¡ãƒˆãƒªãƒˆãƒ©ãƒ³ã‚¹ãƒ•ォームを生æˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Ž

  • dGeomID dCreateRay(dSpaceID space, dReal l);

スペースspace ã«ï¼Œé•·ã•lã®å…‰ç·šã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’作æˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Ž

  • dGeomID dCreateSphere(dSpaceID space, dReal r);

åŠå¾„rã®çƒã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’生æˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Ž

  • dGeomID dCreatePlane(dSpaceID space, dReal a, dReal b, dReal c, dReal d);

å¹³é¢ã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’与ãˆã‚‰ã‚ŒãŸå¼•æ•°ã«ã‚ˆã‚Šç”Ÿæˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Žå¼•æ•°space ãŒ0 ã§ãªã‘れã°ï¼Œãã®space ã«å¹³é¢ã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’挿入ã™ã‚‹ï¼Žå¼•æ•°a,b,c,d ã¯å¹³é¢ã®æ–¹ç¨‹å¼ã€€ax+by+cz = d ã®ãƒ‘ラメータã§ã‚る.平é¢ã®æ³•線ベクトルã¯(a,b,c) ã§ã‚り長ã•ã¯ï¼‘ã§ãªã‘れã°ãªã‚‰ãªã„.平é¢ã‚¸ã‚ªãƒ¡ãƒˆãƒªã¯è¨­ç½®ä¸å¯èƒ½(non-placeable),ã¤ã¾ã‚Šä½ç½®ã‚„姿勢を定義ã§ããªã„特別ãªã‚¸ã‚ªãƒ¡ãƒˆãƒªã§å¸¸ã«çµ¶å¯¾åº§æ¨™ç³»ã§å®šç¾©ã—ãªã‘れã°ãªã‚‰ãªã„.ã¤ã¾ã‚Šï¼Œå¹³é¢ã‚ªãƒ–ジェクトã¯å¸¸ã«é™çš„ãªç’°å¢ƒã®ä¸€éƒ¨ã¨ã—ã¦ä½¿ã‚れるã“ã¨ã‚’仮定ã—ã¦ã„る.

  • dGeomID dCreateTriMesh(dSpaceID space, dTriMeshDataID Data, dTriCallback *Callback,dTriArrayCallback * ArrayCallback, dTriRayCallback* RayCallback);

三角メッシュジオメトリを生æˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Ž

  • void dCROSS(a,op,b,c)

外ç©ã®è¨ˆç®—。a op b × cを計算ã™ã‚‹ã€‚ã“ã“ã§ã€opã¯=,  +=, ã¾ãŸã¯-=ã¨ãªã‚Šã€ a, b, cã¯3次元ベクトル。

D

  • void dGeomTriMeshDataBuild (dTriMeshDataID g, const void* Vertices, int VertexStride, int VertexCount,const void* Indices, int IndexCount, int TriStride, const void* Normals);

dTriMeshData オブジェクトをデータã§è©°ã‚ã‚‹ã®ã«ä½¿ã‚れる.ã“ã“ã§ã¯ï¼Œãƒ‡ãƒ¼ã‚¿ã¯ã‚³ãƒ”ーã•れãªã„ã®ã§ï¼Œã“ã®é–¢æ•°ã‚’通éŽã™ã‚‹ãƒã‚¤ãƒ³ã‚¿ãƒ¼ã¯æœ‰åйã§ãªã‘れã°ã„ã‘ãªã„.

E

F

G

  • dBodyID dGeomGetBody(dGeomID geom);

ジオメトリgeomã«å¯¾å¿œã™ã‚‹ãƒœãƒ‡ã‚£ID ã‚’å–å¾—ã™ã‚‹ï¼Ž

  • void dGeomDestroy(dGeomID geom);

ジオメトリgeomを破壊ã—スペースã‹ã‚‰å‰Šé™¤ã™ã‚‹ï¼Ž

  • void dGeomDisable (dGeomID geom);
  • void dGeomEnable (dGeomID geom);

ジオメトリgeomを無効ã¾ãŸã¯æœ‰åйã«ã™ã‚‹ï¼Žç„¡åйã«ã•れãŸã‚¸ã‚ªãƒ¡ãƒˆãƒªã¯ã‚¹ãƒšãƒ¼ã‚¹ã«ã¯å±žã—ã¦ã„ã‚‹ãŒdSpaceCollide() ã¨dSpaceCollide2() ã«ç„¡è¦–ã•れる.

  • int dGeomIsEnabled(dGeomID geom);

ジオメトリgeomãŒç„¡åйãªã‚‰0 ã‚’è¿”ã—,有効ãªã‚‰1 ã‚’è¿”ã™ï¼Žæ–°ã—ã„ã‚¸ã‚ªãƒ¡ãƒˆãƒªã¯æœ‰åйãªçŠ¶æ…‹ã§ä½œæˆã•れる.

  • int dGeomGetClass(dGeomID);

ジオメトリgeomã®ã‚¯ãƒ©ã‚¹ç•ªå·ã‚’è¿”ã™ï¼Žã‚¯ãƒ©ã‚¹ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã‚る.

  • dSphereClass: çƒ
  • dBoxClass: 直方体
  • dCapsuleClass: カプセル
  • dCylinderClass: シリンダ
  • dPlaneClass: å¹³é¢
  • dGeomTransformClass: ジオメトリトランスフォーム(Geometry transform)
  • dRayClass: 光線(Ray)
  • dTriMeshClass: 三角メッシュ(Triangle mesh)
  • dSimpleSpaceClass: å˜ç´”スペース
  • dHashSpaceClass: ãƒãƒƒã‚·ãƒ¥è¡¨ãƒ™ãƒ¼ã‚¹ã®ã‚¹ãƒšãƒ¼ã‚¹
  • const dReal *dGeomGetPosition(dGeomID geom);
  • ジオメトリgeomã®çµ¶å¯¾åº§æ¨™ç³»ã§ã®ä½ç½®ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’è¿”ã™ï¼Žã‚¸ã‚ªãƒ¡ãƒˆãƒªãŒãƒœãƒ‡ã‚£ã«è¨­å®šã•れãŸå ´åˆã¯ï¼Œãƒœãƒ‡ã‚£ã®ä½ç½®ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’è¿”ã™ï¼Žã¤ã¾ã‚Šï¼ŒdBodyGetPosition() ã¨åŒã˜ã§ã‚る.

  • void dGeomGetQuaternion(dGeomID geom, dQuaternion result);

ジオメトリgeomã®ã‚¯ã‚ªãƒ¼ã‚¿ãƒ‹ã‚ªãƒ³ã‚’第2 引数ã®resultã¸ã‚³ãƒ”ーã™ã‚‹ï¼Žã‚¸ã‚ªãƒ¡ãƒˆãƒªãŒãƒœãƒ‡ã‚£ã«è¨­å®šã•れãŸå ´åˆã¯ï¼ŒdBodyGetQuaternion() ã¨åŒã˜ã§ã‚る.

  • const dReal *dGeomGetRotation(dGeomID);

dGeomID ã§æŒ‡å®šã•れãŸã‚¸ã‚ªãƒ¡ãƒˆãƒªã®å›žè»¢è¡Œåˆ—ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’è¿”ã™ï¼Žã‚¸ã‚ªãƒ¡ãƒˆãƒªãŒãƒœãƒ‡ã‚£ã«è¨­å®šã•れãŸå ´åˆã¯ï¼ŒdBodyGetRotation() ã¨åŒã˜ã§ã‚る.

  • dSpaceID dGeomGetSpace (dGeomID geom);

ジオメトリgeomã‚’æ ¼ç´ã—ã¦ã„るスペースID ã‚’è¿”ã™ï¼Žã‚‚ã—,ã©ã®ã‚¹ãƒšãƒ¼ã‚¹ã«ã‚‚属ã—ã¦ã„ãªã‘れã°0 ã‚’è¿”ã™ï¼Ž

  • void dGeomSetBody(dGeomID, dBodyID);

ã“ã®é–¢æ•°ã¯ã‚¸ã‚ªãƒ¡ãƒˆãƒªã¨ãƒœãƒ‡ã‚£ã‚’関連付ã‘る.ジオメトリã«ãƒœãƒ‡ã‚£ã‚’設定ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šä¸¡è€…ã®ä½ç½®ãƒ™ã‚¯ãƒˆãƒ«ã¨å›žè»¢è¡Œåˆ—ã¯è‡ªå‹•çš„ã«çµã³ä»˜ã‘られる.ã¤ã¾ã‚Šï¼Œä½ç½®ã¨å§¿å‹¢ã¯ãƒœãƒ‡ã‚£ã‹ã‚¸ã‚ªãƒ¡ãƒˆãƒªã ã‘ã«è¨­å®šã™ã‚Œã°ã‚ˆã„.ãŸã ã—,設置ä¸å¯èƒ½ãªå¹³é¢ã‚¸ã‚ªãƒ¡ãƒˆãƒªã¯å‹•力学計算ã®å¯¾è±¡ã«ãªã‚‰ãªã„ã®ã§ã“ã®é–¢æ•°ã‚’呼ã³å‡ºã™ã¨ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹ï¼Ž

  • void dGeomTriMeshDataBuild (dTriMeshDataID g, const void* Vertices, int VertexStride, int VertexCount, const void* Indices, int IndexCount, int TriStride, const void* Normals);

三角メッシュオブジェクトをデータã§åŸ‹ã‚る.ã“ã“ã§ã¯ãƒ‡ãƒ¼ã‚¿ã¯ã‚³ãƒ”ーã•れãªã„.ãƒã‚¤ãƒ³ã‚¿ãŒã“ã®é–¢æ•°ã«æ¸¡ã•れる.

  • void dGeomSetData (dGeomID, void *);
  • void *dGeomGetData (dGeomID);

ユーザ定義データã®ãƒã‚¤ãƒ³ã‚¿ã‚’ジオメトリã«è¨­å®šã‚ã‚‹ã„ã¯å–å¾—ã™ã‚‹ï¼Ž

  • void dGeomSetOffsetPosition (dGeomID, dReal x, dReal y, dReal z);
  • void dGeomSetOffsetRotation (dGeomID, const dMatrix3 R);
  • void dGeomSetOffsetQuaternion (dGeomID, const dQuaternion);

ä½ç½®ãƒ™ã‚¯ãƒˆãƒ«ï¼Œå›žè»¢è¡Œåˆ—,クオータニオンã®ã‚ªãƒ•セットを相対座標系ã§è¨­å®šã™ã‚‹ï¼Žäºˆã‚ジオメトリã¯ãƒœãƒ‡ã‚£ã¨é–¢é€£ä»˜ã‘られã¦ã„ãªã‘れã°ãªã‚‰ãªã„.


  • void dGeomSetPosition (dGeomID, dReal x, dReal y, dReal z);
  • void dGeomSetRotation (dGeomID, const dMatrix3 R);
  • void dGeomSetQuaternion (dGeomID, const dQuaternion);

ä½ç½®ãƒ™ã‚¯ãƒˆãƒ«ï¼Œå›žè»¢è¡Œåˆ—,クオータニオンを設定ã™ã‚‹ï¼Žã‚¸ã‚ªãƒ¡ãƒˆãƒªãŒãƒœãƒ‡ã‚£ã«è¨­å®šã•れãŸå ´ã¯ï¼ŒdBodySetPosition(), dBodySetRotation(), dBodySetQuaternion() ã¨åŒä¸€ã¨ãªã‚‹

  • void dGeomTriMeshDataBuildSimple (dTriMeshDataID g, const dVector3*Vertices, int VertexCount, const int* Indices,int IndexCount);

三角メッシュã®ãƒ‡ãƒ¼ã‚¿ã‚’ç°¡å˜ã«ä½œæˆã™ã‚‹é–¢æ•°ï¼Ž

H

  • dSpaceID dHashSpaceCreate (dSpaceID space);

高速ã«è¨ˆç®—å¯èƒ½ãªãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルを備ãˆãŸè¡çªæ¤œå‡ºè¨ˆç®—用スペースã®ç”Ÿæˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Ž

I

  • void dInitODE();

ODEã‚’åˆæœŸåŒ–ã™ã‚‹ï¼Žã“れを使ã†å ´åˆã¯dInitODE2()を呼ã³å‡ºã™å¿…è¦ã¯ãªã„.内部ã§dInitODE2()を呼ã³å‡ºã—ã¦ã„る.

  • int dInitODE2(unsigned InitFlags);

ライブラリをåˆã‚ã¦ä½¿ã†å ´åˆã«ã“れを呼ã³å‡ºã•ãªã‘れã°ãªã‚‰ãªã„.InitFlagsã¯ï¼ã¾ãŸã¯dInitFlagManualThreadCleanupã§ã‚る.dCloseODE()ãŒå‘¼ã³å‡ºã•れるã¾ã§ï¼‘度ã ã‘呼ã³å‡ºã•ãªã‘れã°ãªã‚‰ãªã„.

J

  • void dJointAttach(dJointID, dBodyID body1, dBodyID body2);

ジョイントを新ã—ã„ボディã«å–り付ã‘る.ã™ã§ã«ãã®ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆãŒå–り付ã‘られã¦ã„ãŸã‚‰ï¼Œã¾ãšå¤ã„ボディã‹ã‚‰å–り外ã•れる.ジョイントをボディ1個ã ã‘ã«å–り付ã‘ã‚‹ãŸã‚ã«ã¯ï¼Œå¼•æ•°body1 ã‹body2 ã‚’0 ã«è¨­å®šã™ã‚‹ï¼ŽID 番å·0 ã®ãƒœãƒ‡ã‚£ã¯é™çš„ãªç’°å¢ƒã‚’指ã™ï¼Žä¸¡æ–¹ã®ãƒœãƒ‡ã‚£ã‚’0 ã«è¨­å®šã™ã‚‹ã¨ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ä¸Šã§ã¯ä½•ã®åŠ¹æžœã‚‚æŒãŸãªã„.

  • dJointID dJointCreateBall(dWorldID, dJointGroupID);
  • dJointID dJointCreateHinge(dWorldID, dJointGroupID);
  • dJointID dJointCreateSlider(dWorldID, dJointGroupID);
  • dJointID dJointCreateContact(dWorldID,dJointGroupID,const dContact*);
  • dJointID dJointCreateUniversal(dWorldID, dJointGroupID);
  • dJointID dJointCreateHinge2(dWorldID, dJointGroupID);
  • dJointID dJointCreateFixed(dWorldID, dJointGroupID);
  • dJointID dJointCreateAMotor(dWorldID, dJointGroupID);

指定ã•れãŸã‚¿ã‚¤ãƒ—ã®æ–°ã—ã„ジョイントを生æˆã™ã‚‹ï¼Žãƒœãƒ‡ã‚£ã«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆãŒçµåˆã•れãªã„é™ã‚Šï¼Œã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«åŠ¹æžœã‚’åŠã¼ã•ãªã„.dJointGroupID ã«ã¯é€šå¸¸0 を設定ã™ã‚‹ï¼Ž

  • dJointID dJointCreateContact(dWorldID, dJointGroupID,const dContact *);

æ–°ã—ã„ジョイントを生æˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Žå¼•æ•°dJointGroupIDã¯é€šå¸¸ã¯0 を設定ã™ã‚‹ï¼ŽãれãŒ0 ã§ãªã„å ´åˆã¯ï¼Œã™ã§ã«å­˜åœ¨ã™ã‚‹ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚°ãƒ«ãƒ¼ãƒ—ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã‚‹ï¼ŽæŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã¯æ—¢ã«ä½œæˆã•れã¦ã„ã‚‹dContact 構造体ã§åˆæœŸåŒ–ã•れる.

  • void dJointDestroy(dJointID);

ジョイントを破壊ã™ã‚‹ï¼Žçµåˆã•れã¦ã„るボディã‹ã‚‰ãã®ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚’å–り外ã—,ワールドã‹ã‚‰ã‚‚削除ã™ã‚‹ï¼Ž

  • void dJointGetHingeAnchor(dJointID, dVector3 result);

ヒンジジョイントã®å›žè»¢ä¸­å¿ƒç‚¹ã‚’絶対座標ã§å–å¾—ã™ã‚‹ï¼Žã“れã¯ãƒœãƒ‡ã‚£1上ã®ç‚¹ã‚’è¿”ã™ï¼Žã‚¸ãƒ§ã‚¤ãƒ³ãƒˆãŒå®Œå…¨ãªå ´åˆã¯ãƒœãƒ‡ã‚£2 上ã®ç‚¹ã¨ä¸€è‡´ã™ã‚‹ï¼Ž

  • void dJointGetHingeAnchor2(dJointID, dVector3 result);

ヒンジジョイントã®å›žè»¢ä¸­å¿ƒç‚¹ã‚’絶対座標ã§å–å¾—ã™ã‚‹ï¼Žã“れã¯ãƒœãƒ‡ã‚£2上ã®ç‚¹ã‚’è¿”ã™ï¼Žã‚¸ãƒ§ã‚¤ãƒ³ãƒˆãŒå®Œå…¨ãªå ´åˆã¯ãƒœãƒ‡ã‚£1 上ã®ç‚¹ã¨ä¸€è‡´ã—,ä¸å®Œå…¨ãªå ´åˆã¯ãšã‚ŒãŒã‚る.ã“れを使ã„ジョイントã®ãšã‚Œã‚’調ã¹ã‚‹ã“ã¨ãŒã§ãる.

  • dReal dJointGetHingeAngle(dJointID);

ヒンジジョイントã®è§’度[rad] ã‚’å–å¾—ã™ã‚‹ï¼Ž

  • dReal dJointGetHingeAngleRate (dJointID);

ヒンジジョイントã®è§’速度[rad/s] ã‚’å–å¾—ã™ã‚‹ï¼Ž

  • void dJointGetHingeAxis (dJointID, dVector3 result);

ヒンジジョイントã®å›žè»¢è»¸ãƒ™ã‚¯ãƒˆãƒ«ã‚’å–å¾—ã™ã‚‹ï¼Ž

  • dReal dJointGetHingeParam(dJointID, int parameter);

ヒンジジョイントã®ãƒ‘ラメータをå–å¾—ã™ã‚‹ï¼Ž

  • dReal dJointGetHinge2Param(dJointID, int parameter);

ヒンジ2 ジョイントã®ãƒ‘ラメータをå–å¾—ã™ã‚‹ï¼Ž

  • dReal dJointGetSliderParam(dJointID, int parameter);

スライダージョイントã®ãƒ‘ラメータをå–å¾—ã™ã‚‹ï¼Ž

  • int dJointGetType(dJointID);
ジョイントã®ã‚¿ã‚¤ãƒ—ã‚’å–å¾—ã™ã‚‹ï¼Žä»¥ä¸‹ã®ã„ãšã‚Œã‹ã®ã‚¿ã‚¤ãƒ—ãŒè¿”る.
dJointTypeBall ボールジョイント
dJointTypeHinge ヒンジジョイント
dJointTypeSlider スライダージョイント
dJointTypeContact 接触ジョイント
dJointTypeUniversal ユニãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆ
dJointTypeHinge2 ヒンジ2ジョイント
dJointTypeFixed 固定ジョイント
dJointTypeAMotor 角度モータジョイント
dJointTypeLMotor リニアモータジョイント
dJointTypePlane2D 2次元平é¢ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆ.
dJointTypePR 直動-Rotoide ジョイント
dJointTypePU ç›´å‹•ï¼ãƒ¦ãƒ‹ãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆ
dJointTypePiston ピストンジョイント
  • void dJointGetUniversalAnchor(dJointID, dVector3 result);

ユニãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®å›žè»¢ä¸­å¿ƒç‚¹ã‚’å–å¾—ã™ã‚‹ï¼Žã“れã¯ãƒœãƒ‡ã‚£1 上ã®ç‚¹ã‚’è¿”ã™ï¼Žã‚¸ãƒ§ã‚¤ãƒ³ãƒˆãŒå®Œå…¨ãªå ´åˆã¯ãƒœãƒ‡ã‚£2 上ã®ç‚¹ã¨ä¸€è‡´ã™ã‚‹ï¼Ž

  • void dJointGetUniversalAnchor2 (dJointID, dVector3 result);

ユニãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®å›žè»¢ä¸­å¿ƒç‚¹ã‚’絶対座標ã§å–å¾—ã™ã‚‹ï¼Žã“れã¯ãƒœãƒ‡ã‚£2 上ã®ç‚¹ã‚’è¿”ã™ï¼Žã‚¸ãƒ§ã‚¤ãƒ³ãƒˆãŒå®Œå…¨ãªå ´åˆã¯ãƒœãƒ‡ã‚£1 上ã®ç‚¹ã¨ä¸€è‡´ã—,ä¸å®Œå…¨ãªå ´åˆã¯ãšã‚ŒãŒã‚る.ã“れを使ã„ジョイントã®ãšã‚Œã‚’調ã¹ã‚‹ã“ã¨ãŒã§ãる.

  • void dJointGetUniversalAxis1(dJointID, dVector3 result);

ユニãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®å›žè»¢è»¸1 ã®ãƒ™ã‚¯ãƒˆãƒ«ã‚’å–å¾—ã™ã‚‹ï¼Ž

  • void dJointGetUniversalAxis2 (dJointID, dVector3 result);

ユニãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®å›žè»¢è»¸2 ã®ãƒ™ã‚¯ãƒˆãƒ«ã‚’å–å¾—ã™ã‚‹ï¼Ž

  • dReal dJointGetUniversalAngle1(dJointID);

ユニãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®å›žè»¢è»¸1 ã®è§’度[rad] ã‚’å–å¾—ã™ã‚‹ï¼Ž

  • dReal dJointGetUniversalAngle2(dJointID);

ユニãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®å›žè»¢è»¸2 ã®è§’度[rad] ã‚’å–å¾—ã™ã‚‹ï¼Ž

  • dReal dJointGetUniversalAngle1Rate(dJointID);

ユニãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®å›žè»¢è»¸1 ã®è§’速度[rad/s] ã‚’å–å¾—ã™ã‚‹ï¼Ž

  • dReal dJointGetUniversalAngle2Rate(dJointID);

ユニãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®å›žè»¢è»¸2 ã®è§’速度[rad/s] ã‚’å–å¾—ã™ã‚‹ï¼Ž

  • dReal dJointGetUniversalParam(dJointID, int parameter);

ユニãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®ãƒ‘ラメータをå–å¾—ã™ã‚‹ï¼Ž

  • dJointGroupID dJointGroupCreate(0);

ジョイントグループã®ç”Ÿæˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Žä»¥å‰ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ç¢ºä¿ã™ã‚‹é ˜åŸŸã®å¤§ãã•を確ä¿ã—ã¦ã„ãŸãŒç¾åœ¨ã¯ä½¿ã‚れã¦ãŠã‚‰ãšäº’æ›æ€§ã‚’ä¿ã¤ãŸã‚0 を設定ã™ã‚‹.

  • void dJointGroupDestroy (dJointGroupID);

ジョイントグループを破壊ã™ã‚‹ï¼Žã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚°ãƒ«ãƒ¼ãƒ—中ã®å…¨ã¦ã®ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã¯ç ´å£Šã•れる.

  • void dJointGroupEmpty(dJointGroupID);

ジョイントグループを空ã«ã™ã‚‹ï¼Žã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚°ãƒ«ãƒ¼ãƒ—内ã®å…¨ã¦ã®ã‚¸ãƒ§ã‚¤
ントã¯ç ´å£Šã•れるãŒï¼Œã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚°ãƒ«ãƒ¼ãƒ—ãã®ã‚‚ã®ã¯ç ´å£Šã•れãªã„.

  • dReal dJointGetAMotorParam(dJointID, int parameter);

A モータã®ãƒ‘ラメータをå–å¾—ã™ã‚‹ï¼Ž

  • void dJointSetFixed(dJointID joint);

ジョイントjointを固定ジョイントã«è¨­å®šã™ã‚‹ï¼Ž

  • void dJointSetHingeAnchor(dJointID joint, dReal x, dReal y, dReal z);

ジョイントjointã®ä¸­å¿ƒç‚¹(anchor) ã®åº§æ¨™(x; y; z) を設定ã™ã‚‹ï¼Ž

  • void dJointSetHingeAxis(dJointID joint, dReal x, dReal y, dReal z);

ジョイントjointã®å›žè»¢è»¸ãƒ™ã‚¯ãƒˆãƒ«(x; y; z) を設定ã™ã‚‹ï¼Ž

  • void dJointSetHinge2Anchor(dJointID, dReal x, dReal y, dReal z);

指定ã•れãŸã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®ä¸­å¿ƒç‚¹(anchor) ã®åº§æ¨™(x; y; z) を設定ã™ã‚‹ï¼Ž

  • void dJointSetHinge2Axis1(dJointID, dReal x, dReal y, dReal z);

ジョイントã®å›žè»¢è»¸1 ã®ãƒ™ã‚¯ãƒˆãƒ«(x; y; z) を設定ã™ã‚‹ï¼Ž

  • void dJointSetHinge2Axis2(dJointID, dReal x, dReal y, dReal z);

ジョイントã®å›žè»¢è»¸2 ã®ãƒ™ã‚¯ãƒˆãƒ«(x; y; z) を設定ã™ã‚‹ï¼Ž

  • void dJointSetHingeParam(dJointID, int parameter, dReal value);

ヒンジジョイントã®ãƒ‘ラメータを設定ã™ã‚‹ï¼Ž

  • void dJointSetHinge2Param(dJointID, int parameter, dReal value);

ヒンジ2ジョイントã®ãƒ‘ラメータを設定ã™ã‚‹ï¼Ž

  • void dJointSetSliderAxis(dJointID, dReal x, dReal y, dReal z);

スライダジョイントã®è»¸ãƒ™ã‚¯ãƒˆãƒ«(x, y, z)を設定ã™ã‚‹ï¼Ž

  • void dJointSetSliderParam(dJointID, int parameter, dReal value);

スライダジョイントã®ãƒ‘ラメータを設定ã™ã‚‹ï¼Ž

  • void dJointSetUniversalParam(dJointID, int parameter, dReal value);

ユニãƒãƒ¼ã‚µãƒ«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®ãƒ‘ラメータを設定ã™ã‚‹ï¼Ž

ジョイントパラメータã®ç¨®é¡ž

dParamLoStop ジョイントã®å¯å‹•域ã®ä¸‹é™å€¤ï¼Žãƒ‡ãƒ•ォルト値ã¯-dInfinityã¨ãªã£ã¦ãŠã‚Šä¸‹é™ãŒãªã„.回転ジョイントã®å ´åˆã¯ï¼Ï€ã‚ˆã‚Šå¤§ãããªã‘ã‚Œã°æœ‰åйã«ãªã‚‰ãªã„.
dParamHiStop ジョイントã®å¯å‹•域ã®ä¸Šé™å€¤ï¼Žãƒ‡ãƒ•ォルト値ã¯dInfinity ã¨ãªã£ã¦ãŠã‚Šä¸Šé™ãŒãªã„.回転ジョイントã®å ´åˆã¯Ï€ã‚ˆã‚Šå°ã•ããªã‘ã‚Œã°æœ‰åйã«ãªã‚‰ãªã„.
dParamVel モータã®ç›®æ¨™é€Ÿåº¦ï¼ˆå›žè»¢å¼ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã¯è§’速度,スライダーã¯é€Ÿåº¦)
dParamFMax モータãŒç›®æ¨™é€Ÿåº¦ã«é”æˆã™ã‚‹ãŸã‚ã«ä¸Žãˆã‚‹æœ€å¤§åŠ›ï¼ˆå›žè»¢å¼ã¯ãƒˆãƒ«ã‚¯ï¼Œã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã¯åŠ›ï¼‰
dParamFudgeFactor ç¾åœ¨ã®ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã®åœæ­¢ã¨ãƒ¢ãƒ¼ã‚¿ã®å®Ÿè£…ã«ã¯è‹¥å¹²å•題ãŒã‚る.ジョイントãŒåœæ­¢ã—ã¦ã„る時ã«ï¼Œãƒ¢ãƒ¼ã‚¿ãŒãれを動ã‹ãã†ã¨ã™ã‚‹ã¨éžå¸¸ã«å¤§ããªåŠ›ãŒã‹ã‹ã£ã¦ã—ã¾ã„.ジャンプã™ã‚‹æŒ™å‹•ãŒç™ºç”Ÿã™ã‚‹ï¼ŽFudge factor ã¯ã“ã®éŽåº¦ãªåŠ›ã‚’åŠ æ¸›ã—ã¾ã™ï¼Žã“ã®å€¤ã¯ï¼ä»¥ä¸Šï¼‘以下ã§ã‚り,1ãŒãƒ‡ãƒ•ォルト値ã§ã™ï¼Žã‚¸ãƒ£ãƒ³ãƒ—ã™ã‚‹æŒ™å‹•ãŒè¦‹ã‚‰ã‚Œã‚‹å ´åˆã¯ã“ã®å€¤ã‚’å°ã•ãã™ã‚‹ã¨è‰¯ã„.ãŸã ã—,ã“ã®å€¤ã‚’å°ã•ãã™ã‚‹ã¨ãƒ¢ãƒ¼ã‚¿ãŒå‹•ã‹ãªããªã‚‹
dParamBounce å発係数.値ã¯0 ã‹ã‚‰1.0 ã¯å…¨ãå発ã›ãšï¼Œ1 ã¯æœ€å¤§å発.
dParamCFM åœæ­¢ã—ãªã„ã¨ãã«ä½¿ç”¨ã•れる拘æŸåŠ›æ··åˆãƒ‘ラメータ(CFM)ï¼Žåœæ­¢æ™‚ã¯dParamStopCFM
dParamStopERP åœæ­¢æ™‚ã«ä½¿ç”¨ã•れる誤差削減パラメータ(ERP).
dParamStopCFM åœæ­¢æ™‚ã«ä½¿ç”¨ã•れる拘æŸåŠ›æ··åˆãƒ‘ラメータ(CFM).ERP ã¨åŒæ™‚ã«ä½¿ç”¨ã™ã‚‹ã¨ã‚¹ãƒãƒ³ã‚¸ã®ã‚ˆã†ãªã‚½ãƒ•トãªåœæ­¢ã‚’実ç¾ã§ãる.ã“れã¯ãƒ‘ワーãŒä¾›çµ¦ã•れã¦ã„ãªã„ジョイントã«å¯¾ã—ã¦æœ‰åйã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„.パワーã®ã‚るジョイントã§ã¯åŠ¹æžœçš„ã«æ©Ÿèƒ½ã—ãªã„.
dParamSuspensionERP サスペンションERP パラメータ.ç¾åœ¨ï¼Œãƒ’ンジ2ã«ã®ã¿å®Ÿè£…ã—ã¦ã„る.
dParamSuspensionCFM サスペンションCFM パラメータ.ç¾åœ¨ï¼Œãƒ’ンジ2ã«ã®ã¿å®Ÿè£…ã—ã¦ã„る.

K

L

M

  • void dMassAdd(dMass *a, const dMass *b);

質é‡ãƒ‘ラメータb を質é‡ãƒ‘ラメータ a ã«åŠ ãˆã‚‹ï¼Ž

  • void dMassAdjust(dMass *, dReal newmass);

ã‚る物体ã®è³ªé‡ãƒ‘ラメータãŒä¸Žãˆã‚‰ã‚ŒãŸã¨ã,全質é‡ãŒnewmass ã«ãªã‚‹ã‚ˆã†ã«èª¿æ•´ã™ã‚‹ï¼Ž

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

ã‚る物体ã®è³ªé‡ãƒ‘ラメータãŒä¸Žãˆã‚‰ã‚ŒãŸã¨ã,物体ã®ç›¸å¯¾åº§æ¨™ç³»ã§R回転ã—ãŸã¨ãã®è³ªé‡ãƒ‘ラメータã«èª¿æ•´ã™ã‚‹ï¼Ž

  • void dMassSetBoxTotal(dMass *mass,dReal total_mass,dReal lx, dReal ly, dReal lz);

構造体mass ã«ç›´æ–¹ä½“ã®è³ªé‡ãƒ‘ラメータを設定

  • void dMassSetCappedCylinder(dMass *mass,dReal density, int direction, dReal radius, dReal length);

構造体mass ã«ã‚­ãƒ£ãƒƒãƒ—付円柱ã®è³ªé‡ãƒ‘ラメータ(密度density,方å‘direction(x=1,y=2,z=3),åŠå¾„radius,長ã•length)を設定ã™ã‚‹ï¼Ž

  • void dMassSetCapsuleTotal(dMass *mass,dReal total_mass, int direction, dReal r, dReal l);

構造体mass ã«ã‚«ãƒ—セルã®è³ªé‡ãƒ‘ラメータ(全質é‡total_mass,方å‘direction(x=1,y=2,z=3),åŠå¾„r,長ã•l)を設定

  • void dMassSetCylinder(dMass *mass,dReal density, int direction, dReal radius, dReal length);

構造体mass ã«å††æŸ±ã®è³ªé‡ãƒ‘ラメータ(密度density,方å‘direction(x=1,y=2,z=3),åŠå¾„radius,長ã•length)を設定ã™ã‚‹ï¼Ž

  • void dMassSetCylinderTotal(dMass *mass,dReal total_mass, int direction, dReal r, dReal l);

構造体mass ã«å††æŸ±ã®è³ªé‡ãƒ‘ラメータ(全質é‡total_mass,方å‘direction(x=1,y=2,z=3),åŠå¾„r,長ã•l)を設定

  • void dMassSetSpherel(dMass *, dReal density, dReal radius);

与ãˆã‚‰ã‚ŒãŸåŠå¾„radius ã¨å…¨è³ªé‡total_mass ã«å¯¾ã™ã‚‹è³ªé‡ãƒ‘ラメータ(密度density, åŠå¾„radius) を設定ã™ã‚‹ï¼Žã“ã®ã¨ã,é‡å¿ƒã¯ã‚ªãƒ–ジェクトã«å¯¾ã—ã¦(0,0,0)ã®ä½ç½®ã¨ãªã‚‹ï¼Ž

  • void dMassSetSphereTotal(dMass *, dReal total_mass, dReal r);

与ãˆã‚‰ã‚ŒãŸåŠå¾„radius ã¨å…¨è³ªé‡total_mass ã«å¯¾ã™ã‚‹è³ªé‡ãƒ‘ラメータ(全質é‡total_mass, åŠå¾„r) を設定ã™ã‚‹ï¼Žã“ã®ã¨ã,é‡å¿ƒã¯ã‚ªãƒ–ジェクトã«å¯¾ã—ã¦(0,0,0)ã®ä½ç½®ã¨ãªã‚‹ï¼Ž

  • void dMassSetZero(dMass *);

å…¨ã¦ã®è³ªé‡ãƒ‘ラメータ0 ã«è¨­å®šã™ã‚‹ï¼Ž

  • void dMassTranslate(dMass *, dReal x, dReal y, dReal z);

ã‚る物体ã®è³ªé‡ãƒ‘ラメータãŒä¸Žãˆã‚‰ã‚ŒãŸã¨ã,物体ã®ç›¸å¯¾åº§æ¨™ç³»ã§ã®ä½ç½®(x, y, z) ã«è³ªé‡ãƒ‘ラメータを調整ã™ã‚‹ï¼Žé‡å¿ƒã‚’移動ã™ã‚‹å ´åˆãªã©ã«ä½¿ã‚れる.


  • void dMultiply0_331 (dReal *A, const dReal *B, const dReal *C);
  • void dMultiply1_331 (dReal *A, const dReal *B, const dReal *C);
  • void dMultiply1_331 (dReal *A, const dReal *B, const dReal *C);



è¡Œåˆ—ã®æŽ›ã‘算。 dMultiply*ã®*ã¯0, 1, 2ã®å€¤ã§ã‚ã‚Šæ¬¡ã®æ„味をæŒã¤ã€‚

*   0:   A = B  * C  
*   1:   A = B' * C  
*   2:  A = B *  C'

ã“ã“ã§ã€â€™ã¯è»¢ç½®ã®æ„味。 Aã¯ï¼“行1列ã€ï¼¢ã¯ï¼“行3列ã€ï¼£ã¯ï¼“行1列ã®è¡Œåˆ—。


N

  • typedef void dNearCallback (void *data, dGeomID o1, dGeomID o2);

引数data ã¯dSpaceCollide ã‹ã‚‰dNearCallback ã¸ãã®ã¾ã¾æ¸¡ã•れる.ãã®æ„味ã¯ãƒ¦ãƒ¼ã‚¶ã«ã‚ˆã‚Šå®šç¾©ã•れる.引数o1 ã¨o2 ã¯è¿‘接ã—ã¦ã„るジオメトリã§ã‚る.ã“ã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ã¯o1 ã¨o2 ã«å¯¾ã—ã¦å„ãƒšã‚¢é–“ã®æŽ¥è§¦ç‚¹ã‚’ç®—å‡ºã™ã‚‹ãŸã‚ã«dCollide() を呼ã³å‡ºã™ã“ã¨ãŒã§ã,ã“ã‚Œã‚‰ã®æŽ¥è§¦ç‚¹ã¯æŽ¥è§¦ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã¨ã—ã¦ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«ä»˜ã‘加ãˆã‚‰ã‚Œã‚‹ï¼Ž

dSpaceCollide() ã¯å…¨ã¦ã®äº¤å·®ã™ã‚‹ã‚¸ã‚ªãƒ¡ãƒˆãƒªãƒšã‚¢ã‚’通éŽã•ã›ã‚‹ã“ã¨ã‚’ä¿éšœã™ã‚‹ãŒï¼Œäº¤å·®ã—ãªã„ジオメトリペアを誤ã£ã¦é€šéŽã•ã›ã‚‹å¯èƒ½æ€§ã‚‚ã‚る.間é•ãˆã‚‹æ•°ã¯ã‚¹ãƒšãƒ¼ã‚¹ã«ã‚ˆã£ã¦ä½¿ã‚れる内部ã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã«ä¾å­˜ã™ã‚‹ï¼Žå¾“ã£ã¦ï¼ŒdCollide ãŒå…¨ã¦ã®ãƒšã‚¢ã«ã¤ã„ã¦æŽ¥è§¦ç‚¹ã‚’è¿”ã™ä¿éšœã¯ãªã„.


O


P


Q

  • void dQFromAxisAndAngle(dQuaternion q, dReal ax, dReal ay, dReal az,dReal angle);

回転軸ベクトル(ax; ay; az) を中心ã«angle 回転ã—ãŸã¨ãã®ã‚¯ã‚ªãƒ¼ã‚¿ãƒ‹ã‚ªãƒ³q ã‚’å–å¾—ã™ã‚‹ï¼Ž

  • void dQtoR(dQuaternion q, dMatrix3 R);

クオータニオンq を回転行列R ã«å¤‰æ›ã™ã‚‹ï¼Ž


R

  • dRFromAxisAndAngle(dMatrix3 R, dReal ax, dReal ay, dReal az, dReal angle);

回転軸ベクトル(ax, ay, az) を中心ã«angle 回転ã—ãŸã¨ãã®å›žè»¢è¡Œåˆ—Rã‚’å–å¾—ã™ã‚‹ï¼Ž

S

  • void dsDrawBox(const float pos[3], const float R[12], const float sides[3]);

ä½ç½®pos[3], 回転行列R[12], x,y,z è»¸ã«æ²¿ã£ãŸé•·ã•ãŒãれãžã‚Œsides[0],sides[1],sides[2] ã®ãƒœãƒƒã‚¯ã‚¹ã‚’æç”»ã™ã‚‹ï¼Ž

  • void dsDrawSphere(const float pos[3], const float R[12], float r);

ä½ç½®pos[3], 回転行列R[12],  åŠå¾„r ã®çƒã‚’æç”»ã™ã‚‹ï¼Ž

  • void dsDrawTriangle(const float pos[3], const float R[12], const float *v0, const float *v1, const float *v2, int solid);

頂点座標(v0,v1,v2) ã®ä¸‰è§’形をæç”»ã™ã‚‹ï¼Žsolid ãŒ0 ã®å ´åˆã¯ä¸‰è§’å½¢ã®ç·š(ワイヤーフレーム)ã ã‘を表示, 1 ã®å ´åˆã¯ä¸‰è§’å½¢ã®é¢ã‚’表示ã™ã‚‹ï¼Ž

  • void dsDrawCylinder(const float pos[3], const float R[12], float l, float r);

z è»¸ã«æ²¿ã£ãŸé•·ã•l(エル),åŠå¾„r ã®å††æŸ±ã‚’æç”»ã™ã‚‹ï¼Ž

  • void dsDrawCapsule(const float pos[3], const float R[12], float l, float r);

z è»¸ã«æ²¿ã£ãŸé•·ã•l,åŠå¾„r ã®ã‚«ãƒ—セルをæç”»ã—ã¾ã™ï¼Ž

  • void dsDrawLine(const float pos1[3], const float pos2[3]);

点1(pos1[0],pos1[1],pos1[2]) ã¨ç‚¹2(pos2[0],pos2[1],pos2[2]) ã‚’çµã¶ç·šã‚’æç”»ã—ã¾ã™ï¼Ž

  • void dsDrawBoxD(const double pos[3], const double R[12],const double sides[3]);

dsDrawBox ã®å€ç²¾åº¦ç‰ˆ

  • void dsDrawSphereD(const double pos[3], const double R[12],const float r);

dsDrawSphere ã®å€ç²¾åº¦ç‰ˆ

  • void dsDrawTriangleD(const double pos[3], const double R[12], const double *v0, const double *v1, const double *v2, int solid);

dsDrawTriangle ã®å€ç²¾åº¦ç‰ˆ

  • void dsDrawCylinderD(const double pos[3], const double R[12], float l, float r);

dsDrawCylinder ã®å€ç²¾åº¦ç‰ˆ

  • void dsDrawCapsuleD(const double pos[3], const double R[12], float l, float r);

dsDrawCappedCylinder ã®å€ç²¾åº¦ç‰ˆ

  • void dsDrawLineD(const double pos1[3], const double pos2[3]);

dsDrawLine ã®å€ç²¾åº¦ç‰ˆ

  • void dsGetViewPoint(float xyz[3], float hpr[3]);

カメラã®ä½ç½®ã¨è¦–ç·šã‚’å–å¾—ã™ã‚‹ï¼Žxyz ã¯ã‚«ãƒ¡ãƒ©ã®ä½ç½®(x,y,z), hpr ã¯ã‚«ãƒ¡ãƒ©ã®è¦–ç·šheading(yow ã«ç›¸å½“), pitch, roll を表ã—å˜ä½ã¯åº¦ã§ã‚る.heading=0 ã¯x è»¸ã«æ²¿ã£ãŸæ–¹å‘,pitch=0 ã¯æ°´å¹³ç·šã®æ–¹å‘,roll=0 ã¯ãƒ­ãƒ¼ãƒ«ãªã—.

  • void dsStop();

ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãƒ«ãƒ¼ãƒ—ã‚’åœæ­¢ã™ã‚‹ï¼ŽdsSimulationLoop() ã®å†…部ã§ã“ã®API を呼ã³å‡ºã™ã¨exit ã—呼ã³å‡ºã—å´ã«æˆ»ã‚Šï¼Œexit コマンドを使ã†ã®ã¨åŒã˜ã§ã‚る.ループã®å¤–ã§ã“ã®API を呼ã³å‡ºã—ã¦ã‚‚効果ã¯ãªã„.

  • void dsSetColor(float red, float green, float blue);

オブジェクトã®è‰²ã‚’設定ã™ã‚‹ï¼Žred(赤), green(ç·‘), blue(é’) ã¯0 ã‹ã‚‰1ã¾ã§å€¤ã§ã‚る.

  • void dsSetColorAlpha(float red, float green, float blue, float alpha);

オブジェクトã®è‰²ã¨é€æ˜Žåº¦ã‚’設定ã™ã‚‹ï¼Žred, gree, blue, alpha(逿˜Žåº¦)ã¯0 ã‹ã‚‰1 ã¾ã§å€¤ã§ã‚る.

  • void dsSetSphereQuality(int n);

çƒã®æç”»ã®è³ªã‚’設定ã™ã‚‹ï¼Žå¤§ããªå€¤ã«ãªã‚‹ã»ã©è³ªã¯å‘上ã™ã‚‹ãŒé€Ÿåº¦ã¯é…ããªã‚‹ï¼Žãƒ‡ãƒ•ォール値ã®1 ã®å ´åˆã¯æ­£20 é¢ä½“(頂点数12, 正三角形ã®é¢æ•°20) ã¨ãªã‚Šï¼Œn ã®å€¤ãŒå¤§ãããªã‚‹ã¨å¤šè§’形を構æˆã™ã‚‹3 角形をå†å¸°çš„ã«åˆ†å‰²ã™ã‚‹ï¼Ž

  • dsSetCappedCylinderQuality(int n);

å††æŸ±ã®æç”»ã®è³ªã‚’設定ã™ã‚‹ï¼Žå¤§ããªå€¤ã«ãªã‚‹ã»ã©è³ªã¯å‘上ã™ã‚‹ãŒé€Ÿåº¦ã¯é…ããªã‚‹ï¼Žå††æŸ±ã®æ–­é¢ã¯4n 多角形ã¨ãªã‚‹ï¼Žãƒ‡ãƒ•ォール値ã®3 ã¯12 è§’å½¢ã¨ãªã‚‹ï¼Ž

  • void dsSetTexture(int texture_number);

オブジェクトã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’設定ã™ã‚‹ï¼Žtexture_number ã¯DS_WOOD(木目) ã‚„DS_NONE(テクスãƒãƒ£ãªã—) ãªã©ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£å®šæ•°ã§ãªã‘れã°ã„ã‘ãªã„.ç¾åœ¨ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã¯ç¾åœ¨ã®è‰²ã§å¡—られる.

  • void dsSetViewPoint(float xyz[3], float hpr[3]);

カメラã®ä½ç½®ã¨è¦–線を設定ã™ã‚‹ï¼Žxyz ã¯ã‚«ãƒ¡ãƒ©ã®ä½ç½®(x,y,z), hpr ã¯ã‚«ãƒ¡ãƒ©ã®è¦–ç·šheading(yow ã«ç›¸å½“), pitch, roll を表ã—å˜ä½ã¯[°]ã§ã‚る.ODEã®APIã¯å…¨ã¦è§’度をradianã§è¡¨ã™ãŒï¼Œã“ã®drawstuffã®APIã¯è§’度を[°]ã§è¡¨ã™ã®ã§æ³¨æ„.heading=0 ã¯x è»¸ã«æ²¿ã£ãŸæ–¹å‘,pitch=0 ã¯æ°´å¹³ç·šã®æ–¹å‘,roll=0 ã¯ãƒ­ãƒ¼ãƒ«ãªã—.


  • dSpaceID dSimpleSpaceCreate(dSpaceID space);

å˜ç´”ãªè¡çªæ¤œå‡ºè¨ˆç®—用スペースを生æˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Žï¼Ž

  • void dSpaceCollide(dSpaceID space, void *data, dNearCallback *callback);

ã“ã®é–¢æ•°ã¯è¡çªã—よã†ãªï¼’ã¤ã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªãƒšã‚¢ã®é›†å›£ã‚’探ã—,å„ペアã«3 番目ã®å¼•æ•°ã§æŒ‡å®šã™ã‚‹ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ã‚’呼ã³å‡ºã™ï¼Žãã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ã¯dNearCallback åž‹ã§æ¬¡ã®ã‚ˆã†ã«å®šç¾©ã•れã¦ã„る.

  • void dSpaceDestroy(dSpaceID);

スペースを破壊ã™ã‚‹ï¼Žã‚¯ãƒªãƒ¼ãƒ³ã‚¢ãƒƒãƒ—モードãŒ1 ã®å ´åˆï¼ˆãƒ‡ãƒ•ォールト),スペースã®ä¸­ã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªã¯è‡ªå‹•çš„ã«ç ´å£Šã•れる.

  • void dSpaceCollide2(dGeomID o1, dGeomID o2, void *data, dNearCallback *callback);

ã‚るスペースã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªãŒåˆ¥ã®ã‚¹ãƒšãƒ¼ã‚¹ã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªã¨è¡çªã™ã‚‹å¯èƒ½æ€§ãŒã‚るペアを計算ã—コールãƒãƒƒã‚¯é–¢æ•°ã‚’よã¶ï¼Žã“れã¯è¡çªæ¤œå‡ºã‚’拘æŸã«ã™ã‚‹ãŸã‚ã«ã‚¹ãƒšãƒ¼ã‚¹ã‚’éšŽå±¤çŠ¶ã«æ§‹ç¯‰ã—ã¦ã„ã‚‹å ´åˆã«å½¹ç«‹ã¤ï¼ŽdSpaceCollide ã¨ã®é•ã„ã¯o1,o2 ã®2 ã¤ã®å¼•æ•°ã‚’ã¨ã‚‹ã“ã¨ã§ã‚り,コールãƒãƒƒã‚¯é–¢æ•°ã‚’è¡çªã™ã‚‹å¯èƒ½æ€§ã®ã‚ã‚‹å…¨ã¦ã®ãƒšã‚¢ã‚’呼ã¶ï¼Ž




T

  • dTriMeshDataID dGeomTriMeshDataCreate();

メッシュデータをä¿å­˜ã™ã‚‹dTriMeshData オブジェクトを生æˆã™ã‚‹.


U

V

W

  • WorldID dWorldCreate();

æ–°ã—ã„動力学計算用ワールドを生æˆã—,ãã®ID 番å·ã‚’è¿”ã™ï¼Ž

  • void dWorldDestroy(dWorldID);

ワールドã¨ãã®ä¸­ã«ã‚ã‚‹å…¨ã¦ã‚’破壊ã™ã‚‹ï¼Žã“れã«ã¯ï¼Œå…¨ã¦ã®ãƒœãƒ‡ã‚£ã¨ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚°ãƒ«ãƒ¼ãƒ—ã«å«ã¾ã‚Œã¦ã„ãªã„å…¨ã¦ã®é–¢ç¯€ãŒå«ã¾ã‚Œã‚‹ï¼Žã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚°ãƒ«ãƒ¼ãƒ—ã«å«ã¾ã‚Œã‚‹å…¨ã¦ã®é–¢ç¯€ã¯ä¾‹ãˆã°ï¼ŒdJointGroupEmpty ãªã©ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã‚ˆã£ã¦ç ´å£Šã•れる.


  • dReal dWorldGetCFM (dWorldID);
拘æŸåŠ›æ··åˆãƒ‘ラメータCFM (constraint force mixing) ã‚’å–å¾—ã™ã‚‹ï¼Ž
  • dReal dWorldGetERP (dWorldID);

関節誤差修正パラメータERP ã‚’å–å¾—ã™ã‚‹.

  • void dWorldGetGravity(dWorldID, dVector3 gravity);

world ã®é‡åŠ›ãƒ™ã‚¯ãƒˆãƒ«ã‚’å–å¾—ã™ã‚‹ï¼Žåœ°çƒã®é‡åŠ›ãƒ™ã‚¯ãƒˆãƒ«ã¯z 軸ã®å‘ãを上ã«ã¨ã‚‹ã¨(0,0,-9.81) ã¨ãªã‚‹ï¼Žãƒ‡ãƒ•ォルト値ã¯ç„¡é‡åŠ›(0,0,0) ã¨ãªã‚‹ï¼Ž


  • void dWorldSetGravity(dWorldID, dReal x, dReal y, dReal z);

ワールドã®é‡åŠ›ãƒ™ã‚¯ãƒˆãƒ«ã‚’è¨­å®šã™ã‚‹ï¼Žæ¨™æº–ã¯(0,0,0) ã§ã‚る.

  • void dWorldQuickStep(dWorldID, dReal stepsize);

ワールドを引数stepsize [s] ã ã‘1ステップ進ã‚る.ã“れã¯å復計算ã«ã‚ˆã‚‹æ–¹æ³•ã§ã‚ã‚‹ãŸã‚dWorldStep()より高速ã§ã‚ã‚‹ãŒï¼Œç²¾åº¦ã¯é«˜ããªã„.計算é‡ã¯O(mN),mã¯åˆ¶ç´„ã®è¡Œæ•°ï¼ŒNã¯ç¹°ã‚Šè¿”ã—回数ã§ã‚る.ãªãŠï¼ŒNã®ãƒ‡ãƒ•ォルト値ã¯20ã§ã‚る.ã“ã®å€¤ã¯dWorldSetQuickStepNumIteration()ã§è¨­å®šã™ã‚‹ï¼Ž


  • void dWorldSetQuickStepNumIteration(dWorldID, int num);
dWorldQuickStep()ã®ç¹°ã‚Šè¿”ã—計算ã®å›žæ•°ã‚’設定ã™ã‚‹ï¼Žnumã®å€¤ã‚’大ããã™ã‚‹ã¨ç²¾åº¦ã¯é«˜ããªã‚‹ãŒé€Ÿåº¦ã¯é…ããªã‚‹ï¼Žã“れを呼ã³å‡ºã•ãªã„å ´åˆï¼Œã¤ã¾ã‚Šnumã®ãƒ‡ãƒ•ォルト値ã¯20ã§ã‚る.
  • void dWorldStep(dWorldID, dReal stepsize);

ワールドを引数stepsize [s] ã ã‘1ステップ進ã‚る.ã“れã¯å¤§ããªè¡Œåˆ—を方法ãªã®ã§è¨ˆç®—é‡ã¯O(m3),メモリã¯O(m2) å¿…è¦ã«ãªã‚‹ï¼Žã“ã“ã§ï¼Œm ã¯åˆ¶ç´„ã®è¡Œæ•°ã§ã‚る.大ããªã‚·ã‚¹ãƒ†ãƒ ã§ã¯ãƒ¡ãƒ¢ãƒªãŒéžå¸¸ã«å¤šãå¿…è¦ã«ãªã‚Šã¨ã¦ã‚‚é…ããªã‚‹ãŒï¼Œç¾åœ¨æœ€ã‚‚æ­£ç¢ºãªæ–¹æ³•ã§ã‚る.

  • void dWorldSetGravity(dWorldID, dReal x, dReal y, dReal z);
world ã®é‡åŠ›ãƒ™ã‚¯ãƒˆãƒ«ã‚’è¨­å®šã™ã‚‹ï¼Žåœ°çƒã®é‡åŠ›ãƒ™ã‚¯ãƒˆãƒ«ã¯z 軸ã®å‘ãを上ã«ã¨ã‚‹ã¨(0,0,-9.81) ã¨ãªã‚‹ï¼Žãƒ‡ãƒ•ォルト値ã¯ç„¡é‡åŠ›(0,0,0) ã¨ãªã‚‹ï¼Ž
  • void dWorldSetCFM(dWorldID, dReal cfm);

拘æŸåŠ›æ··åˆãƒ‘ラメータCFM (constraint force mixing) ã®è¨­å®šåŠã³å–å¾—ã™ã‚‹ï¼Žå…¸åž‹çš„ãªå€¤ã¯10

コメントをã©ã†ãž

メールアドレスãŒå…¬é–‹ã•れるã“ã¨ã¯ã‚りã¾ã›ã‚“。

5,659 views