[英]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.