青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級(jí)工程師 Android高級(jí)軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿
接著上文繼續(xù)學(xué)習(xí)ode物理引擎的函數(shù)和數(shù)據(jù)結(jié)構(gòu)O(∩_∩)O~
15.剛體對(duì)象的啟用和禁止
剛體對(duì)象可以被啟用或者禁止
禁止剛體對(duì)象則在仿真過程中剛體不參與仿真
如果啟用自禁止的話,那么剛體對(duì)象會(huì)在給定仿真步中idle(如何翻譯?)
如果啟用自動(dòng)禁止的話,那么當(dāng)剛體線速度和角速度同時(shí)小于給定閾值之時(shí)被禁止
1 void dBodyEnable (dBodyID);
2 void dBodyDisable (dBodyID);
3 int dBodyIsEnabled (dBodyID);
4 void dBodySetAutoDisableFlag (dBodyID, int do_auto_disable);
5 int dBodyGetAutoDisableFlag (dBodyID);
1void dBodySetAutoDisableAngularThreshold (dBodyID, dReal angular_threshold);
2dReal dBodyGetAutoDisableAngularThreshold (dBodyID);
3void dBodySetAutoDisableLinearThreshold (dBodyID, dReal linear_threshold);
4dReal dBodyGetAutoDisableLinearThreshold (dBodyID);
需要確保的是線速度和角速度要小于給定的閾值
16.幾個(gè)雜項(xiàng)函數(shù)
 
1 void dBodySetData (dBodyID, void *data);
2 void *dBodyGetData (dBodyID);
設(shè)置,和獲取剛體數(shù)據(jù)
1 int dBodyGetNumJoints (dBodyID b);
獲取關(guān)聯(lián)到物體上的關(guān)節(jié)個(gè)數(shù)
1 dJointID dBodyGetJoint (dBodyID, int index);
獲取給物體上定標(biāo)號(hào)的關(guān)節(jié)句柄
1 void dBodySetGravityMode (dBodyID b, int mode);
2 int dBodyGetGravityMode (dBodyID b);
設(shè)置和獲取物體是否受重力影響(默認(rèn)為是)
1 void dMakeRandomVector (dReal *A, int n, dReal range);

獲取n個(gè)范圍在+-rang中的隨機(jī)變量

17.矩陣操作
-- 在任何引擎中矩陣都是必不可少的

 1 void dRSetIdentity (dMatrix3 R);
 2 void dRFromAxisAndAngle (dMatrix3 R, dReal ax, dReal ay, dReal az,dReal angle);
 3 void dRFromEulerAngles (dMatrix3 R, dReal phi, dReal theta, dReal psi);
 4 void dRFrom2Axes (dMatrix3 R, dReal ax, dReal ay, dReal az,dReal bx, dReal by, dReal bz);
 5 void dRFromZAxis (dMatrix3 R, dReal ax, dReal ay, dReal az);
 6 void dQSetIdentity (dQuaternion q);
 7 void dQFromAxisAndAngle (dQuaternion q, dReal ax, dReal ay, dReal az,dReal angle);
 8 void dQMultiply0 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
 9 void dQMultiply3 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
10 void dRfromQ (dMatrix3 R, const dQuaternion q);
11 void dQfromR (dQuaternion q, const dMatrix3 R);
12 void dDQfromW (dReal dq[4], const dVector3 w, const dQuaternion q);
這些函數(shù)為別是:
設(shè)置為單位矩陣,
從給定軸和角度或者矩陣
從歐拉角到矩陣
...

18.ode關(guān)節(jié)
 1 dJointID dJointCreateBall (dWorldID, dJointGroupID);
 2 dJointID dJointCreateHinge (dWorldID, dJointGroupID);
 3 dJointID dJointCreateSlider (dWorldID, dJointGroupID);
 4 dJointID dJointCreateContact (dWorldID, dJointGroupID,
 5 const dContact *);
 6 dJointID dJointCreateUniversal (dWorldID, dJointGroupID);
 7 dJointID dJointCreateHinge2 (dWorldID, dJointGroupID);
 8 dJointID dJointCreateFixed (dWorldID, dJointGroupID);
 9 dJointID dJointCreateAMotor (dWorldID, dJointGroupID);
