![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
часы...
sat © (2007-02-13 21:21:00)вопрос у меня следующего плана и скорее относится к математике:
мне надо написать прототип механических часов. должны двигаться секундная часовая и минутная стрелки.
я получаю сис время и секундная стрелка у меня двигается, но у меня при переходе в систему координат связанную с центром часов произошел двиг и теперь моя секундная стрелка сместилась на 1 четверть( т.е время 0 секунд-стрелка показывае 15, время 30 секунд - стрелка показывае 45)
координаты стрелки вычисляются так:
xs := rs*cos(s*Pi/30)+x0;
ys := rs*sin(s*Pi/30)+y0;
где rs - радиус стрелки, s - время в секундах, x0 , y0 - центр часов
помогите как решить проблемму сдвига?
TRUNK (2007-02-14 10:31:00) [1]cos(a-Pi/2) = sin(a)
sin(a-Pi/2) = -cos(a)
begin...end (2007-02-13 21:51:00) [2]> sat © (13.02.07 21:29) [3]
> причем правильно работает, пока не знаю почему...
Синус угла Alpha -- это ордината точки, полученной поворотом точки с координатами ( 1; 0 ) на угол Alpha. Когда s = 0, этот угол равен -Pi/2 (стрелка указывает вертикально вверх), а не 0, как это предполагается в Ваших исходных уравнениях. То же и с косинусом.
DrPass (2007-02-13 21:44:00) [3]
> тоже работает но это скорее заплатка нежели решение проблеммы
М-да :))))
Математика, третий или пятый класс
(s-15)*Pi/30.
Раскрываем скобки
s*Pi/30 - 15*Pi/30
Сокращаем
s*Pi/30 - Pi/2
Вот и твое "решение проблемы"
sat (2007-02-13 21:30:00) [4]с Pi/4 не так работает..
sat (2007-02-13 21:29:00) [5]классно
но у меня получилось сейчас лучше
xs := rs*cos(s*Pi/30-Pi/2)+x0;
ys := rs*sin(s*Pi/30-Pi/2)+y0;
причем правильно работает, пока не знаю почему...
> xs := rs*cos((s-15)*Pi/30)+x0;
> ys := rs*sin((s-15)*Pi/30)+y0;
тоже работает но это скорее заплатка нежели решение проблеммы
все равно спасибо
@!!ex (2007-02-13 21:28:00) [6]Ну отними от угла pi/4 и все встанет куда надо. нет? :)
DrPass (2007-02-13 21:26:00) [7]Не знаю, что за хрень ты сочинил, но я бы на твоем месте сделал так:
> xs := rs*cos((s-15)*Pi/30)+x0;
> ys := rs*sin((s-15)*Pi/30)+y0;