• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Cpper
            C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿
            常見的物理引擎有ode,newtow,phycisX,Havok以及子彈引擎等等
            本文介紹ode物理引擎中常用的函數:
            1.獲取物理引擎世界,大部分程序我們僅僅需要一個world(返回值為世界句柄)
            dWorldID dWorldCreate();
            2.銷毀給定的物理引擎世界和包含的所有物體和不包含在關節組中的所有關節
            1 dWorldDestroy (dWorldID);
            3.設置和獲取物理世界中的重力加速度
            1 void dWorldSetGravity (dWorldID, dReal x, dReal y, dReal z);
            2 void dWorldGetGravity (dWorldID, dVector3 gravity);
            其單位是m/s^2,假定z軸向上的話,那么地球重力加速度是(0,0,-9.81)
            在ode中默認的重力加速度是(0,0,0)
            4.設置和獲取引擎仿真步修正誤差
            1 void dWorldSetERP (dWorldID, dReal erp);
            2 dReal dWorldGetERP (dWorldID);
            典型的取值為(0.-0.8),默認取值為0.2
            5.設置引擎全局混合約束力(constraint force mixing)
            1 void dWorldSetCFM (dWorldID, dReal cfm);
            2 dReal dWorldGetCFM (dWorldID);
            典型取值為(10e-9,1)之間,
            默認值為單精度時為10e-5,雙精度時為10e-10
            6.物理世界的更新操作
            1 void dWorldStep (dWorldID, dReal stepsize);
            2 void dWorldQuickStep (dWorldID, dReal stepsize);
            stepsize為步進大小一般可取為0.5f
            可簡單描述為dWorldStep:精度高但是速度低
                                    dWorldQuickStep:精度低但是速度快
            7.設置和獲取仿真步迭代器個數
            1void dWorldSetQuickStepNumIterations (dWorldID, int num);
            2int dWorldGetQuickStepNumIterations (dWorldID);
            默認的迭代器個數為20.迭代器越多則結果越精確但是速度會變慢
            8.設置和獲取對象接觸修正速度
            void dWorldSetContactMaxCorrectionVel (dWorldID, dReal vel);
            dReal dWorldGetContactMaxCorrectingVel (dWorldID);
            其默認值是沒有限制的
            簡言之該函數決定了對象碰撞之后對象的速度變化上限
            9.設置對象表面接觸深度
            1 void dWorldSetContactSurfaceLayer (dWorldID, dReal depth);
            2 dReal dWorldGetContactSurfaceLayer (dWorldID);
            默認的大小是0也就是對象不會透過對象
            給定一個極小值比如0.01可以預防振動問題

            接下來是一些剛體函數:
            10.獲取和銷毀給定空間中的剛體對象
            1 dBodyID dBodyCreate (dWorldID);
            2 void dBodyDestroy (dBodyID);
            新生成的剛體質量為默認值,其位置在0點
            銷毀一個剛體其附加的關節點并不會消除也就是說不會影響仿真
            11.剛體的位置和旋轉操作
             1 void dBodySetPosition (dBodyID, dReal x, dReal y, dReal z);
             2 void dBodySetRotation (dBodyID, const dMatrix3 R);
             3 void dBodySetQuaternion (dBodyID, const dQuaternion q);
             4 void dBodySetLinearVel (dBodyID, dReal x, dReal y, dReal z);
             5 void dBodySetAngularVel (dBodyID, dReal x, dReal y, dReal z);
             6 const dReal * dBodyGetPosition (dBodyID);
             7 const dReal * dBodyGetRotation (dBodyID);
             8 const dReal * dBodyGetQuaternion (dBodyID);
             9 const dReal * dBodyGetLinearVel (dBodyID);
            10 const dReal * dBodyGetAngularVel (dBodyID);
            這些函數含義很明顯,需要注意的就是
            dBodyGetRotation返回的是一個4*3的旋轉矩陣
            12.設置,獲取剛體質量
            1 void dBodySetMass (dBodyID, const dMass *mass);
            2 void dBodyGetMass (dBodyID, dMass *mass);
            13.剛體受力
             1 void dBodyAddForce (dBodyID, dReal fx, dReal fy, dReal fz);
             2 void dBodyAddTorque (dBodyID, dReal fx, dReal fy, dReal fz);
             3 void dBodyAddRelForce (dBodyID, dReal fx, dReal fy, dReal fz);
             4 void dBodyAddRelTorque (dBodyID, dReal fx, dReal fy, dReal fz);
             5 void dBodyAddForceAtPos (dBodyID, dReal fx, dReal fy, dReal fz,
             6 dReal px, dReal py, dReal pz);
             7 void dBodyAddForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz,
             8 dReal px, dReal py, dReal pz);
             9 void dBodyAddRelForceAtPos (dBodyID, dReal fx, dReal fy, dReal fz,
            10 dReal px, dReal py, dReal pz);
            11 void dBodyAddRelForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz,
            12 dReal px, dReal py, dReal pz);
            四個參數的函數表明受力點為剛體質心
            7個參數的函數表明受力點位剛體給定點位置
            1 const dReal * dBodyGetForce (dBodyID);
            2 const dReal * dBodyGetTorque (dBodyID);
            3 void dBodySetForce (dBodyID b, dReal x, dReal y, dReal z);
            4 void dBodySetTorque (dBodyID b, dReal x, dReal y, dReal z);
            注意這是剛體受力和扭矩設置,獲取函數
            這對于清空剛體受力或者扭矩很有作用

            最后是幾個ode空間函數
            14.空間的構造和析構
            1 dSpaceID dSimpleSpaceCreate (dSpaceID space);
            2 dSpaceID dHashSpaceCreate (dSpaceID space);
            3 dSpaceID dQuadTreeSpaceCreate (dSpaceID space, dVector3 Center, dVector3 Extents, int Depth);
            4 void dSpaceDestroy (dSpaceID);
            15.空間平面坐標系設定
            dCreatePlane(space, a, b, c, d);
            參數a,b,c,d滿足以下函數關系
            ax+by+cz = d;
            那么
            1 dCreatePlane(space, 0100);
            2 dWorldSetGravity(world, 0-0.80);
            的含義是
            以空間y軸為重力加速度效果方向
            其重力加速度大小為-0.8速度為沿y軸向下.
            posted on 2010-02-26 11:04 ccsdu2009 閱讀(4153) 評論(2)  編輯 收藏 引用
            Comments
            • # re: ode物理引擎函數介紹(1)
              陳梓瀚(vczh)
              Posted @ 2010-02-26 11:41
              ODE是一個多少年前的博士生的畢業論文的附件,你可以去看看那篇論文。  回復  更多評論   
            • # re: ode物理引擎函數介紹(1)
              footee
              Posted @ 2010-02-26 12:42
              ode除了模擬剛體不錯以外,在模擬軟質物體方面還是有缺陷的。  回復  更多評論   
             
            久久综合丝袜日本网| 国产精品久久久久久久app| 99国产欧美精品久久久蜜芽| 东京热TOKYO综合久久精品 | 四虎国产精品成人免费久久| 精品久久人人爽天天玩人人妻| 欧美牲交A欧牲交aⅴ久久| 国产精品久久久久久福利69堂| 久久久久99精品成人片| 日本欧美久久久久免费播放网| 狠狠精品久久久无码中文字幕| 97视频久久久| 久久久精品日本一区二区三区 | 丁香五月网久久综合| 午夜精品久久久久久久无码| 国产成人精品久久免费动漫| 一本色道久久综合| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 国产精品亚洲美女久久久| 色综合久久久久无码专区| 久久久久久A亚洲欧洲AV冫 | 亚洲va久久久噜噜噜久久天堂 | 国产成人精品三上悠亚久久| 久久亚洲2019中文字幕| 丰满少妇人妻久久久久久4| 99久久免费国产特黄| 亚洲综合熟女久久久30p| 一本色道久久综合| 国产成人综合久久精品红| 久久久久无码精品| 精品久久人人做人人爽综合| 亚洲乱亚洲乱淫久久| 国产精品99久久久久久宅男 | 久久婷婷色综合一区二区| 日日狠狠久久偷偷色综合0| 久久91精品综合国产首页| 激情五月综合综合久久69| 久久国产精品偷99| 香蕉99久久国产综合精品宅男自| 国内精品伊人久久久久影院对白 | 久久久久久伊人高潮影院 |