将弧度转换为度,分和秒

时间:2012-04-28 04:20:31

标签: c trigonometry

我正在寻找一种将小数转换为C中的度数的方法。例如,C中的asin()函数返回一个十进制数,但我需要该数字以度为单位'秒'。

e.g。 1.5将是1°30'0“

2 个答案:

答案 0 :(得分:4)

asin函数返回弧度。圆圈中有2π弧度。

圆圈有360度,度数有60分钟,一分钟有60秒。所以一圈有360 * 60 * 60秒。

double radians = asin(opposite / hypotenuse);
int totalSeconds = (int)round(radians * 360 * 60 * 60 / (2 * M_PI));
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int degrees = totalSeconds / (60 * 60);

答案 1 :(得分:1)

不知道如何使用ti84上的> dms之类的命令执行此操作,但您可以使用逻辑。

  1. 整个学位单位将保持不变(即121.135° 经度,从121°开始)。
  2. 将小数乘以60(即.135 * 60 = 8.1)。

  3. 整数变为分钟(8')。

  4. 取剩余的小数并乘以60.(即.1 * 60 = 6)。

  5. 结果数字变为秒数(6“)。秒数可以保持为a 小数。
  6. 使用你的三组数字并将它们组合在一起 度(°),分钟(')和秒(“)的符号(即 121°8'6“经度) 资源: http://geography.about.com/library/howto/htdegrees.htm
  7. 一点点搜索,我在c#中找到了这个: Converting from Decimal degrees to Degrees Minutes Seconds tenths.

    double decimal_degrees; 
    
    // set decimal_degrees value here
    
    double minutes = (decimal_degrees - Math.Floor(decimal_degrees)) * 60.0; 
    double seconds = (minutes - Math.Floor(minutes)) * 60.0;
    double tenths = (seconds - Math.Floor(seconds)) * 10.0;
    // get rid of fractional part
    minutes = Math.Floor(minutes);
    seconds = Math.Floor(seconds);
    tenths = Math.Floor(tenths);
    

    但正如他所说,它需要首先从弧度到度数。