有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java三角测距

我试图找出高尔夫球击球的额外距离,因为击球的人是在比地面更高的地面上击球。我有方程式;然而,在进入距离击球和击球角度后,我得到的是切线=0。为了在运行程序后显示额外的距离,我是否缺少了什么

public class HittingBay {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        double distanceX = 0;
        double radians = 0;
        double extraDistance = 0;
        double rads;
        double degs = 0;
        double tanA = 0;
        double angle = 0;

        System.out.println("Enter in distance hit");
        distanceX = scan.nextInt(); // distanceX means how far shot track man thought
        System.out.println("Enter in angle of shot");
        angle = scan.nextInt();

        // Calculate tangent
        tanA = Math.tan(degs);
        System.out.println("Tangent = " + tanA);

        extraDistance = distanceX * (tanA * angle);
        extraDistance = scan.nextInt();
        System.out.println("extra distance= " + extraDistance);
    }
}

共 (3) 个答案

  1. # 1 楼答案

    extraDistance = distanceX * (tanA * angle)
    

    这个等式太不正确了。把这个角度乘以它的切线是没有意义的。一个天真的方法是

    extraDistance = distance * ( Math.sec(angle_in_radians) - 1 )
    

    但是球将以弧线而不是直线运动,所以即使这个公式也低估了除了最浅角度以外的任何额外距离

  2. # 2 楼答案

    degs仅初始化为0,尚未更改。0的切线为0。你需要做的是给deg一个值。也许可以使用用户输入。然后需要将度转换为弧度,因为Java的三角函数以弧度为参数。尝试以下方法:

    double tanResult = Math.tan(Math.toRadians(degs));
    

    或者在你的情况下:

    tanA = Math.tan(Math.toRadians(degs));
    

    用于扫描学位:

    System.out.println("Enter Degrees: ");
    degs = scan.nextDouble();
    

    还需要注意的是:extraDistance正在被计算,但被用户输入覆盖。确保验证extraDistance的使用。您还必须验证所使用公式的逻辑性和正确性

  3. # 3 楼答案

    谭(德格斯)?查看degs的值。在您的程序中,它不会从0更改。请通过使degs=角度或degs=角度/pi进行更改