簡體   English   中英

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

[英]Degrees minutes seconds to radians formula not working

這是代碼:

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);

我的目標是減少我在程序中使用的變量數量,以對其進行一些清理。 按照我發布的方式,公式起作用了。 如果我用“((int)((del-((int)del))* 100))”的當前值替換雙“ rads”中的“ dm”,則該公式將不再起作用。 它與“ / 60”有關。 我嘗試了不同的括號情況,但似乎不起作用。 我已經在公式的其他部分替換了“ dm”,它仍然可以工作,僅在那個位置。 有任何想法嗎?

您的代碼很難閱讀。 那就是你掙扎的原因的一部分。

我會這樣寫:

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);
    }
}

假設您有dms度,分鍾和秒。 鑒於

60 minutes = 1 degree
60 seconds = 1 minute

我們得到dms表示的度數總數是

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM