В школуПятница, 13.02.2026, 17:10

Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта

Категории раздела
Анализы уроков [10]
Анализы проыеденных уроков для разных предметов
Конспекты [41]
Планы конспекты и просто конспекты уроков разных тематик
Документация [12]
Примеры заполнений разного рода документов
Мероприятия [13]
Тексты, планы и сценарии мероприятий
Контроль знаний [117]
Контрольные и самостоятельные работы, вопроссы, тесты, лабораторные работы и т.д
Литература [84]
Статьи и другая образовательная литература
Рефераты и Доклады [25]
Рефераты, доклады, дипломные проекты и т.д
Разное [10]
Статьи с других сайтов предоставленніе нам.

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Литература

Моделирование движения объектов ЛР
Лабораторная работа № 5
Тема. Моделирование движения объектов. 
Цель: 
- изучить основные формулы для моделирования движения объектов
- написать программу моделирования стрелочных часов
Ход работы
1. Разработайте программу в соответствии со следующими требованиями:
а) возможность переключения между 12 / 24 часовым циферблатом;
б) отображение электронных часов, на циферблате
2. Напишите отчет, содержащий исходные тексты программ
РЕШЕНИЕ
var
  Form1: TForm1;
implementation
{$R *.dfm}
uses
   DateUtils; // dlya dostupa k SecondOf,
              // MinuteOf è HourOf
const
  R = 200;    // radius chasov
var
 x0,y0: integer;         // centr tsiferblada
 ahr,amin,asec,dub: integer; // ïugol polozheniya strelok
// initialization form
procedure TForm1.FormCreate(Sender: TObject);
var
    t: TDateTime;
begin
  dub:=1;
  form1.Color:=clred;
   // Razmer forms zavisit ot chasov (razmera)
  ClientHeight := (R+30)*2;
  ClientWidth  := (R+30)*2;
  x0 := R+30;
  y0 := R+30;
  t := Now();

  // polozheniye strelok
  ahr :=  90 - HourOf(t)*30-(MinuteOf(Today)div 12)*6;
  amin := 90 - MinuteOf(t)*6;
  asec := 90 - SecondOf(Today)*6;
  Timer1.Interval := 1000; // period 1 sek
  Timer1.Enabled := True;  // strat timer
end;

// draw vector s zadannoy dlinnoy (x0,y0)
procedure TForm1.Vector(x0,y0: integer; a, l: integer);
    // x0,y0 - start vectora
    // a - ugol mezhdu osyu x
    // l - dlin vectora
const
  GRAD = 0.0174532;   // pereschet gradusov
var
  x,y: integer;       // end vektora
begin
  Canvas.MoveTo(x0,y0);
  x := Round(x0 + l*cos(a*GRAD));
  y := Round(y0 - l*sin(a*GRAD));
  Canvas.LineTo(x,y);
end;

// draw strelki
procedure TForm1.DrawClock;
var
    t: TDateTime;
    i,x,y:integer;
    a:real;
begin
Canvas.Brush.Color := rgb(255,0,0);
Canvas.Pen.Color := rgb(255,0,0);
Canvas.FillRect((rect(0,0,10000,10000)));
Canvas.Brush.Color := rgb(255,0,0);
Canvas.Pen.Color := rgb(255,0,0);
for i:=1 to 24 div dub do
  begin
  a:=i*360/(24/dub)-90;
  x:=x0+Round( (R+15) * cos(a*2*pi/360));
  y:=x0+Round( (R+15) * sin(a*2*pi/360));
  Canvas.TextOut(x-5,y-7,IntToStr(i));
  end;

  for i:=R downto 0 do
     begin
     Canvas.Brush.Color := clwhite;
     Canvas.Pen.Color := clwhite;
     Canvas.Ellipse(x0-i,y0-i,x0+i,y0+i);
     end;
Canvas.Brush.Color := rgb(0,0,0);
Canvas.Pen.Color := rgb(0,0,0);
for i:=0 to 60 do
  begin
  a:=i*360/60;
  x:=x0+Round( (R) * cos(a*2*pi/360));
  y:=x0+Round( (R) * sin(a*2*pi/360));
  Canvas.Ellipse(x-2,y-2,x+2,y+2);
  end;
  t := Now();

  // new polozheniye strelok
  ahr :=  90 - HourOf(t)*30 div 2*dub-(MinuteOf(t)div 12)*6;
  amin := 90 - MinuteOf(t)*6;
  asec := 90 - SecondOf(t)*6;

  // strelki
  // hour
  Canvas.Pen.Width := 3;
  Canvas.Pen.Color := clBlack;
  Vector(x0,y0, ahr, R-20);

  // minuts
  Canvas.Pen.Width := 2;
  Canvas.Pen.Color := clBlue;
  Vector(x0,y0, amin, R-15);

  // second
  Canvas.Pen.Width := 1;
  Canvas.Pen.Color := clRed;
  Vector(x0,y0, asec, R-7);
end;

// prorisovka tsiferblada
procedure TForm1.FormPaint(Sender: TObject);
var
    x,y: integer;    // êîîðäèíàòû ìàðêåðà íà öèôåðáëàäå
    a: integer;      // óãîë ìåæäó OX è ïðÿìîé (x0,yo) (x,y)
    h,i: integer;      // ìåòêà ÷àñîâîé ðèñêè

    bs: TBrushStyle; // ñòèëü êèñòè
    pc: TColor;      // öâåò êàðàíäàøà
    pw: integer;     // øèðèíà êàðàíäàøà
begin
  bs := Canvas.Brush.Style;
  pc := Canvas.Pen.Color;
  pw := Canvas.Pen.Width;

  Canvas.Brush.Style := bsClear;
  Canvas.Pen.Width := 1;
  Canvas.Pen.Color := clBlack;
  Canvas.Font.Color := clBlack;
  a:=0; // metki ot 3-õ hour, protiv
        // hour strelka
  h:=3; // ugol 0 gradusov - its 3 hour

  // vosstanovleniye karandasha
  Canvas.Brush.Style := bs;
  Canvas.Pen.Width := pw;
  Canvas.Pen.Color := pc;

  DrawClock;
end;

// prorisovka tekushih strelok chasov
procedure TForm1.Timer1Timer(Sender: TObject);
begin
    DrawClock;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if(dub=2)then dub:=1
else dub:=2;
end;
end.

Категория: Литература | Добавил: Armageddets (26.10.2012)
Просмотров: 497 | Теги: Моделирование движения объектов | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Мини-чат

Форма входа

Поиск


Copyright MyCorp © 2026
Сделать бесплатный сайт с uCoz