Вниз  Алгоритмизация
- 13.01.2015 / 18:43
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
В общем, сутки можно представить в виде круга (как часы, только не 12, а 24 часа на весь оборот). Относительно полудня полночь всегда лежит в противоположной стороне. При этом время в расчёт можно не брать, оно может быть отклонено в различном направлении (показано пунктиром).
   Так вот, получается симметрия, поэтому можно от половины круга избавиться и получить полукруг (рисунок справа).
Если текущее время, находится в голубом секторе, значит считаем от рассвета/заката к полудню. Если в синем - от рассвета/заката к полуночи.
Проблема лишь в том, чтобы найти формулу, по которой текущее время можно представить на этом полукруге. Чтобы взять время полудня (например 11:55 и 12:05) и чётко получить полночь (00:05 и 23:55).
__________________
 let live

Изменено aNNiMON (13.01 / 18:46) (всего 2 раза)


Прикрепленные файлы:
rect3821.png (25.4 кб.) Скачано 118 раз
- 13.01.2015 / 18:58
Magatino
  Администратор

Magatino 
Сейчас: Offline
aNNiMON, Почему у тебя меняется Заход и Восход, а Долгота дня не меняется?Или меняется? :dum:
- 13.01.2015 / 19:01
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Magatino, она в расчётах не участвует.
__________________
 let live
- 13.01.2015 / 19:50
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
aNNiMON, так ты уже решение нашел? или еще нужна помощь
- 13.01.2015 / 20:21
Magatino
  Администратор

Magatino 
Сейчас: Offline
Цитата aNNiMON:
Magatino, она в расчётах не участвует.
Тогда смысл делать Восход и Заход разными, если Долгота Дня равномерна, то и Восход и Заход не меняются :gg:
- 13.01.2015 / 23:21
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
aNNiMON, обратись к разрабам Z Launcher'a, они такое уже замутили :gg:

А почему полночь именно в 23:55 должна быть? Это же полночь, с 00:00, полдень с 12:00
__________________
 わからない!!
- 13.01.2015 / 23:40
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
aNNiMON, я тебя правильно понял, отклонения полночи и полдня от 00:00 и 12:00 , соответсвенно, равны? Ну тогда это упрощает задачу
- 14.01.2015 / 00:19
vl@volk
  Пользователь

vl@volk 
Сейчас: Offline
в=3ч з=18ч
ан=((з+(в+24-з)/2)>24:ан-=24
ад=(в+(з-в)/2)>24:ад-=24
тв==ан:к=0
ан<тв<=ад:к++
ан>тв||ад<тв:к--
__________________
 знает толк
- 14.01.2015 / 00:21
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
aNNiMON, если у нас нет идеальных параметров, тогда надо привести к ним. Это и есть решение задачи, вот код, вроде пашет. mid - отклонение от 12:00 полдня, может быть отрицательным/положительным (11:30/12:30) , пашет если отклонения для полдня и полночи равны, что для тебя подходит.
  1. var mid=-10;//полдень - 11:50, полночь - 23:50
  2.     var time=1;
  3.     var vtime=time;
  4.     var coef;
  5.     if(mid>0) {
  6.       if(time>=0 && time<=mid) vtime=1440-(mid-time);
  7.       else vtime=time-mid;
  8.     } else {
  9.       if(time>=(1440+mid)) vtime=time-(1440+mid);
  10.       else vtime=time-mid;
  11.     }
  12.     if (vtime <= 720) {
  13.       coef = vtime / 720;
  14.     } else {
  15.       coef = 1 - (vtime - 720) / 720;
  16.     }

- 14.01.2015 / 00:22
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Сделал так, как и планировал - перевёл время в радианы и уже от этого плясал.
Вот что получилось: http://jsfiddle.net/aNNiMON/b84h8uxu/

Переводим
  1. function timeToRadians(time) {
  2.     return time * Math.PI * 2 / 1440;
  3. }
  4. function radiansToTime(radians) {
  5.     return radians * 1440 / (Math.PI * 2);
  6. }
Затем приводим всё к началу координат (полночь - 0, полдень - 1 (180 градусов)).
Ну а дальше работаем с полукругом, зеркально отображая те линии, которые превышают 180 градусов:
  1. if (startAngle > Math.PI)
  2.         startAngle = Math.abs(startAngle - 2*Math.PI);

Цитата ВитаминКО:
А почему полночь именно в 23:55 должна быть? Это же полночь, с 00:00, полдень с 12:00
Ты это в Питере спроси :gg:

Ребят, всем спасибо за помощь ;-)
__________________
 let live

Изменено aNNiMON (14.01 / 00:26) (всего 2 раза)
Наверх  Всего сообщений: 127
Фильтровать сообщения
Поиск по теме
Файлы топика (2)