Паскаль - Моделирование движения спутника!

sicaev
Сообщения: 5
Зарегистрирован: 09 июн 2008, 22:06

Добрый день! Помогите пожалуйста с курсовой...
На паскале написать программу "моделирование движения спутника"
Я без понятия именно той формулы, что описывает движение.............. :confused:
Developer
Сообщения: 9
Зарегистрирован: 27 май 2008, 21:44
Откуда: Spb
Контактная информация:

Хм - может простое движение по окружности подойдет?Если не окружность - то по эллипсу
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Да нет, тут тяготение и скорость учитывать надо.
Ищите в справочниках и учебниках по физике, быта там такая тема в 9-10 классе.
Ни что так не ограничивает фантазию программиста, как компилятор...
sicaev
Сообщения: 5
Зарегистрирован: 09 июн 2008, 22:06

Да вы что? какое тяготение?___))))) нееет)
Движение точки по окружности, вот и всё... прога реально простая, просто я не знаю формулу! она из синуса и косинуса состоит)
во многих справочниках и учебниках есть задача про аналоговые часы, может видели? тоже подобие...
sicaev
Сообщения: 5
Зарегистрирован: 09 июн 2008, 22:06

Developer, да) обычное движение по окружности?.... ты можешь это сделать? ^^
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Ну вот процедура рисования стрелок часов:
[syntax='Delphi']
procedure Vector(x0,y0,a, l: integer);
{х0,у0 — начало вектора
а — угол между осью х и вектором
l — длина вектора}
const
GRAD = 0.0174532; { коэффициент пересчета угла из градусов
в радианы}
var
zx,zy: integer; { координаты конца вектора}
begin
MoveTo(x0, y0) ;
zx := Round(x0 + l*cos(a*GRAD));
zy := Round(y0 - l*sin(a*GRAD));
LineTo(zx,zy);
end;
[/syntax]

только вот я физику учил, вроде как радиус орбиты зависит от скорости движения спутника, а если больше второй космической, так вообще с орбиты сорвется :) .
Хотя, если физическая достоверность не требуется...
Ни что так не ограничивает фантазию программиста, как компилятор...
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Нееее, если уж вы моделируете спутник, то на самом деле его движение зависит от закона всемирного тяготения. Орбитальная скорость вместе с законом всемирного тяготения создают некий баланс, его траекторию движения, которая в общем случае есть эллипс. Я уже кажется писал о своем эмуляторе движения простейших частих и что из этого получалось. Всего один закон физики - а сколько разнообразных траекторий движения выходит.
It's a long way to the top if you wanna rock'n'roll
sicaev
Сообщения: 5
Зарегистрирован: 09 июн 2008, 22:06

если по физике , то да! естественно зависит от тяготения, НО мне просто тупо нужна точка. которая летает по кругу.....
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Ну так я привел код.
Там рисуются стрелки, но можно рисовать только точку с координатами (ZX,ZY).
Просто нужно менять угол циклически от 0 до 360 и вызывать процедуру.
Ни что так не ограничивает фантазию программиста, как компилятор...
sicaev
Сообщения: 5
Зарегистрирован: 09 июн 2008, 22:06

вобщем получилась вот такая херня:
program sputnik;
uses crt, graph, dos;

procedure sputnik (a:integer); {procedura risovaniya sputnika}
const GRAD = 0.0174532; {constanta perescheta ugla: radian-gradus}
var zx, zy: integer;
begin
zx:=Round(320+100*sin(a*GRAD)); {schitaem koordinatu X}
zy:=Round(240-100*cos(a*GRAD)); {schitaem koordinatu Y}
setcolor(15);
circle(zx, zy, 2); {risuem sputnik}
delay(2000); {zhdem}
setcolor(0);
circle(zx, zy, 2); {zakrshivaem staruyu prorisovku}
end;

var gd, gm, i: integer;
begin
gd:=DETECT;
i:=1;
initgraph(gd, gm, ''); {initsializiruem grafiku}
circle(320,240,40);
outtextxy(292, 236, 'Planeta'); {risuem planetu}
while not keypressed do begin {cikl poka ne nazhata klavisha}

if i=360 then i:=1; {esli ugol 360 gradusov, to snova 1 gradus}
sputnik(i); {risuem sputnik po uhlu i}
i:=i+1; {plusuem ugol}
end;
closegraph; {zakryvaem grafiku}
end.
Ответить