物理学----碰撞

现在你已了解了粒子和刚体的运动,接着要看当它们撞在一起时会发生什幺事情.这就是本章计论的主题,物别是告诉你如何处理粒子和刚体的碰撞反应。

 

在开始之前,先将碰撞“侦测”和碰撞“反应”做个区分。做个区分。碰撞侦测是计算的几何问题,这牵扯到判断两物体(或更多)是否碰撞及在何处碰撞。而碰撞反应是物理问题,牵涉到两物体(或更多)在碰撞之后的运动。虽然这两类问题密切相关,而本章将着重讨论碰撞反应方面的问题。

 

然而我必须说,碰撞侦测并没有被忽略:它是假定物体不能互相穿透的实时仿真中要考虑的重要方面。碰撞反应算法依据碰撞侦测算法的结果,以准确地判断任何碰撞的适当反应;因此,应确定你的碰撞侦测法则是准确而可靠的。也就是说,碰撞侦测不是件简单的差事,我发现要完整地实现它比刚体仿真的物理层面还难上许多。就游戏应用而言,执行速度也是主要的议题,相信你是知道的,十分精确的碰撞侦测会很慢。正是由于速度和简单的缘故,我们将利用边界球体(以及边界方块)与边和面的碰撞侦测法则。在第十三章、第十六章的范例仿真中将谈到更多关于此主题的内容。

 

本章中对刚体碰撞反应的处理是根据标准的(牛顿)碰撞定律。碰撞的物体无论其结构与材质皆视为刚体。如同前几章一样,这里讨论的刚体即使在碰撞时也不改变其外形。当然,这只是理想化的情况。从日常经验中可知,当物体相撞时它们会凹册陷、弯曲、压缩或起皱。例如,当棒球击中球棒时,棒球在撞击的毫秒间会压缩3/4英寸。尽管这是事实,我们仍依赖完整的分析及经验方法来估算刚体碰撞。

 

这种标准的方法广泛地应用于工程机械设计、分析和仿真;然而,就刚体仿真而言,有另一套方法可使用,就是“惩罚法”(penalty method) (注1)。

 

惩罚法中,撞击力就是使撞击点上的物体间压缩的暂时弹力。此弹力压缩经过很短暂的时间,并将大小相等且方向相反的力作用于碰撞物体上以仿真碰撞反应。此方法的提议者说它有容易实现的好处。然而实现上碰到的困难之一是数值的不稳定。惩罚法的使用还有其它争议,在这里不加以讨论。我将许多参考资料加入参考文献中,若你有兴趣可以看看。

 

冲量/动量定律

 

冲力的定义是作用时间非常短暂的力。例如,开枪时施加在子弹上的力称为冲力。两碰撞物体间的碰撞力也称为冲力,当你踢足球或以球棒击中棒球时也是冲力。

冲量是一个向量,其大小等于动量的变化量。所谓的“冲量/动量”定律,就是力矩的变化等于所作用的冲量。关于定质量及转动惯量的问题。可写成

线性冲量= F dt=m( -v )

角冲量= M dt=I( - )

这些等式中。F是冲力,M是冲力的力矩,t是时间,v是速度,下标符号 ﹣表示冲撞前的瞬间, 上标符号+表示冲撞后的瞬间。用下列等式便可求出平均冲力及力矩:

F=m( -v )/( - )

M=I( - )/( - )

 

 

考虑下面这个简单的例子:150g (0.01028 slug)的子弹以枪口速度2480ft/s发射出去,通过24in.长的枪管共花了0.0008s;求子弹受到的冲量及平均冲力。本例中,子弹的质量固定为150g,而其初速度为0;因此,其初动量为0。在开枪后一瞬间,子弹的动量为其质量乘以枪口速度2480ft/s,得到动量等于25.2 slug.ft/s。冲量等于动量的变化量,所以是25.5 slug.ft/s。平均冲力等于冲量除以力作用的时间,本例为:

 

                     平均冲力=(25.5 slug-ft/s)/(0.0008s)

                         平均冲力 = lb 

 

    注:本文章用此准方法并提到惩罚法,只是要让你知道将示范的方法不只一个。大致来说,“惩罚法”中的“惩罚法”是指反弹常数,它通常很大,用来表示反弹的的僵硬程度从而表示碰撞物体的硬度(或软度)。这些常数会在描述物体碰撞前后的运动等式中用到。

 

这是对冲量概念简单而重要的说明,而在你处理刚体碰撞时也会用到相同的定律。撞击期间,冲撞力通常很大,而撞击时间很短。当两物体相撞时,两者均施冲力于对方;这些力大小相等而方向相反。在步枪范例中,施于子弹上的冲量,也以反方向施于步枪上而产生后坐力。这就是牛顿第三运动定律。

 

撞击