10 void dJointDestroy (dJointID);
可以看出ode中定義的關(guān)機(jī)類型有Ball,Hinge,Slider,...
對(duì)關(guān)節(jié)的銷毀動(dòng)作為斷開所有連接的引擎物體,再銷毀關(guān)節(jié)
1 dJointGroupID dJointGroupCreate (int max_size);
2 void dJointGroupDestroy (dJointGroupID);
3 void dJointGroupEmpty (dJointGroupID);
4 
第一個(gè)函數(shù)中的max_size目前必須是(0)這是為了和以前兼容
銷毀關(guān)節(jié)和清空關(guān)節(jié)點(diǎn)區(qū)別在于銷毀會(huì)銷毀關(guān)節(jié)組中所有的關(guān)節(jié)對(duì)象和銷毀關(guān)節(jié)組,而清空關(guān)節(jié)組則只是銷毀所有的關(guān)節(jié)對(duì)象
1 void dJointAttach (dJointID, dBodyID body1, dBodyID body2);
使用給定關(guān)節(jié)連接2個(gè)物理對(duì)象,如果關(guān)節(jié)先前是連接的則斷開之,如果body1或者body2有1個(gè)為0則說明把對(duì)象連接對(duì)靜態(tài)環(huán)境中去
1 void dJointSetData (dJointID, void *data);
2 void *dJointGetData (dJointID);
設(shè)置關(guān)節(jié)數(shù)據(jù)沒什么好說的
1 int dJointGetType (dJointID);
獲取給定關(guān)節(jié)的關(guān)節(jié)類型
可能的類型有
dJointTypeBall         A ball-and-socket joint.
dJointTypeHinge      A hinge joint.
dJointTypeSlider      A slider joint.
dJointTypeContact   A contact joint.
dJointTypeUniversal A universal joint.
dJointTypeHinge2    A hinge-2 joint.
dJointTypeFixed      A fixed joint.
dJointTypeAMotor  An angular motor joint.
1 dBodyID dJointGetBody (dJointID, int index);
獲取關(guān)節(jié)給定索引的連接物理對(duì)象(以0索引起始)
1 int dAreConnected (dBodyID, dBodyID);
檢測(cè)2個(gè)問題是不是別連接了

19.關(guān)節(jié)接觸;
ode用戶指南的原文是:
The contact joint prevents body 1 and body 2 from inter-penetrating at the contact point. It does this by
only allowing the bodies to have an "outgoing "velocity in the direction of the contact normal. Contact joints
typically have a lifetime of one time step. They are created and deleted in response to collision detection.
Contact joints can simulate friction at the contact by applying special forces in the two friction directions
that are perpendicular to the normal.When a contact joint is created, a dContact structure must be supplied. This has the following definition:
接觸關(guān)節(jié)預(yù)防碰撞對(duì)象的"刺穿"問題,當(dāng)接觸關(guān)節(jié)產(chǎn)生的時(shí)候,其必要的數(shù)據(jù)元素必須被標(biāo)記
1 struct dContact {
2 dSurfaceParameters surface;
3 dContactGeom geom;
4 dVector3 fdir1;
5 };
goem是碰撞函數(shù)設(shè)置的數(shù)據(jù)結(jié)構(gòu)其中包含了:
碰撞點(diǎn),碰撞法向矢量和碰撞的2個(gè)對(duì)象id
而fdir是第一摩擦力方向(其方向和摩擦力方向是相同的),同時(shí)也是垂直于接觸面法向矢量的.
當(dāng)且僅當(dāng)surface.mode = dContactFDir1時(shí)期需要被定義
而第二摩擦力方向則是由第一摩擦里方向和接觸面方向矢量計(jì)算的正交向量
其中的dSurfaceParameters surface是由用戶設(shè)置的數(shù)據(jù)結(jié)構(gòu)
其數(shù)據(jù)結(jié)構(gòu)為:
 1 typedef struct dSurfaceParameters {
 2   /* must always be defined */
 3   int mode;
 4   dReal mu;
 5 
 6   /* only defined if the corresponding flag is set in mode */
 7   dReal mu2;
 8   dReal bounce;
 9   dReal bounce_vel;
10   dReal soft_erp;
11   dReal soft_cfm;
12   dReal motion1,motion2;
13   dReal slip1,slip2;
14 } dSurfaceParameters;
其中的mode必須被標(biāo)記
mu和mu2取值為(0 to dInfinity.)
如果沒有設(shè)置mu2,則使用mu為2個(gè)摩擦力方向
如果設(shè)置了mu2則使用mu為第一個(gè)摩擦力方向使用mu2為第二摩擦力方向
如果設(shè)置了fdir1則使用fdir作為第一摩擦力方向要不然則自動(dòng)獲取其值
bounce表明其為彈性表面也就是說碰撞對(duì)象會(huì)相互彈起(取值0-1)0標(biāo)明完全沒有彈性
soft_erp控制的是接觸表面的erp,這個(gè)值可以設(shè)置柔性表面
soft_cfm控制的是柔性表面的最大cfm
其他參數(shù)以后再介紹之

20.幾何體對(duì)象
幾何體是檢測(cè)系統(tǒng)中的基本單元
幾何體的銷毀和生成
 1 void dGeomDestroy (dGeomID);
 2 void dGeomSetData (dGeomID, void *);
 3 void *dGeomGetData (dGeomID);
 4 void dGeomSetBody (dGeomID, dBodyID);
 5 dBodyID dGeomGetBody (dGeomID);
 6 void dGeomSetPosition (dGeomID, dReal x, dReal y, dReal z);
 7 void dGeomSetRotation (dGeomID, const dMatrix3 R);
 8 void dGeomSetQuaternion (dGeomID, const dQuaternion);
 9 const dReal * dGeomGetPosition (dGeomID);
10 const dReal * dGeomGetRotation (dGeomID);
11 void dGeomGetQuaternion (dGeomID, dQuaternion result);
12 void dGeomGetAABB (dGeomID, dReal aabb[6]);
13 int dGeomIsSpace (dGeomID);
14 dSpaceID dGeomGetSpace (dGeomID);
其中有幾何體的銷毀,設(shè)置幾何體數(shù)據(jù),關(guān)聯(lián)幾何體到缸體
設(shè)置,獲取幾何體旋轉(zhuǎn),
獲取幾何體aabb盒子以及檢測(cè)幾何體是否在空間中
1 int dGeomGetClass (dGeomID);
這是獲取幾何體類型的函數(shù)其取值為:
dSphereClass         Sphere
dBoxClass             Box
dCCylinderClass    Capped cylinder
dCylinderClass       Regular flat-ended cylinder
dPlaneClass            Infinite plane (non-placeable)
dGeomTransformClass Geometry transform
dRayClass              Ray
dTriMeshClass       Triangle mesh
dSimpleSpaceClass Simple space
dHashSpaceClass   Hash table based space
int dGeomGetClass (dGeomID);
下面的是幾何體的禁止和啟用
1 void dGeomEnable (dGeomID);
2 void dGeomDisable (dGeomID);
3 int dGeomIsEnabled (dGeomID);
如果幾何體被禁止那么他就不會(huì)才與碰撞(盡管它在物理空間中)

