13.01.2015 / 18:43 |  | 
aNNiMON    Супервизор 
   Сейчас: Offline 
 Имя: Витёк Регистрация: 11.01.2010
   | В общем, сутки можно представить в виде круга (как часы, только не 12, а 24 часа на весь оборот). Относительно полудня полночь всегда лежит в противоположной стороне. При этом время в расчёт можно не брать, оно может быть отклонено в различном направлении (показано пунктиром).    Так вот, получается симметрия, поэтому можно от половины круга избавиться и получить полукруг (рисунок справа).  Если текущее время, находится в голубом секторе, значит считаем от рассвета/заката к полудню. Если в синем - от рассвета/заката к полуночи. Проблема лишь в том, чтобы найти формулу, по которой текущее время можно представить на этом полукруге. Чтобы взять время полудня (например 11:55 и 12:05) и чётко получить полночь (00:05 и 23:55).
  __________________
   let live  Изменено aNNiMON (13.01 / 18:46) (всего 2 раза)
 Прикрепленные файлы:   rect3821.png (25.4 кб.) Скачано 124 раза   | 
  13.01.2015 / 18:58 |  | 
Magatino    Администратор  
   Сейчас: Offline 
 Имя: Alexandr Откуда: Где Ленин родился. Simbirsk City Регистрация: 28.01.2011
   | aNNiMON,  Почему у тебя меняется Заход и Восход, а Долгота дня не меняется?Или меняется?    | 
  13.01.2015 / 19:01 |  | 
aNNiMON    Супервизор 
   Сейчас: Offline 
 Имя: Витёк Регистрация: 11.01.2010
   | Magatino, она в расчётах не участвует.
  __________________
   let live  | 
  13.01.2015 / 19:50 |  | 
Dinisimys    Пользователь  
   Сейчас: Offline 
 Имя: Денис Регистрация: 30.07.2012
   | aNNiMON, так ты уже решение нашел? или еще нужна помощь
   | 
  13.01.2015 / 20:21 |  | 
Magatino    Администратор  
   Сейчас: Offline 
 Имя: Alexandr Откуда: Где Ленин родился. Simbirsk City Регистрация: 28.01.2011
   | Цитата aNNiMON: Magatino, она в расчётах не участвует.Тогда смысл делать Восход и Заход разными, если Долгота Дня равномерна, то и Восход и Заход не меняются     | 
  13.01.2015 / 23:21 |  | 
ВитаминКО    Супермодератор  
   Сейчас: Offline 
 Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
   | aNNiMON, обратись к разрабам Z Launcher'a, они такое уже замутили   А почему полночь именно в 23:55 должна быть? Это же полночь, с 00:00, полдень с 12:00  __________________
   わからない!!  | 
  13.01.2015 / 23:40 |  | 
Dinisimys    Пользователь  
   Сейчас: Offline 
 Имя: Денис Регистрация: 30.07.2012
   | aNNiMON, я тебя правильно понял, отклонения полночи и полдня от 00:00 и 12:00 , соответсвенно, равны? Ну тогда это упрощает задачу
   | 
  14.01.2015 / 00:19 |  | 
vl@volk    Пользователь  
   Сейчас: Offline 
 Имя: Владислав Откуда: Земля Регистрация: 26.12.2012
   | в=3ч з=18ч ан=((з+(в+24-з)/2)>24:ан-=24 ад=(в+(з-в)/2)>24:ад-=24 тв==ан:к=0 ан<тв<=ад:к++ ан>тв||ад<тв:к--
  __________________
   знает толк  | 
  14.01.2015 / 00:21 |  | 
Dinisimys    Пользователь  
   Сейчас: Offline 
 Имя: Денис Регистрация: 30.07.2012
   | aNNiMON, если у нас нет идеальных параметров, тогда надо привести к ним. Это и есть решение задачи, вот код, вроде пашет. mid - отклонение от 12:00 полдня, может быть отрицательным/положительным (11:30/12:30) , пашет если отклонения для полдня и полночи равны, что для тебя подходит. var mid=-10;//полдень - 11:50, полночь - 23:50  
    var time=1;  
    var vtime=time;  
    var coef;  
    if(mid>0) {  
      if(time>=0 && time<=mid) vtime=1440-(mid-time);  
      else vtime=time-mid;  
    } else {  
      if(time>=(1440+mid)) vtime=time-(1440+mid);  
      else vtime=time-mid;  
    }  
    if (vtime <= 720) {  
      coef = vtime / 720;  
    } else {  
      coef = 1 - (vtime - 720) / 720;  
    }  
  | 
  14.01.2015 / 00:22 |  | 
aNNiMON    Супервизор 
   Сейчас: Offline 
 Имя: Витёк Регистрация: 11.01.2010
   | Сделал так, как и планировал - перевёл время в радианы и уже от этого плясал. Вот что получилось:  http://jsfiddle.net/aNNiMON/b84h8uxu/Переводим function timeToRadians(time) {  
    return time * Math.PI * 2 / 1440;  
}  
function radiansToTime(radians) {  
    return radians * 1440 / (Math.PI * 2);  
}  
 Затем приводим всё к началу координат (полночь - 0, полдень - 1 (180 градусов)). Ну а дальше работаем с полукругом, зеркально отображая те линии, которые превышают 180 градусов: if (startAngle > Math.PI)  
        startAngle = Math.abs(startAngle - 2*Math.PI);  
  Цитата ВитаминКО: А почему полночь именно в 23:55 должна быть? Это же полночь, с 00:00, полдень с 12:00Ты это в Питере спроси    Ребят, всем спасибо за помощь    __________________
   let live  Изменено aNNiMON (14.01 / 00:26) (всего 2 раза) |