随机选取一个范围内的两个数字,使它们的平方和保持不变

 不变de诺言2502890365 发布于 2023-02-07 22:04

我目前正在从零开始开发一款2人乒乓球比赛(二维 - 真正的简单),而且一切顺利.然而Theres是一个我似乎无法解决的问题 - 我不确定这应该位于此处还是位于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 */ }

任何帮助赞赏:)

1 个回答
  • 随机选取一个角度,theta然后乘以d你想要的距离.就像是:

    double theta = rand.NextDouble() * 2.0 * Math.PI;
    double x = d * Math.Cos(theta);
    double y = d * Math.Sin(theta);
    

    2023-02-07 22:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有