13.01.2015 / 15:09 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Dinisimys, не, так после полудня не считает совсем http://jsfiddle.net/aNNiMON/b84h8uxu/1/ __________________
let live |
13.01.2015 / 15:13 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| aNNiMON, блин, забыл var noon=760;
var midnight=40;
var time=40;
var vtime=time;
var coef;
if(time<=noon && time>midnight) {
coef=time/noon;
} else {
if(time>=0 && time<midnight) {
vtime=1440-(midnight-time);
coef=1 - (vtime - noon) / 720;
}
else if(time==midnight) coef=0;
else coef=1 - (vtime - noon) / 720;
}
|
13.01.2015 / 16:40 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| в 13 и 14 строке добавил условие, протестил, работает вроде все
Изменено Dinisimys (13.01 / 16:41) (всего 1 раз) |
13.01.2015 / 16:45 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Dinisimys, уже больше похоже на правду http://jsfiddle.net/aNNiMON/b84h8uxu/7/ но всё равно в 00:39 и 00:41 - 0.05, а в 00:40 сразу в 0 перескакивает. На 5 сотых шаг, хотя в полдень 12:39 и 12:41 - 0.998, то есть 2 сотых. Вангую, что и в 00;39 и 00:41 должно быть 0.002 __________________
let live Изменено aNNiMON (13.01 / 16:45) (всего 1 раз) |
13.01.2015 / 16:49 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| aNNiMON, это будет задавать проблемы? ну впринцыпе, глазом врятли различишь разницу в цветах с шагом 2 или 5 сотых)) Расчет коефициента я взял из твоего кода, но можно конечно и это исправить
|
13.01.2015 / 17:12 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| aNNiMON, ну вот оно решение: вроде теперь должно все правильно бить var noon=760;
var midnight=40;
var time=761;
var vtime=time;
var coef;
if(time<=noon && time>midnight) {
coef=(time-midnight)/720;
} else {
if(time>=0 && time<midnight) {
vtime=1440-(midnight-time);
coef=1 - (vtime - noon+midnight) / 720;
}
else if(time==midnight) coef=0;
else coef=1 - (vtime - noon) / 720;
}
|
13.01.2015 / 18:01 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| aNNiMON, http://jsfiddle.net/b84h8uxu/15/ совсем уже с ума посходили. Единственный минус — получилась линейная функция какая-то на [0, 1]. Если не ошибаюсь, то солнечный день всё же как-то более менее похож на синусоиду, то есть так: http://jsfiddle.net/b84h8uxu/14/// 0 <= coef <= 1.
coef = Math.sin(3.1415926 / 2 * coef);
Сначала темно-темно, затем достаточно внезапно светлеет, потом держится день, и снова также внезапно (но плавно) темнеет. Изменено Ксакеп (13.01 / 18:13) (всего 4 раза) |
13.01.2015 / 18:13 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Ксакеп, если полночь будет в 23:55, то твой вариант не верен.
Я в принципе придумал решение. Сама задача немого неправильно звучала - я отбросил время рассвета и заката, а надо было с ними плясать. Сейчас нарисую..
__________________
let live |
13.01.2015 / 18:17 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| aNNiMON, не суть. coef ставится под модуль, а midnight == -5. Забыл сказать, что контракт: midnight < noon.
Изменено Ксакеп (13.01 / 18:18) (всего 1 раз) |