我目前正在从头开始开发一个 2 人乒乓球游戏(2D - 非常简单),并且进展顺利。但是有一个我似乎无法解决的问题 - 我不确定它是否应该位于此处或 MathExchange 上 - 无论如何都可以。
最初,球应该位于画布的中心。按下按钮时,球应该以完全随机的方向发射 - 但始终以相同的速度发射。
Ball 对象有(简化的)4 个字段 - X 和 Y 中的位置,以及 X 和 Y 中的速度。这使得当球击中时将球从墙壁上反弹回来很简单,只需反转速度即可。
public void Move() { if (X - Radius < 0 || X + Radius > GameWidth) { XVelocity = -XVelocity; } if (Y - Radius < 0 || Y + Radius > GameHeight) { YVelocity = -YVelocity; } X+= XVelocity; Y+= YVelocity; }
我认为每场比赛的速度应该相同,所以我认为我会使用毕达哥拉斯 - 两个速度的平方应该始终相同。
所以对于这个问题:
有没有办法随机选择两个数字(双打),使得它们的平方和总是一个特定的数字 - 更正式地说:
double x = RandomDouble(); double y = RandomDouble(); if (x^2 + y^2 = 16) {/* should always be true */ }
任何帮助表示赞赏:)