![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Помогите, пожалуйста, написать програмку - создание простой модели атома в Delphi. Очень-очень нужно Спасибо
|
|
#2
|
|||
|
|||
|
Что значит
Цитата:
Это текстовая модель? 3д модель; 2д модель??? |
|
#3
|
|||
|
|||
|
Модель атома Резерфорда - 2d, электроны должны двигаться вокруг ядра
|
|
#4
|
|||
|
|||
|
Данных недостаточно. Нужно просто нарисовать? Или чтобы двигалось?
Уравнение движения по кругу: Х^2+Y^2=R^2 Только к Х и У нужно добавить смещение (так как если Вы будете это где-нибудь рисовать, то там скорее всего система отсчета привязана к верхнему левому углу) Рисовать можно на самой форме, есть такая вещь как канва (TCanvas). Для рисования можно поместить таймер, время срабатывания подбирается опытным путем (зависит, например, от мощности вашего компьютера). В его обработчике написать подпрограмму которая бы обновляла на форме движение вашего электрона вокруг вашего ядра. Чтобы не висло можно там же добавить Application.ProccessMessages; |
|
#5
|
|||
|
|||
|
Большое спасибо. А как написать подпрограмму для таймера?
![]() |
|
#6
|
||||
|
||||
|
Цитата:
Код:
const centerx=200; //координаты центра
centery=200;
var rad, angle:real; //радиус полета "электрона" и угол
rE, rC:integer; //радиусы "электрона" и "ядра"
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Self.Refresh;
Canvas.Brush.Color:=$ff0000;
Canvas.Ellipse(centerx-rC, centery-rC, centerx+rC, centery+rC);
Canvas.FloodFill(centerx, centery, $ff00000, fsBorder);
Canvas.Brush.Color:=$000000;
Canvas.Ellipse(centerx+Round(rad*cos(angle))-rE, centery-Round(rad*sin(angle))-rE, centerx+Round(rad*cos(angle))+rE, centery-Round(rad*sin(angle))+rE);
Canvas.FloodFill(centerx+Round(rad*cos(angle)), centery-Round(rad*sin(angle)), $000000, fsBorder);
angle:=angle+pi/18; //+10 градусов
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
angle:=0; //исходные значения
rad:=80;
rE:=3;
rC:=30;
end; |
|
#7
|
|||
|
|||
|
Цитата:
|