ODE手册(3)数据类型和惯例
来源:互联网 发布:淘宝店铺级别怎么看 编辑:程序博客网 时间:2024/06/03 07:20
3.1 基本数据类型
ODE库可以被编译为使用单精度或双精度浮点数据类型。使用单精度时,模拟在占用较小内存空间的同时会取得较快的速度,但是会引起更多的数值型误差而且会引起可见的错误。另一方面,在使用单精度时会降低模拟的精确度和稳定性(必须说明哪些因素会影响到模拟的精确度和稳定性)。浮点型数据类型有dReal和其它一些常用的类型dVector3、dMatrix3、dQuaternion。矢量类浮点型数据类型都是通过简单的dReals数组实现的。它们的设计惯例如下:
名称实现格式dQuaterniondReal[4][w,x,y,z]w表示实数部分,(x,y,z)表示向量部分dVectors4dReal[4][x,y,z,1.0]dVectors3dReal[4]和dVectors4一样;第四个元数只是为了更好地对齐,应该忽略dMatrix4dReal[4*4]一个4X4的矩阵,元素被设计为行优先序列,通常被当作一个奇次变换矩阵。也就是说位于左上3X3的元数是一个旋转矩阵,最后一列的第一个三元组是一个平移向量,最后一行就简化为[0,0,0,1]dMatrix3dReal[3*3]yige 3X3的矩阵,元素被设计为行优先序列。最后一列被忽略,并且同dVector3一样,仅仅用于更好地对齐3.2对象和ID
在ODE中可以创建很多种对象:
- dWorld:表示一个动力学世界,包含所有的仿真数据
- dBody:表示一个刚体,没有任何形状:需要一个或更多的dGeom
- dJoint:表示一个关节
- dJointGroup:表示一个关节组,可以很容易地实现一次销毁所有的关节
- dSpace:表示一个碰撞空间,用于组织和加速碰撞测试
- dGeom:表示用于检测碰撞的形状
所有的3元向量(x,y,z)都通过“set”函数通过给定单独的x,y,z参数进行初始化;
所有的3元向量都可以通过“get”函数获取一个指向dReal型数组的值;
较大的向量通常都通过dReal型数组指针给定值或者返回结果;
默认所有坐标都在全局坐标系中除非特别声明。
3.4 C v.s. C++
ODE库是用C++写的,但是它的公共接口是由简单的C函数组成的,而不是类,这是为什么呢?
- 使用C接口仅仅是为了更简单—C++的特点对ODE并不是很有帮助
- 阻止C++识别和“运行时”,支持交叉编译
- 使用ODE的用户并不一定需要熟悉C++模式
ODE的库文件可以被编译为“调试”或“发布”模式。调试模式虽然较慢,但是函数参数会被检测并且会做很多run-time测试以确保内部一致性;发布模式虽然较快但是不会做任何检查。
wrapper:(封装)在实际的程序开发过程中,我们通常会为不同的应用设计适应于不同编程语言、环境接入的接口,对于这种接口的处理,通常称之为wrapper。在此篇博文中出现的wrapper就是一种ODE针对C++提供的接口。
run-time:(运行时)在程序开发的过程中,我们通常会将此过程分为多个阶段,也成为不同的时期(主要有compile time、link time、load time、run time等)。运行时表示程序运行、执行的时期。通常所说的run-time测试、错误主要针对的就是程序在运行阶段的各种测试和出现的各种错误。
- ODE手册(3)数据类型和惯例
- ODE手册(1)安装和使用
- ODE手册(6)关节类型和相关函数
- ODE手册(0)概述
- ODE手册(2)基本概念
- ODE手册(4)World
- ODE手册(5)刚体函数
- ODE介绍(一):ODE编译和安装
- 命名惯例和规范
- ISA标准和惯例
- 命名惯例和规范
- eclipse 安装 BPEL 和 ODE
- 惯例
- PostgreSQL学习手册(数据类型)
- Redis学习手册(Set和Zset数据类型)
- C#编程规范和惯例
- C#命名惯例和规范
- Python中的chr和ode函数
- MySQL分页SQL和ORACLE分页SQL
- ODE手册(2)基本概念
- 表单小结
- ios 调试技巧收藏二 lldb命令
- fedoral 17-x86编译linux-4.5.4内核浅析及编译过程
- ODE手册(3)数据类型和惯例
- ODE手册(4)World
- SQL精华
- 在控制面板里面找不到“添加或删除程序”
- C++ 实现简单通用的线程池
- ODE手册(5)刚体函数
- 开源项目之Android框架(Query)
- Struts2拦截器
- ODE手册(6)关节类型和相关函数