反射?我该怎么做?

时间:2011-03-28 04:22:31

标签: math vector 2d game-physics trigonometry

这是我的头脑,有人可以向我解释一下吗? http://mathworld.wolfram.com/Reflection.html

我正在制作一个2d突破格斗游戏,所以我需要球能够反射它撞击墙壁,划桨或敌人(或敌人击中它)。

所有公式都是:x_1 ^' - x_0 = v-2(v·n ^^)n ^^。

我无法忍受这一点。 (什么意思或x_0?或^^?)

3 个答案:

答案 0 :(得分:27)

如果你考虑“点积”操作的几何意义,反思的公式就更容易理解。

两个三维矢量之间的点积在数学上定义为

<a, b> = ax*bx + ay*by + az*bz

但它有一个很好的几何解释

  

a b 之间的点积是长度   用 a 投影 b 的投影   如果两个向量指向,则为负号   相反的方向,乘以 b 的长度。

dot product geometric interpretation

使用这个定义可以立即显而易见的事情,如果你只看公式就不明显了,例如,如果旋转坐标系,两个矢量的点积不会改变,那就是两个点积垂直向量为0(在这种情况下投影的长度显然为零)或者向量的点积本身就是其长度的平方。

使用几何解释而不那么明显的东西是点积是可交换的,即<a, b> = <b, a>(考虑到公式的事实很明显)。

要考虑的重点还在于,如果 b 的长度为1,则点积<a, b>只是 a 投影的长度 b (使用正确的符号)。

鉴于这种解释,计算平面上的反射的公式很容易理解:

vector reflection

要计算反射向量 r ,给定向量 a 和具有正常 n 的平面,您只需使用公式:< / p>

r = a - 2<a, n> n

图中的高度 h 在这种情况下仅为<a, n>(请注意, n 假设为单位长度)因此它应该是要清楚你需要在正常方向上移动那个高度两倍。

如果考虑正确的点积符号,当事件向量 a 且平面法线 n 朝向相同方向时,您应该看到该公式也适用。

答案 1 :(得分:2)

prime ')表示数字/点/结构的第二种形式。在这种情况下,x 1'指的是x 1的反射形式。

下标 0 )显示了相同的各种状态。在这种情况下,x 0是反射点。

插入符号^)表示某些内容是向量。在这种情况下,n是法线向量。

答案 2 :(得分:0)

这只是关于等式格式吗?因为我看到格式很好的方程式,而不是你问题中出现的LaTeX式标记。所以第1步:尝试在不同的Web浏览器中查看页面,看看它是否更清晰。

更实质上,我建议使用不同类型的资源。从根本上说,你正在研究collisions,它们在物理文本中通常比数学文本更好。任何介绍性的物理教科书都会有一章关于碰撞,这应该直接适用于你的游戏。