除了上一节讨论的冲量/动量定律,标准的撞击或碰撞反应分析依据另一个基本定律:牛顿的动量守恒定律  当刚体系统碰撞时,动量守恒。这表示固定质量的物体,其质量与速度之积的总和在撞击前后是相等的:

 

-+ = -+

这里,m代表质量,v代表速度,下标符号1表示物体1、下标符号2表示物体,下标符号 – 表示撞击前的瞬间,而下标符号 + 表示撞击后的瞬间。

本方法假设撞击瞬间主要的力是冲撞力,其它的力都假设为在短时间内可忽略。记住此假设,因为稍后的第十三章实现碰撞反应2D实时仿真范例时,将用到它。先前提到刚体在碰撞时并不会改变外形,而你自身的经中真实的物体在碰撞时确实改变了外形。真实世界中,动能会转成应变能(strain energy),使物体变形。当物体的变形是永久的时,能量消失,因此动能不会转换。

动能

动能是关于移动物体的能量形式。动能等于物体从静止加速所需的能量,也等于使移动物体静止所需的能量。动能是物体速率或速度与其质量的函数。线性动能的公式如下:

Kelinear=(1/2)

角或动动能是物体的转动惯量及角速度的函数:

Keangular=(1/2)

两碰撞物体间的动能守恒是指,两物体碰撞的能量总和等于碰撞后的能量总和:

+ + +

牵涉到动量散失的碰撞称为非弹性碰撞或塑性碰撞。例如,若以相反方向丢出两个泥球,它们的动能转化成使泥球变形的应变能,而它们的碰撞反应(即撞击之后的运动)就没那幺引人注目。若为完全非弹性碰撞,则两泥球会粘在一块且在撞击后以相同的速度一起移动。动能守恒的碰撞称为完全弹性碰撞。在这些碰撞中,所有物体动能的总和在撞击前后是相等的。弹性碰撞(虽非完全弹性)的最佳范例是两颗撞球间的碰撞,其中球的变形是可忽略的,而且在正常情况下是非永久的。

当然事实上,碰撞大多介于完全弹性和完全非弹性这间。这表示就刚体而言(其外形不会改变),将利用由经验得出的关系式为要仿真的碰撞的弹性程度定量。此关系式是碰撞物体的相对分离速度与相对接近速度的比例:

e= - (v - v )/(v - v )

这里,e是恢复系数(coefficient of restitution)且为物体材质、结构、几何形状的函数。这个系数可由特殊的碰撞实验测得,例如,棒球与球棒或高尔夫球棍与球之间的碰撞。对于完全非弹性碰撞,e等于0;而对于完全弹碰撞,e等于1。对于既不是完全弹性也不是完全非弹性的碰撞的情况,e是介于0和1之间的任意值。在这方面,所考虑的速度沿着碰撞的作用线。

在无摩擦力的碰撞中,撞击的作用线垂直(或正交)于碰撞的接触面。当物体速度沿著作用线时,这种碰撞称为“中心碰撞”(central impact)。粒子与质量分布均匀的球体遭受的撞击都是中心碰撞。而直接中心碰撞发生在作用线通过碰撞物体质心且速度沿著作用线时。当物体速度不沿著作用线时,这种撞击称为“倾斜碰撞”(oblique impact)。你可以利用分量坐标来分析倾斜碰撞,担其中平行于作用线的分量才与撞击有关,而垂直于作用线的分量则无。图5-1显示了这些撞击。

时间: 2024-08-03 06:55:39

物理学----碰撞的相关文章

从2013诺贝尔物理学奖看计算机发展

近日在<量子杂志>上的一篇文章,作为物理学的专栏作家,作者向我们讲述了在量子物理学研究的过程中,各种计算机技术的变迁,文中虽然没有提到专业的计算机知识,但也让人在一个新的角度看到了近年计算机发展的情况. 以下为译文: 10月8日,瑞典皇家科学院10月8日宣布,将2013年诺贝尔物理学奖授予比利時理论物理学者François Englert和英国理论物理学家Peter W. Higgs,两人因为准确预测了希格斯玻色子的理论预言而获奖,2012年这一预言在位于瑞士的CERN(欧洲核子中心)粒子物理

如何在物理引擎的碰撞计算中得到碰撞作用线?

问题描述 如何在物理引擎的碰撞计算中得到碰撞作用线?初次接触制作物理引擎,看了一本叫做<游戏开发物理学>的书,这本书关于公式给的很好但是要知道碰撞作用线,就是碰撞时撞击的边的垂线,苦思不知道怎么求,希望能给出算法步骤或原理,谢了. 解决方案 解决方案二:没做过碰撞处理,帮你顶解决方案三:顶求帮助啊...有急用.解决方案四:碰撞边的过碰撞点的中垂线,和物体碰撞速度方向夹角的另一边的相同夹角的逆向方向,复杂一点要计算能量损失和摩擦损失的角度,以及碰撞边的非平滑情况还有运动物体的角度,但是基本来说,

