由于重力9.81,我有一个球加速。我也有一些线条,可以移动,并由用户改变它们的斜率。如何处理球和线之间的弹跳碰撞,使它们以正确的角度反弹。我所有的碰撞检测工作正常,我只是想知道是否有一种方法可以使用线的斜率来找到碰撞后球的合成矢量。
我使用Mac OS 10.6.8上的XCode 4编写Objective-C
答案 0 :(得分:2)
我认为你需要球与之碰撞的“表面”的“正常”矢量,然后相应地“翻转”球的“速度”矢量。
澄清:线的“正常”是线的垂直向量,单位长度。可以这样想:线代表一个平面,它有一个法向量。
从我的头顶: 设N为线的归一化(单位长度)“正常”向量,设v为球的速度向量。
使用点积计划v到N(p = v DOT N)
将向量2 * p * N添加到v(v = v + 2 * p * N)
我认为应该这样做......
我还建议使用已经指出的物理引擎。
答案 1 :(得分:0)
答案 2 :(得分:0)
简单的方法(在我看来):
旋转矩阵由下式给出:
( cos A , sin A )
( -sin A , cos A )
反向旋转矩阵由下式给出:
( cos A , -sin A )
( sin A , cos A )
其中A是直线与水平面之间的角度。
以上使用标准数学约定(正x和y是右上象限,0弧度沿x轴正方向,角度逆时针增加。