Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2009, 06:20   #1
AnaVare
 
Регистрация: 18.02.2009
Сообщений: 6
По умолчанию Компьютерное моделирование. Создание модели движения тел по определенной траектории.

Помогоите решить задачу, мой преподаватель дал задание сделать модель системы "солнце". На любом языке, хоть на Паскале.
AnaVare вне форума Ответить с цитированием
Старый 28.02.2009, 12:27   #2
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

В чем трудность в физике аль в прогинге?
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 28.02.2009, 17:48   #3
NeshSoft
Максим Николаев
Форумчанин
 
Аватар для NeshSoft
 
Регистрация: 15.02.2009
Сообщений: 170
По умолчанию

Цитата:
Сообщение от AnaVare Посмотреть сообщение
Помогоите решить задачу, мой преподаватель дал задание сделать модель системы "солнце". На любом языке, хоть на Паскале.
Какую именно модель? Графическую, математическую? Наверное просто нужно, чтобы был один жёлтинький шарик посередине, и вокруг него крутились другие шарики?
NeshSoft. Программирование на заказ для студентов. Delphi/Pascal. Подробнее на сайте neshsoft.narod.ru
NeshSoft вне форума Ответить с цитированием
Старый 04.03.2009, 05:07   #4
AnaVare
 
Регистрация: 18.02.2009
Сообщений: 6
По умолчанию

Да, именно так)))) По середине желтый шарик, вокруг крутятся шарики, сделать надо на БорлэндДелфи. Как делать без понятия.
AnaVare вне форума Ответить с цитированием
Старый 04.03.2009, 10:57   #5
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Можно использовать компонент TShape или же прямиком рисовать на Tcanvas формы.
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 04.03.2009, 11:46   #6
Лукманов Александр
работа не волк....
Форумчанин
 
Аватар для Лукманов Александр
 
Регистрация: 09.06.2008
Сообщений: 337
По умолчанию

Добавь на форму Timer. В OnTimer с нужным интервалом, присваивай координатам Shape (Top, Left, Right), значения, которые образуют движение вокруг шарика.
Цель, для которой требуются неправые средства, не есть неправая цель.
Лукманов Александр вне форума Ответить с цитированием
Старый 04.03.2009, 13:13   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

юзайте поиск: http://programmersforum.ru/showthrea...F1%F2%E5%EC%E0
pu4koff вне форума Ответить с цитированием
Старый 18.03.2009, 05:09   #8
AnaVare
 
Регистрация: 18.02.2009
Сообщений: 6
По умолчанию

Я сделал программу, вот код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Planets:array[0..50] of TImage;
PlanetsPositions:array[1..50] of real;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;

procedure PlanetView(var Planet:TImage; Radius:integer; Color:TColor);
begin
with Planet do
begin
Width:=2*Radius;
Height:=2*Radius;
Top:=(Form1.ClientHeight div 2)-Radius;
Left:=(Form1.ClientWidth div 2)-Radius;
Canvas.Pen.Color:=Form1.Color;
Canvas.Brush.Color:=Form1.Color;
Canvas.Rectangle(0,0,Planet.Width,P lanet.Height);
Canvas.Brush.Color:=Color;
Canvas.Pen.Color:=Color;
Canvas.Ellipse(0,0,Planet.Width,Pla net.Height);
Visible:=True;
end;
end;

BEGIN
Form1.Width:=700;
Form1.Height:=700;
Form1.Color:=clBlue;
for i:=0 to 50 do
begin
Planets[i]:=TImage.Create(Self);
with Planets[i] do
begin
Parent:=Form1;
AutoSize:=False;
Visible:=False;
end;
end;

randomize;
for i:=1 to 50 do
begin
PlanetsPositions[i]:=Random(360);
end;

PlanetView(Planets[0],40,clYellow);
PlanetView(Planets[1],3,clRed);
PlanetView(Planets[2],5,clGray);
PlanetView(Planets[3],6,clGreen);
PlanetView(Planets[4],2,clWhite);
PlanetView(Planets[5],7,clRed);
PlanetView(Planets[6],3,clMaroon);
PlanetView(Planets[7],2,clMaroon);
PlanetView(Planets[8],15,clWhite);
END;

procedure TForm1.Timer1Timer(Sender: TObject);

procedure PlanetOrbit(var Planet:TImage; var position:real; velocity:real; distance,direction:integer);
var x,y:integer;
begin
position:=position+velocity;
x:=Trunc(direction*Distance*cos(pos ition))-(Planet.Width div 2);
y:=Trunc(Distance*sin(position))-(Planet.Height div 2);
Planet.Top:=(Planets[0].Top+(Planets[0].Height div 2))+y;
Planet.Left:=(Planets[0].Left+(Planets[0].Width div 2))+x;
if position>=360 then position:=0;
end;

procedure SatelliteOrbit(Planet:TImage; var Satellite:TImage; var position:real; velocity:real; distance,direction:integer);
var x,y:integer;
begin
position:=position+velocity;
x:=Trunc(direction*Distance*cos(pos ition))-(Satellite.Width div 2);
y:=Trunc(Distance*sin(position))-(Satellite.Height div 2);
Satellite.Top:=(Planet.Top+(Planet. Height div 2))+y;
Satellite.Left:=(Planet.Left+(Plane t.Width div 2))+x;
if position>=360 then position:=0;
end;

begin
PlanetOrbit(Planets[1],PlanetsPositions[1],0.09,50,1);
PlanetOrbit(Planets[2],PlanetsPositions[2],0.08,70,1);
PlanetOrbit(Planets[3],PlanetsPositions[3],0.05,100,-1);
SatelliteOrbit(Planets[3],Planets[4],PlanetsPositions[4],0.15,15,1);
PlanetOrbit(Planets[5],PlanetsPositions[5],0.04,150,1);
SatelliteOrbit(Planets[5],Planets[6],PlanetsPositions[6],0.06,15,1);
SatelliteOrbit(Planets[5],Planets[7],PlanetsPositions[7],0.09,22,1);
PlanetOrbit(Planets[8],PlanetsPositions[8],0.1,180,-1);
end;

end.
AnaVare вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация движения точки по траектории ariant Microsoft Office Excel 4 25.12.2008 06:28
Столкновение тел Лубышев Помощь студентам 3 08.12.2008 11:07
Как пометить в форме номера тел. так что бы..... beliy-dis Microsoft Office Access 3 08.07.2008 23:11