Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];

Вниз

Движение точки по окружности   Найти похожие ветки 

 
SadDragon ©   (2008-05-13 04:49) [0]

Уважаемые Мастера! Помогите плз разобраться с задачкой.
Условие: Изобразить на экране точку, которая движется по окружно-сти с постоянной угловой скоростью. Эту угловую скорость можно задавать.
Решение (не могу понять почему не работает):

procedure TForm1.Button1Click(Sender: TObject);
var a, //угол в рад..
   s, //скорость передвижения точки в рад.
   r: double; //радиус
   x0, y0, //центр окр.
   x, y: integer; //текущие координаты точки
begin
  a:=90;
 s:=30;
 x0:=133;
 y0:=133;
 x:=133;
 y:=31;
 r:=30;
 Image1.Canvas.Pixels[x,y]:=clRed;
 a:=a*(pi/180) + s*(pi/180);
 x:=x0 + Round(Cos(a)*r);
 y:=y0 - Round(Sin(a)*r);
 Image1.Canvas.Pixels[x,y]:=clBlack;
 Timer1.Enabled:=true;
end;


Заранее спасибо!


 
Slym ©   (2008-05-13 05:21) [1]

при нажатии Button1Click рисует 1 точку? все правильно :)
телепатор подсказывает что есть Timer1OnTimer... если это так то x, y: integer;//текущие координаты точки в ней другие :) и там рисуется другая точка...
Решение вынеси переменные из Button1Click


 
Рамиль ©   (2008-05-13 09:11) [2]


> var a, //угол в рад..
>    s, //скорость передвижения точки в рад.
>    r: double; //радиус
>    x0, y0, //центр окр.
>    x, y: integer; //текущие координаты точки

Странный алгоритм какой то.
Если a и s в радианах, то на кой умножать их на пи/180?
Если в комментариях ошибка, то даже 30 градусов это очень много - 12 точек всего лишь, какя тут окружность, это многоугольник.
Скорость измеряется в чем-то/на время. То бишь 30 это должно быть 30 градусов/секунда?

Тогда ставишь таймер на время 50, и каждый раз увеличиваешь угол на 30/20 = 1.5 градуса.


 
Рамиль ©   (2008-05-13 09:12) [3]

Это в дополнение к
> Slym ©   (13.05.08 05:21) [1]


 
SadDragon ©   (2008-05-14 05:14) [4]

Ок, спасибо за советы! =)
Буду пробовать...



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.042 c
2-1210936640
hahol_64_rus
2008-05-16 15:17
2008.06.08
как возвести в степень


4-1190366220
Stup_ID
2007-09-21 13:17
2008.06.08
ListView (Report) - перевести в режим редактирования


2-1210623772
rena
2008-05-13 00:22
2008.06.08
Расстановки ладей на шахматной доске


15-1209060669
wl
2008-04-24 22:11
2008.06.08
программа для переключения раскладки по Ctrl+Shift "И" Alt+Shift


2-1210771513
AlexeyMir
2008-05-14 17:25
2008.06.08
Как получить значение по его имени





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский