Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
1.ode引擎中的几何体
ode物理引擎中的几何体有球体,盒子,胶囊,射线,平面,圆柱,网格等等
对于一般的几何体比如球体,盒子等其默认的位置为原点,也就是其中心点在坐标原点
那么对于box来说描述一个盒子只需要3个参变量分别为长高宽
对于Capped Cylinder来说
其特点就是在圆柱的上下地上各加了一个半圆形的帽子,其新生产的圆柱轴总是z轴
2.ode geom和body的关系
geom是简单的几何体
body可以代表物理场景对象
一般而言一个body总是对应于1个或者多个几何体
一个物理对象总是包含1个或者多个几何体
当然ode有函数可以检测给定几何体和物理对象的管理
对于body之间也有函数检测他们是不是相连的
3. ode关节类型
ode 具有5种类型的关节分别为
hinge,ball,slider,unversal(万向轮)以及hinge2
hinge是常见的合页那种关节形式
ball类型于游戏摇杆
slider:插销形式
hinge2则是带有轴的关节
其中大多数关节都具有内置的马达而球-涡球则不具有
Mos t joints  have motors  built in.Ball and sockets do not
3.弹簧-阻尼系统
2种解决方式
    1.简单的:使用erp和cfm
    2.复杂点的:使用物理方程式
    
     1.erp模式:施加力保持关节附着物理不偏离
     2.cfm模式-constraint force mixing

     胡克定律:非k*(ra-a);
    带阻尼的形式: f = k*(ra-a)-d*da
4.如何保持ode模拟的平稳性
     1.僵硬的弹簧不可取
     2.严格的束缚条件
     3....
5.如果保持ode模拟更快
     1.使用较少的关节
     2.使用简单的替代物替换多重关节
     3.使用较少的接触面
     4.如果可能使用无摩擦或者粘性接触面替换库伦摩擦接触面
6.ode质量函数类..
清空质量
void dMassSetZero (dMass *);
void dMassSetSphere (dMass *, dReal density, dReal radius);
void dMassSetSphereTotal (dMass *, dReal total_mass, dReal radius);
void dMassSetCappedCylinder (dMass *, dReal density, int direction,dReal radius, dReal length);
void dMassSetCappedCylinderTotal (dMass *, dReal total_mass,int direction, dReal radius, dReal length);
void dMassSetCylinder (dMass *, dReal density, int direction,dReal radius, dReal length);
void dMassSetCylinderTotal (dMass *, dReal total_mass, int direction,dReal radius, dReal length);    
void dMassSetBox (dMass *, dReal density,dReal lx, dReal ly, dReal lz);
void dMassSetBoxTotal (dMass *, dReal total_mass,dReal lx, dReal ly, dReal lz);         
void dMassAdjust (dMass *, dReal newmass);
void dMassTranslate (dMass *, dReal x, dReal y, dReal z);  
void dMassRotate (dMass *, const dMatrix3 R);
void dMassAdd (dMass *a, const dMass *b);
   

 
  
posted on 2010-03-31 10:45 ccsdu2009 阅读(1855) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理