度数分钟秒到弧度公式不起作用

时间:2015-12-12 04:14:14

标签: java math degrees radians

以下是代码:

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"在公式的其他部分,它仍然有效,它只是在一个位置。有任何想法吗?

2 个答案:

答案 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