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

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

простая задачка на геометрию


nonamez11 ©   (2008-12-22 16:16:00) 

блин тупорылый вопрос но не знаю чо делать(((
надо чтоб по форме летал кружок,и летал по окружности(
я накидал код а он работает не правильно,двигается по окружности но с большими перерывами не плавно((
не знаю в чем проблема.
может кто подскажет?очень надо

procedure TForm7.Timer1Timer(Sender: TObject);

begin
radius:=80;
a:=a+1;
if a>=360 then a:=0;
begin
if (x>0)and(y>=0) then
  begin
   x:=x+round(radius*cos(RadtoDeg(a)));
  y:=y+round(radius*sin(Radtodeg(a)));
  edit1.Text:=inttostr(x)+' '+inttostr(y)+' '+inttostr(a);
  edit2.Text:=floattostr(cos(a));
  end
 else
  begin
   x:=round(ClientWidth/2);
   y:=round(ClientHeight/2);
  end;
 x1:=x+25;
 y1:=y+25;

 Canvas.BrushCopy(MyRect, Bitm, MyRect, clBlack);
 Canvas.Ellipse(x-25,y-25,x1,y1);
 
 MyRect := Rect(x-25,y-25,x1,y1); //

end;
end;


nonamez11   (2008-12-22 16:58:00) [1]

Точна!)я был недалек от разгадки)))спасибо)))


Сергей М.   (2008-12-22 16:49:00) [2]

Ну очевидно же - если в А у тебя угол в градусах, то его следует преобразовать в радианы для вычисления синуса с косинусом)


nonamez11   (2008-12-22 16:44:00) [3]

и что же делать?


Сергей М.   (2008-12-22 16:38:00) [4]

Ну если убрать, тогда и число 360 тут ни к селу ни к городу


nonamez11   (2008-12-22 16:36:00) [5]

ну если убрать Radtodeg проблема остается скажем так


Сергей М.   (2008-12-22 16:34:00) [6]


> я чо то с калькулятором сравнивал


Я не знаю,  "чо" ты с "калькулятором сравнивал", но лажа с преобразованием налицо


Сергей М.   (2008-12-22 16:32:00) [7]


> Application.ProcessMessages
>


Ни к селу ни к городу оно тут - циклов-то в таймерном обработчике нет


Правильный$Вася   (2008-12-22 16:31:00) [8]

Application.ProcessMessages


nonamez11   (2008-12-22 16:31:00) [9]

да если изменить не моможет,эт я чо то с калькулятором сравнивал


Сергей М.   (2008-12-22 16:30:00) [10]


> cos(RadtoDeg(a))


> Sin(Radtodeg(a))


Эти триг.функции требуют параметром угол в радианах, а ты им в градусах пытаешься подсунуть, к тому же в то время как в переменной A у тебя хранится угол в градусах


Наверх

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