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мсек}
Конец цикла.
Конечно криво, но для того что бы понять - пойдёт... там сам разберёшься и подправишь- просто времени нет сообразить сейчас и меня отвлекают...
Часовую и минутную сделаешь по аналогии.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения