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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2009, 20:01   #1
GaLiof
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 52
Восклицание 2D модель солнечной системы

Здравствуйте. Мне выпало экзаменационное задание "2d модель солнечной системы". И сразу возникло несколько вопросов(пар по программированию не было почти, преподаватель думает. что мы и так всё знаем ). Задумка такая: призапуске появляется наша солнечная система( в центре солнце, вокруг кружаться планеты). Вот вопросы:
1. Как лучше это реализовать?( я думаю просто, по верх формы разместить чёрную картинку, на ней расставить картинки солнца и планет, но сейчас задумался, есть ли какиенить другие способы реализации?)
2. Как заставить обьект(image)передвегаться по кругу?
3. Как заставить обьект(image)вращаться вокруг своей оси?
Заранее спасибо
GaLiof вне форума Ответить с цитированием
Старый 11.11.2009, 20:09   #2
HouK
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 16
По умолчанию

Я конечно тоже новичок в этом но все же мысли есть
1. Незнаю
2. Мб прописать систему координат и заставить объект двигаться от точки к точке
3. Для каждого объекта который должен кружиться, прописать свою систему координат и заставить вертеться вокруг нуля

Конечно понимаю помог ничтожно мало, но мб по этим догадкам сможешь сам чтонить сделать увы сам только учусь, а это мои догадки на твое задание

Или сделать тоже самое только через гиф покадрово
HouK вне форума Ответить с цитированием
Старый 11.11.2009, 20:20   #3
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

X:=X0+Cos(Angle*Pi/180)*R;
Y:=Y0+Sin(Angle*Pi/180)*R;
Дальше, думаю, разрулите.
Levsha100 вне форума Ответить с цитированием
Старый 11.11.2009, 20:23   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
1. Как лучше это реализовать?( я думаю просто, по верх формы разместить чёрную картинку, на ней расставить картинки солнца и планет, но сейчас задумался, есть ли какиенить другие способы реализации?)
- либо как вы задумали, либо через opengl, либо directx, либо в 3dmax, либо mathcad... опять-же что вы знаете лучше всего на том и делайте

Цитата:
2. Как заставить обьект(image)передвегаться по кругу?
- вспомните школьную программу и теорему синусов и косинусов

Цитата:
3. Как заставить обьект(image)вращаться вокруг своей оси?
- смотря в чем решитесь делать, можно вообще ничего не вращать, а сделать анимацией (набор картинок, потом их перебирать)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 11.11.2009 в 20:24. Причина: дык Levsha100 смотрю и формулу подкинул...
raxp вне форума Ответить с цитированием
Старый 12.11.2009, 04:27   #5
GaLiof
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 52
По умолчанию

Всем спасибо) Буда пытаться творить))
GaLiof вне форума Ответить с цитированием
Старый 12.11.2009, 08:21   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Смотри:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TPlanets=record
   Orbit,pos:double; Diametr:integer;
  end;
var   pln:array[1..3] of TPlanets;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 pln[1].Orbit:=100;pln[1].Diametr:=10;
 pln[2].Orbit:=200;pln[2].Diametr:=20;
 pln[3].Orbit:=300;pln[3].Diametr:=30;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Repaint;
end;

procedure TForm1.FormPaint(Sender: TObject);
var  x,y,cx,cy,i:integer;
begin          cx:=Width div 2; cy:=Height div 2;
  with Canvas do begin
   MoveTo(cx,cy);
   for i:=low(pln) to high(pln) do begin
    x:=cx+Round(pln[i].Orbit*cos(pln[i].pos));
    y:=cy+Round(pln[i].Orbit*sin(pln[i].pos));
    Ellipse(x-(pln[i].Diametr div 2),y-(pln[i].Diametr div 2),x+(pln[i].Diametr div 2),y+(pln[i].Diametr div 2));
    pln[i].pos:=pln[i].pos+((2*pi)/pln[i].Orbit);
   end;
  end;
end;

end.
Практически решение твоей задачи, но без четкого учета реальной физики (впрочим ее прикрутить не сложно)
Таймер поставь в 1. Пусть побыстрее крутит.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2009, 08:39   #7
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Похожая тема Солнечная система
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 12.11.2009, 11:43   #8
GaLiof
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 52
По умолчанию

For Stilet:Почему при запуске твоего кода появляется пустая форма...и ничего не происходит?))
GaLiof вне форума Ответить с цитированием
Старый 12.11.2009, 12:28   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и ничего не происходит?)
Как это не происходит?
Все работает. Подключи события и все заработает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2009, 17:45   #10
GaLiof
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 52
По умолчанию

for stilet: "подключи события и всё заработает" каким образом их подключить?
и ещё по поводу формул:
X:=X0+Cos(Angle*Pi/180)*R;
Y:=Y0+Sin(Angle*Pi/180)*R;
как я понимаю, я задаю:
var
X,Y,X0,Y0,R: double;
но: что означает angle? и как присвоить значения Х0 и Y0?
X0=image1.left
Yo=image1.top??? Простите за глупость, просто я довольно плохо знаю делфи...а на парах ничего не обьясняют(

Последний раз редактировалось GaLiof; 12.11.2009 в 17:50.
GaLiof вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даталогическая модель Шульц БД в Delphi 0 27.12.2008 23:44
3D модель в GLScene -=<[Evklidd]>=- Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 04.02.2008 15:32
Модель бензоколонки forester Помощь студентам 23 11.10.2007 15:17