Как сделать движение по кругу?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Как сделать движение по кругу?

Сообщение Alina » 14.04.2015 08:02:33

Как сделать движение по кругу в Lazarus?
Alina
незнакомец
 
Сообщения: 2
Зарегистрирован: 14.04.2015 07:09:26

Re: Как сделать движение по кругу?

Сообщение Снег Север » 14.04.2015 08:14:02

Движение по кругу - это изменение координат некоторой точки во времени по закону:
Код: Выделить всё
x := x0 + r*cos(t);
y := y0 + r*sin(t);

где x0,y0 - координаты центра окружности, r - радиус окружности, t - время
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3053
Зарегистрирован: 27.11.2007 16:14:47

Re: Как сделать движение по кругу?

Сообщение SSerge » 15.04.2015 04:38:30

Снег Север писал(а):t - время


Ага, время )) Угол поворота в радианах это
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Как сделать движение по кругу?

Сообщение скалогрыз » 15.04.2015 05:35:12

сделать движение по кругу так же просто как и модель солнечно системы!

Но самое главное это начать с таймера!
Снег Северу и SSerge спасибо за подсказки!

проект в .zip файле
У вас нет необходимых прав для просмотра вложений в этом сообщении.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Как сделать движение по кругу?

Сообщение zub » 15.04.2015 10:49:19

скалогрыз
TTimer не очень подходит на роль космического таймера, надо либо менять на чтото более точное, либо вносить в программу изменения
Думаю со следующими изменениями модель получится гораздо точнее
Код: Выделить всё
--- unit1.pas
+++ unit1.pas
@@ -27,6 +27,7 @@ type

var
   Form1: TForm1;
+  l:Integer=100;

implementation

@@ -39,8 +40,17 @@ var
   x, y : single;
begin
   a:=a+pi/45;
-  x:=cos(a)*100;
-  y:=sin(a)*100;
+  x:=cos(a)*l;
+  y:=sin(a)*l;
+  if l>Shape2.Width div 2 then
+                              dec(l)
+                          else
+                              begin
+                                Shape2.Width:=Shape2.Width+10;
+                                Shape2.Left:=Shape2.Left-5;
+                                Shape2.Height:=Shape2.Height+10;
+                                Shape2.Top:=Shape2.Top-5;
+                              end;
   Shape1.Left := round(x) + (Shape2.Left+Shape2.Width div 2)-Shape1.Width div 2;
   Shape1.Top  := round(y) + (Shape2.Top+Shape2.Height div 2)-Shape1.Height div 2;
end;

По уточненным данным нибиру неизбежно падает на солнце и оно взрывается((
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как сделать движение по кругу?

Сообщение pupsik » 15.04.2015 17:36:24

zub
:)))

п.с.
коли уж про планеты... Неужто они по кругу летают? :)
Да и модель чет странная. Ну..у я понимаю уЧенные порезали кол-во планет... но..о не на столько...
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Как сделать движение по кругу?

Сообщение alexs » 15.04.2015 17:41:25

А разве на таком масштабе будет виден реальная орбита?
А если масштаб верный - то это уже двойная звезда (Жёлтый Супер-Гигант и Синий Карлик) :D
И вообще - уже вечер и пятница не за горами :lol:
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 233

Рейтинг@Mail.ru