История изменений
Исправление imul, (текущая версия) :
для программиста это не проблема, скорее даже наоборот удобство при вычислении разницы
Вот кусок кода, рассчитывающий моменты восхода и заката Солнца для конкретной широты и долготы с учётом летнего/зимнего времени:
double shirota = wd->state.set.system.latitude / 57.2958;
double delta = -asin(0.39799 * cos(0.98565 * 0.0174533 * ((double) local->tm_yday + 10.0) + 1.914 * 0.0174533 * sin(0.98565 * 0.0174533 * ((double) local->tm_yday - 2.0))));
double omega = acos((-sin(0.0289724656) - sin(shirota) * sin(delta))/(cos(shirota) * cos(delta)));
double shift = wd->state.set.system.longitude / (360.0 / 24.0) + (double) timezone / 3600.0;
if (local->tm_isdst > 0) shift += local->tm_isdst;
double sunrise = 12 - shift - omega * 57.2958 / (360 / 24);
double sunset = 12 - shift + omega * 57.2958 / (360 / 24);
Переходы и таймзону можно из рассчётов убрать, но это не сильно упростит процесс.
Думаешь программисту проще вот это всё считать, чем глянуть на часы и прибавить разницу между поясами?
Исходная версия imul, :
для программиста это не проблема, скорее даже наоборот удобство при вычислении разницы
Вот кусок кода, рассчитывающий моменты восхода и заката Солнца для конкретной широты и долготы с учётом летнего/зимнего времени:
double shirota = wd->state.set.system.latitude / 57.2958;
double delta = -asin(0.39799 * cos(0.98565 * 0.0174533 * ((double) local->tm_yday + 10.0) + 1.914 * 0.0174533 * sin(0.98565 * 0.0174533 * ((double) local->tm_yday - 2.0))));
double omega = acos((-sin(0.0289724656) - sin(shirota) * sin(delta))/(cos(shirota) * cos(delta)));
double shift = wd->state.set.system.longitude / (360.0 / 24.0) + (double) timezone / 3600.0;
if (local->tm_isdst > 0) shift += local->tm_isdst;
double sunrise = 12 - shift - omega * 57.2958 / (360 / 24);
double sunset = 12 - shift + omega * 57.2958 / (360 / 24);
Переходы можно из рассчётов убрать, но это не сильно упростит.
Думаешь программисту проще вот это всё считать, чем глянуть на часы и прибавить разницу между поясами?