- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[2018年最新整理]JBox2D详解
10.2 2D的王者JBox2D
JBox2D是开源的物理引擎Box2D的Java版本,可以直接用于Android。由于JBox2D的图形渲染使用的是Processing库,因此在Android平台上使用JBox2D时,图形渲染工作只能自行开发。该引擎能够根据开发人员设定的参数,如重力、密度、摩擦系数和弹性系数等,自动地进行2D刚体物理运动的全方位模拟。
每种物理引擎都有其独特的概念,在学习开源的物理引擎时,首先需要弄明白的就是其基本概念。因此,本节主要为读者复习一下物理学中的一些基本概念,并介绍JBox2D中的一些常用类与概念。
10.2.1 基本的物理学概念
游戏是对真实世界的仿真,其中用到了许多物理学知识,如密度、质量、质心、摩擦力、扭矩以及碰撞(恢复)系数等。接下来,本小节将简要介绍用JBox2D开发游戏时经常用到的一些物理学概念。
密度
物理学中密度指的是单位体积的质量,符号为ρ,常用单位为kg/m^3。其是物质的一种基本特性,不随物体的质量、体积的改变而改变,同种物质的密度相同。
质量
质量指的是物体中所含物质的量,即物体惯性的大小,国际单位是kg。同一物体的质量通常是一个常量,不因高度、经度或者纬度的改变而变化。但是根据爱因斯坦的相对论,同一物体的质量会随着速度的变化而改变。只有运动接近光速才能感觉到这种变化,因此在游戏中一般不考虑速度对质量的影响。
质心
物体(或物体系)的质量中心,是研究物体(或物体系)机械运动的一个重要参考点。当作用力(或合力)通过该点时,物体只作移动而不发生转动;否则在发生移动的同时物体将绕该点转动。
研究质心的运动时,可将物体的质量看作集中于质心。理论上,质心是对物体的质量分布用加权平均法求出的平均中心。
摩擦力
当两个互相接触的物体,如果要发生或者已经发生相对运动。就会在接触面上产生一种阻碍该相对运动的力,这种力就称之为摩擦力。其基本情况如图10-9所示。
图10-9 摩擦力示意图 提示 根据物体是否发生相对运动可以分为静摩擦力与滑动摩擦力,实际开发中可以进行简化,但若要模拟更加真实的效果就需要分别开发。
扭矩
扭矩在物理学中就是力矩的大小,等于力与力臂的乘积,国际单位是Nm(牛米)。在力臂不变的情况下,力越大,扭矩越大。基本情况如图10-10所示。
恢复系数
两物体碰撞后的总动能与碰撞前的总动能之间的比称之为恢复系数,其取值范围为0~1。如果恢复系数为 1,则碰撞为完全弹性碰撞,满足机械能守恒;如果恢复系数小于1并且大于0,则为非完全弹性碰撞,不满足机械能守恒,这种情况是最常见的;如果恢复系数为0,则为完全非弹性碰撞,两个物体会粘在一起。基本情况如图10-11所示。
图10-10 扭矩示意图 图10-11 各种碰撞情况 说明 在图10-11中,两个小球的质量相等,小球的初速度V1大于V2。
10.2.2 JBox2D中常用类的介绍(1)
俗话说得好基础不牢,地动山摇。在学习新技术时,首先要学习的就是该技术的一些基本概念,因此本小节主要介绍JBox2D中一些必知必会的类。
1.Vec2类(二维向量)
该类属于mon包,继承自java.lang.Object类,其对象用于表示一个二维向量或二维笛卡尔坐标。二维向量Vec2类的基本功能如图10-12所示。
图10-12 二维向量示意图 该类在JBox2D中的使用频率非常高,通常用于表示物体的位置、速度等,其构造器与常用方法及属性如表10-2所列。
表10-2 构造器与主要方法
方法、属性或构造器签名 说 明 类 型 public Vec2(float x,float y) 创建一个Vec2的对象,该对象表示
X轴分量为x,Y轴分量为y的一个
向量或坐标系中的(x,y)点 构造器 public static Vec2 abs(Vec2 a) 求向量的绝对值 方法 public Vec2 add(Vec2 v) 返回该向量与另一向量的和,
并不改变其中的任何一个的值 方法 public Vec2 addLocal(Vec2 v) 返回该向量与另一向量的和,
并改变当前的向量 方法 public Vec2 clone() 复制向量 方法 public float length() 返回该向量的长度 方法 public float lengthSquared() 返回该向量长度的平方 方法 public static Vec2 max(Vec2 a,Vec2 b) 返回两个向量中最大的 方法 public static Vec2 min(Vec2 a,Vec2 b) 返回两个向量中最小的 方法 public void set(float x,float y) 设置向量的两个分量 方法
您可能关注的文档
- [2018年最新整理]ICU医院感染目标性监测方案.doc
- [2018年最新整理]ICU及危重专科小组2月份工作汇报.ppt
- [2018年最新整理]ICU医院感染控制进展(胡必杰).ppt
- [2018年最新整理]ICU危重患者护理.ppt
- [2018年最新整理]ICU呼吸机消毒制度.doc
- [2018年最新整理]ICU各种应急预案需要打印的.doc
- [2018年最新整理]ICU各班护士工作流程.doc
- [2018年最新整理]ICU基本护理技术.doc
- [2018年最新整理]ICU基础知识.doc
- [2018年最新整理]ICU如何做一名医师.doc
- 2025山东青岛市城阳区“城选计划”选聘45人考前自测高频考点模拟试题及答案详解(真题汇编).docx
- 2025山东大学新一代半导体材料研究院非事业编制人员招聘1人笔试备考试题附答案详解(能力提升).docx
- 2025年信宜市政务服务和数据管理局选聘事业单位人员(1人)笔试备考试题附答案详解(预热题).docx
- 2025山东大学(青岛校区)微生物技术研究院李盛英教授团队招聘模拟试卷含答案详解(完整版).docx
- 2025年度天津市卫生健康委员会所属天津市第三中心医院第二批次招笔试备考试题及答案详解(新).docx
- 2025年度国务院国资委研究中心招聘(2人)考前自测高频考点模拟试题及答案详解(网校专用).docx
- 2024年绥化市公务员考试行测真题及一套参考答案详解.docx
- 2025年滨州经济技术开发区面向社会公开招聘硕博士高层次人才笔试考前自测高频考点模拟试题含答案详解(.docx
- 2025年内蒙古自治区公安厅面向社会招聘警务辅助人员(206人)考前自测高频考点模拟试题及答案详解(.docx
- 2025山东省海洋科学研究院(青岛国家海洋科学研究中心)招聘4人考前自测高频考点模拟试题附答案详解(.docx
最近下载
- 内江师范学院2021-2022学年第2学期《高等数学(下)》期末试卷(A卷)附标准答案.pdf
- 高思奥数一年级下册含答案第16讲 有趣的拆数.docx VIP
- 叉车安全考试题库及答案.doc VIP
- 新疆2024年高中学业水平考试化学试卷试题真题(含答案详解).docx VIP
- 卓长仁劫机案.doc VIP
- 国家建筑标准设计图集 23S519小型排水构筑物图集.pdf VIP
- 四年级语文下册期末试卷(人教版).doc VIP
- 金属塑性成形原理知到智慧树期末考试答案题库2024年秋山东建筑大学.docx VIP
- 《高效工作计划与目标管理培训课件》.ppt VIP
- 常见肿瘤标志物及临床意义.pptx VIP
文档评论(0)