三角测量距离发现

时间:2016-06-23 19:52:34

标签: java trigonometry

我试图找到一个高尔夫击球的额外距离,因为击球的人击中了比地面更高的地面。我有等式;然而,在进入距离命中和射击角度之后,我给出的所有内容都是切线= 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 个答案:

答案 0 :(得分:1)

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的使用情况。您还必须验证正在使用的公式的逻辑和正确性。

答案 1 :(得分:0)

黄褐色(度的视角)?查看degs的值。它在你的程序中不会从0变化。请通过制作degs = angles或degs = angle / pi来改变它。

答案 2 :(得分:0)

extraDistance = distanceX * (tanA * angle)

这个等式是不正确的。将角度乘以其切线是没有意义的。一种天真的方法是

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

但是球将以弧形行进,而不是直线,所以即使是那个公式也低估了除了最浅角度之外的任何其他距离。