![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Проиллюстрируйте законы Кеплера, согласно которым планеты движутся по эллипсам, в одном из фокусов которого находиться солнце. Параметрические уравнения траектории движения по эллипсу имеют вид:
x = r1cos(t) y = r2sin(t) где t принимает значения от [0;2π] |
#2
|
|||
|
|||
![]() И в чем проблема? Берем TPaintBox и рисуем на нем. Угол (t) меняем по таймеру. Кстати, можно не рисовать, а просто загрузить несколько картинок и просто выводить их копированием (для быстроты и красоты).
|
#3
|
|||
|
|||
![]() Программу желательно написать с использованием графических примитивов
|
#4
|
|||
|
|||
![]() Очень прошу помогите
|
#5
|
||||
|
||||
![]() Здесь всегда срашивают, как минимум, ваше собственное видение решения данной задачи, а потом помогают в успешной его реализации
![]() |
#6
|
||||
|
||||
![]() Ну, если не знаешь, как делать, могу подсказать.
![]() Все по-простому, можно доделать - мой вариант: P.S Да, пока не забыл: в строке Код:
dy:=cy+round(r2*sin(t)+r2); ![]() Последний раз редактировалось YVitaliy, 28.03.2012 в 22:56. |
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение: | ||
ksu04061992 (28.03.2012)
|
#7
|
|||
|
|||
![]() У меня получилось, но как сделать так что бы планета не оставляла следов при передвижении?
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Draw; procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; type Planeta=record x,y,d,d2,r1,r2:integer; t:real; end; var Form1: TForm1; s,z,m,v:planeta; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Enabled:= false; s.d:= 50; s.d2:=s.d div 2; s.x:= Image1.Width div 2; s.y:= Image1.Height div 2; m.d:= 10; m.d2:= m.d div 2; m.r1:=100; m.r2:=60; m.t:=0; m.x:=m.r1*trunc(cos(m.t)); m.y:=m.r2*trunc(sin(m.t)); end; procedure tform1.Draw; begin image1.Canvas.Ellipse (s.x-m.r1,s.y-m.r2,s.x+m.r1,s.y+m.r2) ; image1.Canvas.Ellipse(s.x-s.d2,s.y-s.d2,s.x+s.d2,s.y+s.d2); image1.Canvas.Ellipse(m.x-m.d2,m.y-m.d2,m.x+m.d2,m.y+m.d2); end; procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:= true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin m.t:=m.t+0.06; //if m.t>2*pi then m.t:=0; m.x:=s.x+round(m.r1*cos(m.t)); m.y:=s.y-s.r2-round(m.r2*sin(m.t)); draw; end; end. lmikle: Пользуемся тегами!!! http://rghost.ru/37302439 Последний раз редактировалось lmikle, 30.03.2012 в 00:05. |
#8
|
|||
|
|||
![]() Вот сама программа
|
#9
|
||||
|
||||
![]() Добавь строчку:
Код:
procedure tform1.Draw; begin image1.Canvas.FillRect(image1.ClientRect); image1.Canvas.Ellipse (s.x-m.r1,s.y-m.r2,s.x+m.r1,s.y+m.r2) ; image1.Canvas.Ellipse(s.x-s.d2,s.y-s.d2,s.x+s.d2,s.y+s.d2); image1.Canvas.Ellipse(m.x-m.d2,m.y-m.d2,m.x+m.d2,m.y+m.d2); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
||||
|
||||
![]() Здесь я не вижу ни строчки
![]() |
#11
|
||||
|
||||
![]() Видно разобраться в твоём примере сил не хватило
![]() Хотя и в твоём примере имеется недостаток: Код:
Buff.Width:=Image1.Width; Buff.Height:=Image1.Height; cx:= Buff.Width div 2;// Центр экрана cy:= Buff.Height div 2;// Центр экрана Хотя, если форма с изменяемым размером... Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 29.03.2012 в 23:26. |
#12
|
||||
|
||||
![]() Ну, на случай изменения размеров
![]() Цитата:
![]() |
#13
|
|||
|
|||
![]() YVitaliy, не спорю у вас хороший пример, он мне очень помог спасибо, просто преподаватель предпочитает такой стиль программирования, что бы там записи были и тп.
|
#14
|
||||
|
||||
![]() Стиль программирования у тебя должен быть свой.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#15
|
|||
|
|||
![]() Привет, мне нужна программа срочно, которая будет доказывать второй закон Кеплера
|