2012-04-28 3 views
1

Я ищу способ преобразования десятичных знаков в градусы по С. Например, функция asin() в C возвращает десятичное число, но мне нужно, чтобы это число было в градусах ° минуты секунда».Преобразование радианов в градусы, минуты и секунды

например 1.5 будет 1 ° 30'0"

+0

Это вопрос C, а не вопрос Objective-C. Я отредактировал его соответствующим образом. –

ответ

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

Ему все равно нужно было бы преобразовать это в DMS , но хороший момент! – hawkfalcon

1

Не знаю, как сделать это с помощью одной команды, как> д.м.н. на ti84, но вы можете использовать логику.

  1. Целые единицы градусов останутся прежними (то есть в 121.135 °
    долготы, начните с 121 °).
  2. Умножить десятичное число на 60 (т. Е. .135 * 60 = 8.1).

  3. Все количество минут (8 ').

  4. Возьмите оставшуюся десятичную и умножьте на 60. (то есть .1 * 60 = 6).

  5. Полученное число становится секунд (6"). Секунды может оставаться как десятичной.
  6. Возьмите три набора чисел и поместить их вместе, используя символы для градусов (°), минуты (») и секунды (") (т.е. 121 ° 8'6" долгота) Источник: http://geography.about.com/library/howto/htdegrees.htm

немного поисков и я нашел это в 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); 

Но, как он сказал, его сначала необходимо преобразовать из радианов в градусы.

+0

Да, я просто нашел этот ответ на http://geography.about.com/library/howto/htdegrees.htm. Хороший ответ хотя :) – CoreCode

+0

Просто пытаюсь быть полезным :) – hawkfalcon

Смежные вопросы