余弦和正弦移动玩家

时间:2013-01-06 14:12:23

标签: math language-agnostic

在这个问题的接受答案中:Java game - how to stop player from walking over obstacles我遇到了这段代码:

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

这是做什么的?我读(并且当然是猜测,因为变量名称)它将方向和速度转换为x速度和y速度。但是罪恶和成本是什么?这接受了什么样的方向?因为AlekHalfHeart没有给出进一步的解释,所以我认为这是一个非常常见的片段,但我以前从未见过它。

2 个答案:

答案 0 :(得分:1)

我想我已经弄明白,感谢Oli Charlesworth的评论'如果你绘制一张正在发生的事情的图表,你会得到一个三角形! ;)和相当数量的图表。我会尝试解释它,但我从来没有用英语(我是荷兰语)的数学,所以我不知道所有的适当的数学术语,但我会尝试:

我首先不明白O. Charlesworth的三角形在哪里。但是在几张图纸之后,我发现'玩家'所做的运动线与x轴或y轴形成一个三角形。
在那之后,我仍然不明白那里有什么正弦和余弦,但在重读和推广我的数学书后,我发现x轴和连字符之间的关系(玩家的运动 - 嘿,我知道英语单词!)等于“玩家”沿x轴行进的距离。幸运的是(但并非巧合,它是MATHS),这正是余弦返回的结果。如果用y轴代替x轴,用正弦代替余弦,你可以解释为什么ySpeed = ...有效。

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

PS我现在意识到我的问题真的很模糊。这是一个奇迹,它尚未关闭。

答案 1 :(得分:0)

这是数学或物理背景,所以看一下这个例子Vector components。 Cos和Sin用于计算矢量的X和Y分量或坐标系中的运动。方向是一个角度,运动是矢量,所以在X和Y分量上将它们与速度相乘后,最后得到速度的X和Y分量。我不是数学教授所以我希望你明白:)