![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 18.02.2009
Сообщений: 6
|
![]()
Помогоите решить задачу, мой преподаватель дал задание сделать модель системы "солнце". На любом языке, хоть на Паскале.
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
![]()
В чем трудность в физике аль в прогинге?
Помог? Ну так нажми на весы!
![]() |
![]() |
![]() |
![]() |
#3 |
Максим Николаев
Форумчанин
Регистрация: 15.02.2009
Сообщений: 170
|
![]()
Какую именно модель? Графическую, математическую? Наверное просто нужно, чтобы был один жёлтинький шарик посередине, и вокруг него крутились другие шарики?
NeshSoft. Программирование на заказ для студентов. Delphi/Pascal. Подробнее на сайте neshsoft.narod.ru
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 18.02.2009
Сообщений: 6
|
![]()
Да, именно так)))) По середине желтый шарик, вокруг крутятся шарики, сделать надо на БорлэндДелфи. Как делать без понятия.
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
![]()
Можно использовать компонент TShape или же прямиком рисовать на Tcanvas формы.
Помог? Ну так нажми на весы!
![]() |
![]() |
![]() |
![]() |
#6 |
работа не волк....
Форумчанин
Регистрация: 09.06.2008
Сообщений: 337
|
![]()
Добавь на форму Timer. В OnTimer с нужным интервалом, присваивай координатам Shape (Top, Left, Right), значения, которые образуют движение вокруг шарика.
Цель, для которой требуются неправые средства, не есть неправая цель.
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,097
|
![]()
юзайте поиск: http://programmersforum.ru/showthrea...F1%F2%E5%EC%E0
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 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. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Анимация движения точки по траектории | 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 |