易码技术论坛

 找回密码
 加入易码
搜索
12
返回列表 发新帖
楼主: JAY

[请教]如何做碰撞判定

[复制链接]
 楼主| 发表于 2006-12-31 11:56:58 | 显示全部楼层
受力情况是不确定的,运动状态的不确定的...
发表于 2006-12-31 12:21:55 | 显示全部楼层
那就用积分
 楼主| 发表于 2006-12-21 20:48:45 | 显示全部楼层 |阅读模式
move.gif
如上图所描述,一个球的当前位置在(x, y),速度为v, 速度大小为3个单位长度,
现在距球心d处有一墙面,球碰上去之后将会反弹。
问题来了,通常在程序里面我们将处理为位移的导数,从而获得物体的下一个时间所在的位置。
如果按照上图所描述,那么球在下一个时间的位置(x', y') = (x, y) + v,这样求得的结果便会是球跑到墙面之后。

假设墙的位置是xw,那么球将会超出墙面x' - xw的距离,我在处理的时候将球做了关于墙面的镜像,并将速度去反。即认为x' - xw是反弹的距离,所以下一个时间球的位置将会是 xw - (x' - xw) = 2 * xw - x',并且让速度等于-v。
但是这样做便会有误差。

例如我用这个方式来处理一个受重力下落的球体,当其碰撞到地面并反弹的时候,反弹的最大高度将会超过原来的高度。
但是有个规律,反弹的最大高度是两个交替的定值,一个为原始高度,另一个略大于原始高度。例如原始高度为1.0,反弹的最大高度就是1.0, 1.02, 1.0,1.02……这样交替下去。

所以想请教大家有没有什么好的算法。
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-29 19:01 , Processed in 0.010801 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表