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);
}
}
# 1 楼答案
这个等式太不正确了。把这个角度乘以它的切线是没有意义的。一个天真的方法是
但是球将以弧线而不是直线运动,所以即使这个公式也低估了除了最浅角度以外的任何额外距离
# 2 楼答案
degs
仅初始化为0,尚未更改。0的切线为0。你需要做的是给deg
一个值。也许可以使用用户输入。然后需要将度转换为弧度,因为Java的三角函数以弧度为参数。尝试以下方法:或者在你的情况下:
用于扫描学位:
还需要注意的是:
extraDistance
正在被计算,但被用户输入覆盖。确保验证extraDistance
的使用。您还必须验证所使用公式的逻辑性和正确性# 3 楼答案
谭(德格斯)?查看degs的值。在您的程序中,它不会从0更改。请通过使degs=角度或degs=角度/pi进行更改