Ваш minuteRotation
переменная представляет собой ANGLE, через который вам нужно повернуть холст в orde r, чтобы нарисовать минутную стрелку в правильном положении. В соответствии с API Android этот угол должен быть указан в Radians (не в градусах), поэтому используется значение «Math.PI».
PI радианы представляют собой ПОЛОВИНУ ПОЛНОГО ВРАЩЕНИЯ, то есть 180 градусов - половину круга. Он используется (в выражении, которое вы описали) просто как ФАКТОР СКОРОСТИ. Альтернативой (и яснее,) способ записи того же уравнения будет:
minuteRotation = (time.minute/ 60.0f) * (float) Math.PI * 2.0f
Этот альтернативный вариант делает яснее смысл различных чисел:
- «60,0» представляет собой число с плавающей точкой, который представляет собой максимальное количество минут возможных (в полном обороте)
- «Math.PI * 2» радианах угловой эквивалент полного круга вращения (то есть 360 градусов)
фракции «time.minute/60,0», следовательно, представляет собой долю полного часа, который в настоящее время используется. Умножая это на выражение PI * 2, тогда выдается эквивалентная часть полного круга, выраженная как ANGLE (в Radians).
Это основной вопрос геометрии. Я предлагаю вам прочитать представление углов сегментов по кругу и длину дуги, представленную градусами, минутами и секундами. Главное, что вы не должны путать минуты и секунды в геометрии с используемыми во времени и, в частности, представлением на аналоговом часовом/часовом лице. Несмотря на то, что существует корреляция, круг в геометрии не обязательно представляет собой часовое/часовое лицо, но понятие минут и секунд по мере того, как деления степени все еще применяются. – Squonk
См. Эту статью ... http://en.wikipedia.org/wiki/Degree_(angle) – Squonk
Вы можете посмотреть код для моих «часов xkcd» здесь: https://github.com/jselbie/xkcdclock – selbie