JBox2D详解-目前网上最全

JBox2D详解-目前网上最全

ID:37276610

大小:782.00 KB

页数:66页

时间:2019-05-20

JBox2D详解-目前网上最全_第1页
JBox2D详解-目前网上最全_第2页
JBox2D详解-目前网上最全_第3页
JBox2D详解-目前网上最全_第4页
JBox2D详解-目前网上最全_第5页
资源描述:

《JBox2D详解-目前网上最全》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、10.22D的王者JBox2DJBox2D是开源的物理引擎Box2D的Java版本,可以直接用于Android。由于JBox2D的图形渲染使用的是Processing库,因此在Android平台上使用JBox2D时,图形渲染工作只能自行开发。该引擎能够根据开发人员设定的参数,如重力、密度、摩擦系数和弹性系数等,自动地进行2D刚体物理运动的全方位模拟。每种物理引擎都有其独特的概念,在学习开源的物理引擎时,首先需要弄明白的就是其基本概念。因此,本节主要为读者复习一下物理学中的一些基本概念,并介绍JBox2D中的一些常用类与概念。10.2.1基本的物理学概念游戏是对

2、真实世界的仿真,其中用到了许多物理学知识,如密度、质量、质心、摩擦力、扭矩以及碰撞(恢复)系数等。接下来,本小节将简要介绍用JBox2D开发游戏时经常用到的一些物理学概念。密度物理学中密度指的是单位体积的质量,符号为"ρ",常用单位为kg/m^3。其是物质的一种基本特性,不随物体的质量、体积的改变而改变,同种物质的密度相同。质量质量指的是物体中所含物质的量,即物体惯性的大小,国际单位是kg。同一物体的质量通常是一个常量,不因高度、经度或者纬度的改变而变化。但是根据爱因斯坦的相对论,同一物体的质量会随着速度的变化而改变。只有运动接近光速才能感觉到这种变化,因此在

3、游戏中一般不考虑速度对质量的影响。质心物体(或物体系)的质量中心,是研究物体(或物体系)机械运动的一个重要参考点。当作用力(或合力)通过该点时,物体只作移动而不发生转动;否则在发生移动的同时物体将绕该点转动。研究质心的运动时,可将物体的质量看作集中于质心。理论上,质心是对物体的质量分布用"加权平均法"求出的平均中心。摩擦力当两个互相接触的物体,如果要发生或者已经发生相对运动。就会在接触面上产生一种阻碍该相对运动的力,这种力就称之为摩擦力。其基本情况如图10-9所示。图10-9摩擦力示意图提示根据物体是否发生相对运动可以分为静摩擦力与滑动摩擦力,实际开发中可以进

4、行简化,但若要模拟更加真实的效果就需要分别开发。扭矩扭矩在物理学中就是力矩的大小,等于力与力臂的乘积,国际单位是Nm(牛米)。在力臂不变的情况下,力越大,扭矩越大。基本情况如图10-10所示。恢复系数两物体碰撞后的总动能与碰撞前的总动能之间的比称之为恢复系数,其取值范围为0~1。如果恢复系数为1,则碰撞为完全弹性碰撞,满足机械能守恒;如果恢复系数小于1并且大于0,则为非完全弹性碰撞,不满足机械能守恒,这种情况是最常见的;如果恢复系数为0,则为完全非弹性碰撞,两个物体会粘在一起。基本情况如图10-11所示。图10-10扭矩示意图图10-11各种碰撞情况说明在图1

5、0-11中,两个小球的质量相等,小球的初速度V1大于V2。10.2.2JBox2D中常用类的介绍(1)俗话说得好"基础不牢,地动山摇"。在学习新技术时,首先要学习的就是该技术的一些基本概念,因此本小节主要介绍JBox2D中一些必知必会的类。1.Vec2类(二维向量)该类属于org.jbox2d.common包,继承自java.lang.Object类,其对象用于表示一个二维向量或二维笛卡尔坐标。二维向量Vec2类的基本功能如图10-12所示。图10-12二维向量示意图该类在JBox2D中的使用频率非常高,通常用于表示物体的位置、速度等,其构造器与常用方法及属性

6、如表10-2所列。表10-2构造器与主要方法方法、属性或构造器签名说明类型publicVec2(floatx,floaty)创建一个Vec2的对象,该对象表示X轴分量为x,Y轴分量为y的一个向量或坐标系中的(x,y)点构造器publicstaticVec2abs(Vec2a)求向量的绝对值方法publicVec2add(Vec2v)返回该向量与另一向量的和,并不改变其中的任何一个的值方法publicVec2addLocal(Vec2v)返回该向量与另一向量的和,并改变当前的向量方法publicVec2clone()复制向量方法publicfloatlength

7、()返回该向量的长度方法publicfloatlengthSquared()返回该向量长度的平方方法publicstaticVec2max(Vec2a,Vec2b)返回两个向量中最大的方法publicstaticVec2min(Vec2a,Vec2b)返回两个向量中最小的方法publicvoidset(floatx,floaty)设置向量的两个分量方法publicvoidset(Vec2v)设置当前向量为向量v方法publicvoidsetZero()将向量设置为0向量方法2.AABB包围盒该类属于org.jbox2d.collision包,继承自java.l

8、ang.Object类,表示轴对齐的边

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。