【发布时间】:2019-11-18 08:29:27
【问题描述】:
我正在学习制作旧街机游戏 Breakout 的教程 - 你在屏幕底部有一个桨,目标是将移动的球转向屏幕顶部的一系列块。
计算反弹效果的代码是:
ball.dx = ball.speed * Math.sin(angle);
ball.dy = - ball.speed * Math.cos(angle);
黄色圆圈代表球:
我将正弦和余弦理解为斜边的比率;我似乎仍然无法理解它们是如何在这里准确计算回弹角的。谁能解释给定角度和速度值的结果数字如何在反弹时产生球的方向性?我觉得我缺少一个简单的概念部分。
【问题讨论】:
-
它们没有被用来计算回弹角;角度是您所显示内容的输入。它们被用来计算给定角度的矩形的两侧,正如您所说的使用与斜边的三角关系。
-
阅读基础物理书籍中的牛顿力学章节会对您有很大帮助。
-
有几种定义函数cos和sin的方法。您在这里需要的是单位圆之一。例如:khanacademy.org/math/algebra2/…
-
我花了一些时间思考后的理解是,作为输入的角度提供了计算 Y 值 (
ball.dy) 和 X 值 (ball.dx) 的方法。这两个结果值(作为坐标)提供了以编程方式在画布上移动球的方法。因为 JavaScript 函数返回一个介于 -1 和 1 之间的值,所以产生的运动效果会很慢,所以我们乘以斜边ball.speed来增加球的移动速度。我在球场上吗?
标签: javascript math trigonometry