Движение круга по эллипсу - PascalABC.NET
Формулировка задачи:
Всем привет. Нужно нарисовать движение планеты по эллипсу вокруг солнца. Подскажите пожалуйста формулу движения по эллипсу. Я вот придумал такое:
Но что подставить на места '?', a и b не знаю, что бы я не подставил, не могу угадать так, что бы было под форму, даже рядом.
Уравнение эллипса x^2/a + y^2/b = 1 тут подойдет же?
Решение задачи: «Движение круга по эллипсу»
textual
Листинг программы
program bublik;
uses
graphABC;
var
x, y,n,i: integer;
k:real;
K1, B: Array[1..901] of Integer;
C: Array[1..901] of Color;
begin
Window.SetSize(640, 640);
k := 1;
LockDrawing;
for i := 1 to 900 do
begin
K1[i] := random(0,640);
B[i] := random(0,640);
C[i] := rgb(random(255), random(255), random(255));
end;
for n:=1 to 10 do begin
i := 1;
while k < 360 do
begin
clearwindow(clblack);
for i:=1 to 900 do
putpixel(K1[i], B[i], C[i]);
X := 300 + round(Sin(K) * 250 + 50); {ширина эллипса}
Y := 300 + round(Cos(K) * 100 + 40);
setbrushcolor(clSkyBlue);
circle(x, y, 15);
k := k + 0.009;
setbrushcolor(clYellow);
circle(300,300, 30);
Redraw;
end;
end;
end.
Объяснение кода листинга программы
Список действий в коде:
- Установка размера окна 640x640 пикселей.
- Задаётся значение переменной k равное 1.
- Задаются массивы K1, B, C размером 901 элемент.
- Заполняются массивы K1, B, C случайными значениями от 0 до 640 и случайными цветами.
- В цикле от 1 до 10 выполняется следующая последовательность действий: а) Задаётся значение переменной i равное 1. б) В цикле от 0 до 359 выполняется следующая последовательность действий: а) Очищается окно. б) По каждой ячейке массива K1, B, C рисуется точка соответствующего цвета. в) Рассчитываются координаты x, y для рисования эллипса. г) Задаётся цвет жёлтого цвета для кисти. д) Рисуется эллипс с центром в точке (300,300) и шириной равной 15. е) Увеличивается значение переменной k на 0.009. ж) Рисуется эллипс с центром в точке (300,300) и шириной равной 30. з) Задаётся цвет синего цвета для кисти. и) Происходит перерисовка окна.
- Цикл от 1 до 10 повторяется 10 раз.