Member
Статус: Не в сети Регистрация: 02.01.2004 Откуда: Оренбург
В общем, достался мне проект "Часы со стрелками". Корпус уже написан, но не знаю, как заставить нормально двигаться стрелку, то есть, чтобы она описывала своим концом окружность. У меня уже получался ромбик и даже прямоугольничек, но заветной окружности не виидать, как своих ушей:(
Помогите мне, я вас очень прошу. Хотя бы идейку подкиньте. Ну или совсем уже готовый фрагмент. Пожалуста, побыстрее, а то в четверг уже сдавать. Мне бы понять, как стрелки двигать, а дальше легко...
Member
Статус: Не в сети Регистрация: 02.01.2004 Откуда: Оренбург
Мое мыло? artemon@rbcmail.ru SirGun слушай, может у тебя литература какая-нить осталась, где описывается, как это делать. А то нужно очень срочно.
Добавлено спустя 5 минут, 53 секунды: Слушайте, а чего две темы создалось. Я вроде Отправить тыкал один раз... А можно из как-нибудь две в одну.. Или еще как..[/i][/b]
Продавец
Статус: Не в сети Регистрация: 21.10.2003 Откуда: Москва
Стрелка в графическом режиме двигается да? Ну а в чем тогда проблема, рисуй линию одной длинны, один конец всегда в одном месте а для второго тебе надо 60 координат, я бы их сначало на листочке прикинул, после чего глядишь и формула в голову придет!
Member
Статус: Не в сети Регистрация: 31.01.2004 Откуда: Москва
Artemon литературы нету, тебе нужно лишь пересчитывать координаты верхней точки прямой,
центральная точка зафиксирована.
ежели вечером дома найду, обязательно перешлю
есть кстати и электронные часы в паскале, так что ежели что ...
_________________ Ломать не строить, это уметь надо!
Member
Статус: Не в сети Регистрация: 02.01.2004 Откуда: Оренбург
SirGun Заранее спасибо. Понятно что пересчитывать надо, но в цикле это сделать не получается. Вот ты просто попробуй, если у тебя есть ТР, нарисовать линию и изменять у нее X и Y, а центр оставлять не изменным, как ты и говоришь. Также пробовал изменять просто Х, но тогда стрелка уезжает за пределы самих часов. Кстати, электронные часы делает мой друг, и они на мой взгляд намного проще в написании
Member
Статус: Не в сети Регистрация: 02.01.2004 Откуда: Оренбург
Одинаковой длины их не получится сделать, так как и Х и Y увеличиваются, поэтому они будут неуклонно расти, значит нужно в цикле проверять еще какое-то условие, но пока не могу догнать, какое...
Member
Статус: Не в сети Регистрация: 25.11.2003 Откуда: Earth
Рональдо Мама дорогая:
Цитата:
Стрелка в графическом режиме двигается да? Ну а в чем тогда проблема, рисуй линию одной длинны, один конец всегда в одном месте а для второго тебе надо 60 координат, я бы их сначало на листочке прикинул, после чего глядишь и формула в голову придет!
Синус и косинус ещё не отменяли.
Стрелка - линия между точкой, чьи координаты= константа и точкой летающей по кругу - с координатой= константа+(время* косинус/синус(для х/у соответственно)*длина стрелки).
Member
Статус: Не в сети Регистрация: 13.04.2004 Откуда: Москва
Artemon Ты что такое sin знаешь? Тогда : есть угол f, каждую сек увеличивается на 6 градусов=pi/30
радиан, если у стрелки длина L, а начало в (0,0), то ее так сказать конец:
X = L*cos(f);
Y = L*sin(f);
Member
Статус: Не в сети Регистрация: 20.01.2003 Откуда: Киев
Evgeny-114 Опередил ты меня.
Artemon Объясняю проще: Центр неподвижная точка с координатами (x1,y1) вторая точка считается по формуле
y=acos(k)
x=asin(k)
y,x - координатыб а - радиус окружности.
х должен менятся от -а до а
вот пример функции на сях.
void CALLBACK ProcLeft(void){
_a-= PI/100;
x=(int)(_r*cos(_a)*cos(_b) + 50);
y=(int)(_r*sin(_a)*cos(_b) + 50);
z=(int)(_r*sin(_b) + 50);
display();
}
Последний раз редактировалось void 18.04.2004 15:42, всего редактировалось 1 раз.
Member
Статус: Не в сети Регистрация: 25.11.2003 Откуда: Earth
У меня паскаля нет. И не помню я его. А формулу я тебе и так уже дал... (только, смотрю, неправильную ... но понять можно...)
Попробую..
Секундная:
Начинаем Цикл от i=1 до i=60
координата X1 точки конца стрелки = координата Х центра + sin(i)*длина стрелки.
координата Y1 точки конца стрелки = координата Y центра + cos(i)*длина стрелки.
Рисуем линию от центра(X,Y) до конца(X1,Y1)
Что бы стереть предыдущее положение сделай, например так:
координата X2 точки конца стрелки = координата Х центра + sin(i-1)*длина стрелки.
координата Y2 точки конца стрелки = координата Y центра + cos(i-1)*длина стрелки.
Рисуем линию цветом фона(чёрный)от центра(X,Y) до конца(X2,Y2)
Delay(1000); {пауза 1000мсек}
Конец цикла.
Конечно криво, но для того что бы понять - пойдёт... там сам разберёшься и подправишь- просто времени нет сообразить сейчас и меня отвлекают...
Часовую и минутную сделаешь по аналогии.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения