Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

часы...


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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо