看似简单的线与线碰撞?

问题描述

| 由于重力9.81,我的球加速了。我也有一些线,用户可以随意移动它们的斜率。如何处理球和线之间的弹跳碰撞,以使其以正确的角度弹起。我所有的碰撞检测都工作正常,我只是想知道是否有一种方法可以使用直线的斜率来查找碰撞后球的合成矢量。 我在Mac OS 10.6.8上用XCode 4用Objective-C编写     

解决方法

        我认为您需要球与之碰撞的“表面”的“法线”向量,然后相应地“翻转”球的“速度”向量。 需要说明的是:线的“法线”是线的垂直向量,单位长度。可以这样认为:线表示一个平面,该平面将具有法向矢量。 从我的头顶: 令N为线的归一化(单位长度)“法线”向量,令v为球的速度向量。 使用点积将v投影到N上(p = v DOT N) 将向量2 * p * N加到v(v = v + 2 * p * N) 我认为应该可以解决问题... 我还将建议使用已经指出的物理引擎。     ,        您是否考虑过招募少数几个引擎中的一个来为您做脏事? Cocos2D,Box2D和Chipmunk是我想到的三个。     ,        最简单的方法(我认为): 创建线时,请计算将其旋转为水平的矩阵,然后计算该矩阵的逆矩阵。 当球与线碰撞时: 通过旋转矩阵旋转速度向量 更改y分量的符号 通过旋转矩阵的逆旋转速度矢量。 旋转矩阵由下式给出:
( cos A,sin A )
( -sin A,cos A )
逆旋转矩阵由下式给出:
( cos A,-sin A )
( sin A,cos A )
其中A是线与水平线之间的角度。 上面使用标准数学惯例(正x和y是右上象限,0弧度是沿x轴的正方向,并且角度沿逆时针方向增加。