• <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 閱讀(4148) 評論(2)  編輯 收藏 引用
            Comments
            • # re: ode物理引擎函數介紹(1)
              陳梓瀚(vczh)
              Posted @ 2010-02-26 11:41
              ODE是一個多少年前的博士生的畢業論文的附件,你可以去看看那篇論文。  回復  更多評論   
            • # re: ode物理引擎函數介紹(1)
              footee
              Posted @ 2010-02-26 12:42
              ode除了模擬剛體不錯以外,在模擬軟質物體方面還是有缺陷的。  回復  更多評論   
             
            激情五月综合综合久久69| 久久精品国产一区二区电影| 久久综合给合久久狠狠狠97色69 | 久久精品无码一区二区WWW| 精品人妻久久久久久888| 久久99热这里只频精品6| 久久精品国产亚洲5555| 中文字幕久久精品无码| 伊人久久无码精品中文字幕| 久久播电影网| 精品无码久久久久久尤物| 欧美大战日韩91综合一区婷婷久久青草| 久久久久人妻精品一区| 久久香蕉超碰97国产精品 | 久久这里只有精品视频99| 亚洲精品tv久久久久久久久| 天堂久久天堂AV色综合| 性高湖久久久久久久久AAAAA| 精品国产婷婷久久久| 人妻精品久久无码区| 伊人伊成久久人综合网777| 久久中文字幕一区二区| 久久99亚洲综合精品首页| 久久天天躁狠狠躁夜夜avapp| 2021久久精品免费观看| 久久精品无码av| 国产无套内射久久久国产| 性做久久久久久久久| AA级片免费看视频久久| 99久久久精品| 亚洲国产综合久久天堂| 久久久久久毛片免费看| 国产精品热久久无码av| 99久久国产综合精品五月天喷水 | 久久午夜夜伦鲁鲁片免费无码影视| 青青青伊人色综合久久| 久久久91精品国产一区二区三区 | 欧美久久综合性欧美| 国内精品久久久久影院一蜜桃| 日韩精品久久久肉伦网站 | 色噜噜狠狠先锋影音久久|