PART I  Particle Physics(质子物理)

Particle 质子: 有质量,可以当作一个点的物体

基本理论知识(只写重要名词,可以自己联想下以前学的名词):

向量、牛顿三大定律(惯性定律、F = ma、力反作用力)、矢量、标量、加速度、速度、时间、位移(和路程区别)、G = mg、弹力 = K*ds(k:弹力系数,ds:弹簧形变)、动量定律、动能定律、能量守恒、杠杆。

1、质点的基本属性(质量、位置、速度、加速度、合外力、摩擦因子)
       根据这些属性可以定义一个质子类来描述质子,如下:

// 质点

class CParticle

{

protected:

// 质量(使用质量的倒数方便每帧运算,提高效率)

real m_fInverseMass;

// 位置(空间位置)

D3DXVECTOR3 m_vecPos;

// 速度

D3DXVECTOR3 m_vecVelocity;

// 加速度

D3DXVECTOR3 m_vecAcceleration;

// 合力

D3DXVECTOR3 m_vecForceAccum;

// 摩擦力模拟系数

real       m_fDamping;

};

m_fDamping如果为0物体就处于静止,如果为1.0f就相当于绝对光滑。

每一帧都要更新加速度(通过合力,质量来计算),而速度则根据加速度和时间连计算,位置则根据速度时间来计算。

基本原理:

通过每一帧的时间戳(duration),以及合力来更新位置,速度,加速度。

位置的更新:

S0:前一帧的位移

S2:经过t时间物体移动的瞬间位移

S1:当前帧物体位移动

S1  =  S0  +  S2;

m_vecPos += (m_vecVelocity * duration + 0.5* m_vecAcceleration *t*t);(t为一帧的时间戳)---计算位置

因为这个t很小,所以可以写为

m_vecPos += m_vecVelocity * t;

加速度的更新:

D3DXVECTOR3 resultingAcc = m_vecAcceleration;

resultingAcc += (m_fInverseMass * m_vecForceAccum);

m_vecVelocity += (resultingAcc*duration);

由牛顿第二定律F = m*a; a = 1/m * F;

当前帧加速度等于前一帧的加速度加上当前合外力产生的加速度。

速度的更新:

m_vecVelocity += (resultingAcc * duration);

m_vecVelocity *= real_pow(m_fDamping, duration);

根据:(V1 – V0)/t = a; V1 = at + V0;

当前帧速度等于当前加速度乘以时间加上上一帧的速度。

Game.Physics.Engine.Development(游戏物理引擎开发)相关推荐

  1. Physics Engine - Car Games [ 物理引擎 - 赛车游戏 ]

    时间:2017/3/22 大三下学期 最近做完了一堆想要进一步学习的东西,便突然闲了下来,于是突然想用C++和OpenGL做一个赛车游戏,顺便练一下手.可是,真正上手起来发现,对于一款游戏而言,游戏引 ...

  2. android游戏物理引擎开发——粒子系统(三)

    生病了,医院躺了几天,动了个小手术,动手术之后的几天在医院看了几本<大众软件>,又想到自己必须得买台台式机了,这破笔记本实在用不下去了,然后开始喜欢看些硬件的东西,等我熟悉了以后,写几个硬 ...

  3. android游戏物理引擎开发——碰撞检测(三)

    生病了,医院躺了几天,动了个小手术,动手术之后的几天在医院看了几本<大众软件>,又想到自己必须得买台台式机了,这破笔记本实在用不下去了,然后开始喜欢看些硬件的东西,等我熟悉了以后,写几个硬 ...

  4. 基于JBox2D物理引擎开发的“雷电”小游戏(五)——碰撞

    不好意思,隔了这么久才发这一篇文章,虽然部分原因是最近因为实习的事情很忙,还有一部分原因是比较懒,废话不多说,现在开始正文. 碰撞 既然学到了这里,想必大家都明白,物理引擎会帮我们做很多事情,省去从零 ...

  5. 常见3D游戏物理引擎总结

    1.  Havok: 老牌的君王,支持功能如下: http://www.havok.com ·         Collision Detection - including Continuous P ...

  6. CreatorPrimer | 物理小游戏(物理引擎管理器)

    前面两篇我们介绍了物理投篮小游戏的界面布局.物理组件的基本使用方法,从今天开始进入编程篇的内容.难度在逐渐加深,为了不给大家造成阅读负担,程序篇会分成多次来讲,每篇教程尽量简单,就算没有编程基础,跟着 ...

  7. Flash飞行游戏物理引擎

    飞行游戏的物理引擎, 只用了Math.sin和Math.cos就做出来了,简单吧!

  8. Farseer:一个用于Silverlight和XNA的开源物理引擎

    当前在演示和越来越多交互界面的推动下,实时动画在很多情况下已经成为不可或缺的要求.当动画涉及到物体在屏幕上互相反弹或者被重力影响的时候,一个物理引擎就是必要的了. Farseer Physics En ...

  9. 【Canvas】HTML5游戏开发的基本流程+P2.js物理引擎实战开发

    <HTML5游戏开发的基本流程> * 1. HTML5的简述 * 2. HTML5游戏开发所需的环境与工具 * 2.1. 开发环境 * 2.1.1. 浏览器 * 2.1.2. 开发语言 * ...

  10. 【日常点滴016】python游戏库arcade结合Tiled map editor地图编辑器和Pymunk物理引擎制作游戏过程记录,并最终打包为exe文件

    独此一家,建议收藏 前言 一.创建一个空白窗口 step001.py代码示例 二.创建很多全局能用的常量 step002.py代码示例 三.创建实例变量即代表各种精灵等的变量 step003.py代码 ...

最新文章

  1. 面向对象八大设计原则
  2. EtherChannel Cisco 端口聚合详解
  3. Retrofit学习笔记
  4. C#基础知识学习(2)string类中的方法
  5. 很感人的爱情故事——世界上最遥远的距离
  6. 小米MIX 4无线反向充电安排上了?MIUI测试版固件中暗藏玄机
  7. int 转CString
  8. 华为存储更换故障硬盘
  9. C语言程序设计精髓--第3周编程题在线测试
  10. shiro+jwt登录认证anon配置无效
  11. 使用imageio写视频文件指定输出质量
  12. 根据设备不同,加载不同尺寸图片
  13. 思考 | 重返研一,你会怎么过?
  14. 易语言toJava 集合类
  15. 如何在EDUIS中导出ETL字幕模板_教大家Edius如何设置导出mp4格式视频
  16. Win10使用cmd强行删除无法删除文件的艰辛历程[cmd中删除目录下子文件和子文件夹+修复文件夹所在磁盘+设置win10管理员模式]
  17. iOS 动画原理与实现--帧动画、逐帧动画、CALayer
  18. .9图片制作 android-亲测
  19. 创造发挥能力的魔幻空间
  20. 不用找UI, CSS也能搞定图片效果(等比缩放, 背景模糊处理,投影等等)

热门文章

  1. 《MarkDown编辑器的使用技巧(修改录入方式与目录生成)|CSDN编辑器测评》
  2. 【Linux】SCP 拷贝命令
  3. C语言实现线性表的链式存储结构
  4. 临近空间大气环境特性
  5. VBA-Excel重心法求解最优地址
  6. Quartz定时任务不定时执行
  7. 西门子G120变频器初始化参数设置
  8. C语言 “百鸡问题”最优解
  9. 日常记账后,图表查看账目类别
  10. 基于RFID定位技术的酒店资产管理--RFID资产管理--新导智能