《游戏开发物理学(第2版)》一导读

前 言 游戏开发物理学(第2版) 谁适合读这本书? 简单来说,这本书是专为那些没有扎实的物理或机械基础的游戏开发者编写的.特别是他们要在游戏中加入真实物理(real physics)时. 作为一个游戏开发者,很可能你自己也是个玩家,你通常会看到游戏产品标榜自己"超写实(ultra-realistic)",或者直接描述成"现实世界物理(real-world physics)".同时,你或者你的公司市场部想知道如何对你们的游戏进行测试才能获得这样逼真的效果.又或许你想要

《游戏开发物理学(第2版)》一1.9 相对论时间

1.9 相对论时间 为了能够深入了解先进的航天器是如何工作的以及给你用来调节你游戏中时间的机制,我们会在此提供相对论的简介,特别是其对时间的影响.在我们的日常经验中,假设在我们写这篇文章时,你墙壁上的时钟和我墙壁上的钟以同样的速度嘀嗒作响是安全的.然而,大家知道阿尔伯特·爱因斯坦这个名字的原因是他有着放弃将时间作为一个常量的先见之明.与常识相反,他推断不论来自哪里的光都会以同样的速度来运行. 也就是说,如果你用手电筒照射真空,它所发出的可见光形式的电磁辐射将会以光速c(299792458 m/s

CCAI 2017 人工智能科学与艺术论坛 | 科学、艺术、 女性之间的碰撞

人工智能与艺术--让炫酷科技多了一抹柔情 艺术创作被称为人类特有的高级的.复杂的.极富创造性的精神活动和实践活动,但在人工智能发展迅速的今天,工程师们能够通过算法创造出令⼈人震撼的视觉作品,并且,用 AI 系统撰⽂文写歌已有不不少例例⼦子.艺术的选择非常广泛,人工智能也让艺术看到了更更多的可能性,在未来的发展中,它们将碰撞出怎样强烈的火花? 以目前最大流量的对话式人工智能 -- 微软小冰为例,通过其"人类与人工智能的联合创作"模式,用户可以将一张图片发给小冰,而它会根据图片作一首诗.在

布局好的页面探讨:设计细节方向的碰撞

文章描述:布局好的页面探讨:设计细节方向的碰撞. 以前做项目得到一个经验,就是在立项前,不需要拿个布好局的页面出来讨论,因为我们觉得,在方向还未清楚的时候,讨论页面细节可能是浪费时间. 这一回,战略部的新partner给了我一个不同的启示.按说她的工作是在我上游,可是在最开始的实际操作中,她却把工作走到了我的下游,直接做了一个页面出来,把功能点.内容全都画好了-- 我一阵吃惊,对比着我自己的proposal,我跟她说,你这个东西,同事们能接受吗,因为他们都不知道方向在哪里,你却让他们看细节. 后

J2ME 2D小游戏入门之旅(四) 加入子弹群,实现碰撞运算

运算 飞机类游戏中子弹是必不可少的,他们数量很多且充斥着整个屏幕,这些随机或者有着一定AI的小物体,实现起来不是总那么容易,有时候你不得不考虑很多和效能有关的问题.我们之前定义了GameObject,很大程度上就是为了方便的重用Sprite,因为我们有很多的子弹,不可能没增加一个子弹都是一个Sprite,我需要共享同一个Sprite.我们通过继承GameObject来实现. 下面分析一下这个子弹类: 它将继承自GameObject: 记录子弹的个数: 一个子弹的状态数组,记录各个子弹的类型typ

拖拽动作以及碰撞动作详细讲解

在网上经常看到的flash影片中有的对象可以被鼠标进行拖动.例如有的类似七巧板的拼图游戏,控制音量的滑杆等,所使用的就是flash中的拖拽动作. 一.拖拽命令详细介绍 1.首先介绍一下开始拖拽命令的详细用法,稍后在后面的例子中进行测试. 命令格式: StartDrag(要拖动的影片剪辑,[是否锁定到鼠标位置中央,左,上,右,下]) 或写为 要拖动的影片剪辑.StartDrag([是否锁定到鼠标位置中央,左,上,右,下]) 命令讲解:在制作动画的过程中,上面两种书写方法可任选一种.其中[]内的为可

《物理学的弹性》分析

对蓝色理想经典论坛中的一篇关于"物理学的弹性"教程的分析,讲解比较清晰-- 首先,来认识一下弹性效果,我们这里把它理解为力,这个力拖动物体到目的地,并且当物体与目的地越远,这个力越大,就想弹簧上吊了一个物体! 现在,开始一步步写代码.首先,随便制造一个mc,比如画一个小球,把它放在舞台的左边,对该mc写如下代码: onClipEvent(load){ vx=1;} onClipEvent(enterFrame){ _x+=vx;} vx表示沿x轴方向的速度,_x+=vx 等于_x=_x