Установка значений с определенной скоростью
скачал исходник, разобрался, но не могу понять эту строчку:
Код:
float b = float(GetTickCount()%0xffff)/0xffff * 3.141593 * 80
вернее я понял, что она не дает вращаться кубу быстрее (в зависимости от машины)
тот код который я вам предоставил (выше та строчка) размещен в цикле (b - угол вращения), то есть поэтому и используется GetTickCount, чтобы на всех машинах с разными харак-ми куб вращался с одной и той же скоростью
но объясните мне кроме GetTickCount() другое, зачем получать остаток от FFFF ??? зачем умножать на PI и на 80?
[/FONT]GetTickCount() возвращает число миллисекунд с момента запуска системы.[FONT=monospace]
[/FONT]GetTickCount()%0xffff - возвращает число в диапозоне от 0 до 0хffff (0..65535)[FONT=monospace]
[/FONT]GetTickCount()%0xffff/0xffff - возвращает число в диапозоне от 0 до 1
Если бы не было числа 80, то за одну секунду куб повернется на 0.027 градусов, т.е. пол оборота совершит за ~109 минут, а полный за 2*109 минут! И ускоряют этот процесс путем увеличения угла в 80 раз, т.е. 0.027*80=2.16, т.е. теперь за одну секунду куб повернется на 2.16 градуса, а полный оборот за 2.8 минуты. И это всё потому, что угол есть функция времени, и не зависит от количества тактов процессора и др. характеристик машины.
P.S. Может быть всё это не так, как я это себе представил, но в шесть утра голова уже совсем не "варит".
а зачем умножать на пи?
я понял, что благодаря функции gettickcount куб повернется на всех машинах одинаково, но я не понял как вы высчитали 0.027 градусов?
float(GetTickCount()%0xffff)/0xffff принимает значения от 0 до 1. Причем для того, чтобы стать равным 1, должно пройти 0хffff милисекунд, т.е. чуть больше минуты. Это и будет время одного оборота без домножения на 80. Соответсвенно, умножив на 80, достигают скорости ~1.5 оборота в секунду.
Угол измеряется в радианах и должен меняться от 0 до Пи, поэтому на Пи и домножается.
NSDaler, в первом моем посте с расчетами вышла ошибочка по выше указанной причине. gaga верно рассуждает, за что ему поставлю +1 :)
да я тоже сам разобрался, но только с пи не разобрался, поэтому спасибо!!! =)