物体与曲面的碰撞

本文介绍了一种在游戏开发中处理圆形物体与任意地形曲面碰撞的方法,通过将圆心与地形的碰撞转化为判断圆心与延长后的地形函数的交点来估算接触点。该算法适用于圆形或其近似图形,并且能处理函数表达的复杂地形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在做一个小游戏,需要一些碰撞,于是我就想了一个算法:把圆边缘与曲线的碰撞转化为 圆心与地形的碰撞。


首先我的物体是圆形的,当然其他图形也可以用圆近似代替或分割。 地形曲面是任意的,我的程序是用函数表达的。

图一

如图,圆下落时不能直接知道接触点的位置,因此我的算法主要是得到近似的触点。

如果把地形函数f(x)延斜率方向 延长r,得到一个新的函数g(x).g(x)与圆心的相交足以说明f(x)与圆边缘相交。根据f(x)与g(x)的对应法则也可得到触点位置。

  • 设a,b是g(x)上的点,k=f '(x),r为圆的半径.
  •  a=x-k*r/sqrt(k*k+1);
  • b=f(x)+r/sqrt(k*k+1);                             应该说由参数方程确定的函数可以直接用a,b表示。但隐函数的显化太难了几乎不可能,反正我是不行。
图2不过可以知道如果函数是突出的,dX=-k*r/sqrt(k*k+1); p在 x-ox 到x+ox 之间
如果是凹的 则在外面。而且OX的乘上一个系数i可以解决这些问题,而且可以优化效率。如,k变化不大时a为1&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值