以下是代码:
double r = Double.parseDouble(radius.getText().toString());
double del = Double.parseDouble(delta.getText().toString());
double dm = ((int)((del - ((int)del)) * 100));
double rads = (((int)del) + (dm / 60) + (((((del - ((int)del)) * 100) - ((int)((del - ((int)del)) * 100))) * 100) / 3600)) * (Math.PI / 180);
String t = String.valueOf(r * (Math.tan(rads / 2)));
String c = String.valueOf(2* r* (Math.sin((rads/2))));
String m = String.valueOf(r*(1- Math.cos((rads/2))));
String a = String.valueOf(2*Math.PI*r*((((int)del) + (dm / 60) + (((((del - ((int)del)) * 100) - ((int)((del - ((int)del)) * 100))) * 100) / 3600))/360));
tangent.setText(t);
arc.setText(a);
chord.setText(c);
mid.setText(m);
我的目标是减少我在程序中使用的变量数量来清理它。因为它是我发布它的方式,公式起作用。如果我更换" dm"在双重" rads"使用"((int)((del - ((int)del))* 100))"的当前值,公式不再有效。它与" / 60"有关。我尝试过不同的支架情况,但似乎没有用。我已经取代了" dm"在公式的其他部分,它仍然有效,它只是在一个位置。有任何想法吗?
答案 0 :(得分:2)
您的代码很难阅读。这就是你挣扎的部分原因。
我会这样写:
package misc;
/**
* Created by Michael on 12/12/2015.
* @link https://stackoverflow.com/questions/34236175/degrees-minutes-seconds-to-radians-formula-not-working
*/
public class AngleConverter {
public static void main(String[] args) {
double degrees = (args.length > 0) ? Double.valueOf(args[0]) : 0.0;
double minutes = (args.length > 1) ? Double.valueOf(args[1]) : 0.0;
double seconds = (args.length > 2) ? Double.valueOf(args[2]) : 0.0;
double radians = convertDegreesToRadians(degrees, minutes, seconds);
System.out.println(String.format("degrees: %10.6f", degrees));
System.out.println(String.format("minutes: %10.6f", minutes));
System.out.println(String.format("seconds: %10.6f", seconds));
System.out.println(String.format("radians: %10.6f", radians));
System.out.println(String.format("degrees: %10.6f", Math.toDegrees(radians)));
}
public static double convertDegreesToRadians(double degrees, double minutes, double seconds) {
double angle = degrees + minutes/60.0 + seconds/3600.0;
return Math.toRadians(angle);
}
}
答案 1 :(得分:0)
让我们说你有d m s
度,分和秒。鉴于此
60 minutes = 1 degree
60 seconds = 1 minute
我们得到d m s
代表的度数总和
deg = d + m/60 + s/60^2
现在需要将deg
度转换为弧度。但
360 degrees = 2*Pi radians
所以,
1 degrees = (2*Pi/360) radians
和
deg degrees = deg * (2*Pi/360) radians
总结一下,答案是
(d + m/60 + s/60^2) * 2 * Pi / 360
可以改写为
((s/60 + m)/60 + d)/60 * Pi/3