首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >倒影?我该怎么做呢?

倒影?我该怎么做呢?
EN

Stack Overflow用户
提问于 2011-03-28 12:22:31
回答 2查看 17.1K关注 0票数 4

这让我摸不着头脑,有没有人能给我解释清楚?http://mathworld.wolfram.com/Reflection.html

我正在制作一款2d越狱格斗游戏,所以我需要球能够在它击中墙壁、划桨或敌人(或敌人击中它)时进行反射。

它们的公式都是这样的:x_1^‘-x_0=v-2(v·n^^)n^。

我不能容忍这一点。(‘or x_0’是什么意思?或^^?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-28 15:04:52

如果考虑“点积”运算的几何意义,则反射公式更容易理解。

两个3d向量之间的点积在数学上定义为

代码语言:javascript
复制
<a, b> = ax*bx + ay*by + az*bz

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

ab之间的点积是ab上的投影长度,如果这两个向量指向相反的方向,则取负号,乘以<代码>E110b<代码>E211的长度。

使用这个定义很明显,但如果只看公式就不明显了,例如,如果坐标系旋转,两个向量的点积不会改变,两个垂直向量的点积是0(在这种情况下,投影的长度显然是零),或者一个向量本身的点积是它的长度的平方。

相反,使用几何解释不太明显的是,点积是可交换的,即<a, b> = <b, a> (考虑到公式,这一事实是显而易见的)。

需要考虑的重要一点是,如果b的长度为1,则点积<a, b>就是ab上的投影长度(用正确的符号取)。

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

要计算反射矢量r,给定一个矢量a和一个法线为n的平面,您只需使用以下公式:

代码语言:javascript
复制
r = a - 2<a, n> n

图中的height h在本例中仅为<a, n> (请注意,假设n具有单位长度),因此应该很清楚,您需要在法线方向上移动该高度的两倍。

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

票数 27
EN

Stack Overflow用户

发布于 2011-03-28 15:10:44

这仅仅是公式格式的问题吗?因为我看到的是格式很好的等式,而不是您问题中出现的LaTeX样式的标记。因此,第一步:尝试在不同的web浏览器中查看页面,看看它是否看起来更清晰。

更有实质意义的是,我会推荐一种不同的资源。从根本上说,您看到的是collisions,它通常在物理文本中比数学文本中处理得更好。任何入门物理教科书都会有一个关于碰撞的章节,这应该直接适用于你的游戏。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5454661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档