@bach1

Kак узнать сколько времени понадобится чтобы часовые стрелки пересекали друг друга?

Kак узнать сколько времени понадобится чтобы часовые стрелки пересекали друг друга через функцию в котором передается точка отсчета часов.
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
john36allTa
@john36allTa
alien glow of a dirty mind
function fun(hh,mm,ss=0){
	// если часы даны в формате 24 часов,
	// приводим к формату 12
	hh = hh % 12;
	// на сколько градусов относительно 
	// нуля отклонены стрелки?
	const dm = ( ss / 60 + mm ) * 6,
			dh = hh * 30 + dm / 12
	// dh и dm будет расстоянием, пройденное стрелками
	// прибавим к dh 360 градусов если dh < dm
	//  Затем найдем оставшееся расстояние:
	const r = dh - dm + (dh > dm ? 0 : 360),
	// и скорость сближения в минуту:
			s = 6 - 0.5
	// скорость минутной стрелки 6 градусов
	// часовой - 0.5°/минуту
	// возвращаем оставшееся время
	return r / s
}

const estimateTime = fun(13,50,15),
	m = Math.floor(estimateTime),
	s = Math.round((estimateTime - m) * 60)
console.log(`Стрелки сойдутся через через ${m} мин. и ${s} сек.`)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
Руководитель frontend направления, предприниматель
Вопрос, конечно, интересный, если бы ты его правильно сформулировал. Хотя я вроде и понял, что ты хочешь. Получить пересечение минутной и часовой стрелки, может и секундной. Первое, что приходит в голову — считать считать по заведомо известному соотношению движения по окружности стрелок до их совпадения. Таким образом ты получишь размер пути минутной стрелки, чтобы она догнала часовую. То же самое с секундной.

К слову, я глянул в гугол и надо же, алгоритм легко гуглится, если правильно задать вопрос.
Ответ написан
@abberati
frontend-разработчик
Всё сводится к простой алгоритмической задаче: нужно перевести время в градусы (в часе и минутах по 60 частей, 360/60 = 6) и гнать цикл от текущего значения времени до первого пересечения «стрелок», сравнивая модуль от деления на 360 Решение тривиально, нужно знать, как работать с переменными, операциями над числами и уметь писать циклы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы