模拟打台球计算偏移距离或偏移角度

package com.base.week01.day01;

import java.util.Scanner;

public class Billiard {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("""

                ****************************模拟计算击打台球的出杆角度****************************

                角度值为 击打球与碰撞球所在直线 与 碰撞球与网洞所在直线  形成的 锐角 单位为 °\s
                distance距离值为击打球与碰撞球之间的距离 单位按球的半径为 1 计算

                distance距离越小目测值误差影响越大 a角度越小目测之误差影响越大
                """);

        do {
            System.out.print("角度(锐角): ");
            double a = sc.nextDouble();
            //计算前提
            if (a >= 90) {
                System.out.println("\n输入有误 不可击中");
            } else {
                System.out.print("距离(球半径为1):  ");
                double distance = sc.nextDouble();
                a = Math.toRadians(a);
                double pi = Math.toRadians(180);
                double fcd = Math.atan((0.5 * distance - Math.cos(a)) / Math.sin(a));
                //满足条件
                if ((a < 0.5 * pi) && fcd > a) {
                    //计算过程
                    double relta = 2 * Math.sin(a + Math.atan(2 * Math.sin(a) / (distance - 2 * Math.cos(a))));
                    double reltdis = 90 - fcd / pi * 180;

                    //取两位小数
                    String str = String.format("%.2f", relta);
                    double resulta = Double.parseDouble(str);
                    String st = String.format("%.2f", reltdis);
                    double resultdis = Double.parseDouble(st);

                    System.out.println("角度偏移" + resultdis + "°");
                    System.out.println("位置偏移" + resulta);
                } else {
                    System.out.println("\n输入有误 不可击中");
                }
            }
            System.out.println("\n继续1 停止0");
        } while (sc.nextInt() == 1);
        System.out.println();
        System.exit(10);
        System.out.println("程序结束");
    }
}

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Matlab是一种强大的数学计算软件,也可以用来进行物理仿真模拟。要使用Matlab模拟台球,我们需要在计算机内部构建一个用于表示台球和桌面的模型,并使用物理规则来模拟球的运动。下面是一个简单的示例。 首先,我们可以用Matlab的图形界面工具箱(Graphical User Interface, GUI)创建一个界面,绘制一个台球桌和一些初始位置的球。接下来,我们需要定义球的初始位置、质量、半径和初始速度。 然后,使用Matlab中的“ode45”函数来求解球的运动方程。球的运动可以由牛顿第二定律描述,即 F = m*a,其中F是球受到的合力,m是球的质量,a是球的加速度。球受到的合力包括摩擦力、重力和碰撞力。 在模拟台球的过程中,我们还需要考虑球与球之间的碰撞,以及球与边框之间的碰撞。碰撞过程中,根据动量守恒和动能守恒定律,可以计算出碰撞后球的速度和方向的变化。 模拟的过程中,可以使用Matlab绘制每个时刻球的位置,并实时更新图像。通过调节初始条件和球的参数,我们可以模拟出不同情况下球的运动轨迹和碰撞结果。例如,可以模拟撞击球杆后球的滚动、弹穿球、球落袋等台球相关的情况。 总结起来,使用Matlab模拟台球需要构建物理模型,求解球的运动方程,并考虑球之间和球与边框之间的碰撞。通过调节模型参数和初始条件,我们可以模拟出不同情况下的球的运动,从而实现台球的仿真模拟

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值