我试图找到一个高尔夫击球的额外距离,因为击球的人击中了比地面更高的地面。我有等式;然而,在进入距离命中和射击角度之后,我给出的所有内容都是切线= 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);
}
}
答案 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 )
但是球将以弧形行进,而不是直线,所以即使是那个公式也低估了除了最浅角度之外的任何其他距离。