該篇就到這里吧,這里給出一個(gè)典型的接觸面設(shè)置:
1 surface.mode = dContactBounce | dContactSoftCFM;
2 surface.mu = dInfinity;
3 surface.mu2 = 0;
4 surface.bounce = 0.01;
5 surface.bounce_vel = 0.1;
6 surface.soft_cfm = 0.01;
可以看出他是使用了接觸面彈起
其第一摩擦力方向和第二摩擦力方向是相同的 
posted on 2010-02-26 16:36 ccsdu2009 閱讀(900) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲女人天堂av| 欧美一区二区三区的| 亚洲视频在线观看网站| 欧美粗暴jizz性欧美20| 久久一区二区三区国产精品| 久久久7777| 欧美成人免费网站| 91久久精品日日躁夜夜躁欧美| 欧美综合国产| 久久久久久久综合色一本| 欧美a一区二区| 亚洲日本欧美在线| 亚洲在线免费| 久久先锋资源| 欧美日韩精品在线播放| 国产欧美日韩三区| 亚洲国产精品黑人久久久| 日韩一级欧洲| 性娇小13――14欧美| 久久综合伊人77777麻豆| 亚洲人成精品久久久久| 午夜精品久久久久久久99樱桃| 久久夜色精品国产欧美乱极品 | 亚洲高清不卡一区| a91a精品视频在线观看| 亚洲一区在线视频| 久久久久久久999| 欧美性开放视频| 国产夜色精品一区二区av| 亚洲欧洲精品一区二区| 欧美一区二区三区在| 免费亚洲婷婷| 亚洲午夜伦理| 欧美精品在线网站| 亚洲第一黄网| 亚洲欧美欧美一区二区三区| 久久婷婷国产综合精品青草| 最近看过的日韩成人| 欧美在线网站| 欧美日韩综合另类| 亚洲第一精品影视| 久久久久中文| 亚洲精品中文在线| 久久亚洲一区二区三区四区| 欧美好骚综合网| 1204国产成人精品视频| 欧美一区激情视频在线观看| 亚洲狼人综合| 久久嫩草精品久久久精品| 国产麻豆精品久久一二三| 亚洲日本欧美日韩高观看| 久久精品国产第一区二区三区| 亚洲福利久久| 久久精品国产成人| 国产精品热久久久久夜色精品三区| 亚洲福利视频三区| 久久精品久久99精品久久| 久久精品人人做人人爽| 亚洲乱码国产乱码精品精天堂| 久久精品女人的天堂av| 国产精品推荐精品| 在线亚洲欧美| 最新高清无码专区| 欧美成人一品| 亚洲精品社区| 亚洲国产精品va在线观看黑人| 久久精品视频一| 国内精品免费午夜毛片| 久久精品国产清自在天天线| 亚洲专区在线视频| 国产精品乱人伦一区二区| 先锋a资源在线看亚洲| 亚洲网站啪啪| 国产偷久久久精品专区| 久久成年人视频| 欧美一区二区三区四区视频| 国产午夜精品全部视频在线播放| 欧美一区二区在线免费播放| 亚洲欧美日韩国产| 国产综合av| 欧美91视频| 欧美国产视频在线| 制服丝袜激情欧洲亚洲| 亚洲一区二区三区视频播放| 国产日韩欧美a| 猫咪成人在线观看| 欧美成人精品| 亚洲欧美成人网| 亚洲欧美在线观看| 激情综合亚洲| 亚洲国产精品久久| 欧美日韩在线一区二区| 久久久人人人| 蜜桃av噜噜一区| 一区二区三区日韩在线观看| 亚洲天堂av在线免费观看| 国产日韩欧美一区| 欧美黑人在线观看| 国产精品成人播放| 麻豆精品在线观看| 国产精品观看| 欧美大片一区| 国产精品看片资源| 欧美ab在线视频| 国产精品videosex极品| 老色鬼久久亚洲一区二区| 欧美精品在线一区| 久久久91精品| 国产精品啊啊啊| 亚洲国产精品毛片| 久久激情婷婷| 中文高清一区| 久久一综合视频| 午夜视频在线观看一区| 欧美18av| 久久亚洲国产精品日日av夜夜| 欧美区亚洲区| 欧美成人黑人xx视频免费观看| 国产精品国产一区二区| 亚洲精品极品| 一二三区精品| 国产一区二区三区自拍| 亚洲美女av黄| 亚洲电影专区| 午夜精品区一区二区三| 99视频精品在线| 久久亚洲一区| 久久午夜视频| 国产精品专区第二| 亚洲乱码国产乱码精品精| 亚洲精品欧美精品| 久久精品一区四区| 欧美资源在线观看| 国产精品丝袜xxxxxxx| 亚洲精品一区二区三区福利| 亚洲国产精品精华液2区45| 欧美在线关看| 欧美在线资源| 国产精品一区久久久久| 一区二区精品国产| 一区二区三区欧美在线| 欧美日本不卡高清| 亚洲精品久久久久久久久久久久久| 国内精品久久久久久久影视蜜臀| 亚洲综合色自拍一区| 亚洲欧美另类国产| 国产精品卡一卡二| 日韩一级精品视频在线观看| 久久免费精品视频| 免费亚洲网站| 99国产精品私拍| 欧美日韩精品久久久| 亚洲精品社区| 亚洲一二三四久久| 欧美午夜一区二区| 一区电影在线观看| 欧美一区二区三区四区在线观看地址| 欧美性猛交99久久久久99按摩| 亚洲免费高清| 亚洲在线1234| 国产一区久久久| 久久亚洲综合色| 亚洲精品一区二区三区樱花| 99精品国产在热久久| 欧美日韩视频免费播放| 亚洲特级毛片| 亚洲国产精品123| 欧美日韩国产三区| 亚洲专区在线视频| 欧美成人精品三级在线观看| 亚洲免费av观看| 国产精品欧美激情| 久久久久久久波多野高潮日日| 免费视频一区| 一本色道久久综合一区| 国产精品手机在线| 老司机成人网| 一区二区电影免费观看| 久久中文在线| 这里只有精品视频| 国内在线观看一区二区三区| 欧美激情偷拍| 亚洲欧美日韩一区二区三区在线观看 | 欧美一区二区三区四区高清| 好吊妞**欧美| 欧美喷潮久久久xxxxx| 亚洲免费在线观看视频| 麻豆freexxxx性91精品| 亚洲一二三四久久| 伊人成综合网伊人222| 欧美日韩国产精品| 久久精品论坛| 亚洲色在线视频| 亚洲三级视频在线观看| 久久精品国产一区二区电影| 亚洲精品日韩一| 在线观看欧美日韩国产| 国产精品日韩一区| 欧美怡红院视频| 日韩系列欧美系列|