0

在这个问题的公认答案中:Java 游戏 - 如何阻止玩家越过障碍物我遇到了这段代码:

xSpeed = Math.cos(direction) * speed;
ySpeed = Math.sin(direction) * speed;

这是做什么的?我读到(当然也猜到了,因为变量名)它将方向和速度转换为 x 速度和 y 速度。但是 sin 和 cos 有什么用呢?这接受什么样的方向?因为 AlekHalfHeart 没有给出进一步的解释,所以我认为这是一个很常见的片段,但我以前从未见过。

4

2 回答 2

1

我想我想通了,这要归功于 Oli Charlesworth 的评论“如果你画出正在发生的事情的图表,你会得到一个三角形!;)' 和相当数量的图表。我会试着解释一下,但我从来没有用过英语数学(我是荷兰人),所以我不知道所有事情的适当数学术语,但我会尝试:

我一开始不明白 O. Charlesworth 的三角形在哪里。但在画了几张图后,我发现“玩家”的移动线与 x 轴或 y 轴形成了一个三角形。
在那之后我仍然不明白正弦和余弦在那里做了什么,但是在重新阅读和概括我的数学书之后,我发现x轴和斜边之间的关系(玩家的运动 - 嘿,我知道英文单词!)等于“玩家”沿 x 轴行进的距离。幸运的是(但并非巧合,它是 MATHS),这正是余弦返回的结果。如果您将 x 轴替换为 y 轴,将余弦替换为正弦,您就会得到我对为什么ySpeed = ...有效的解释。

我担心我的英语解释不完全正确,但那是因为我的英语技能,而不是我的数学技能。我希望它可以帮助某人。

PS我现在意识到我的问题真的很模糊。它还没有关闭是一个奇迹。

于 2013-01-08T10:05:55.610 回答
0

这是数学或物理背景,因此请查看此示例Vector components。Cos 和 Sin 用于计算向量的 X 和 Y 分量或在坐标系中的移动。方向是一个角度,运动是矢量,所以在 X 和 Y 分量上平移它之后,它们乘以速度,所以最后你得到了速度的 X 和 Y 分量。我不是数学教授,所以我希望你能理解:)

于 2013-01-06T14:32:01.873 回答