- •1.1 Описание алгоритма решения задачи
- •1.2 Основные операторы, процедуры и методы используемые в написании программного кода
- •1.3 Форма приложения, описание используемых свойств компонентов
- •1.4 Текст программного кода.
- •Interface
- •Var a, b, c :matr;
- •I,j,n,m: integer;
- •Implementation
- •Var I, j: integer;
- •Var I, j: integer;
- •Var imin,I,j:integer;
- •2.1 Математическая модель
- •2.2 Словесный алгоритм программы
- •2.3 Форма приложения
- •2.4 Описание основных операторов, процедур и функций
- •2.5 Текст программного кода
Для составления математической модели проанализируем работу механизма, выявим зависимости, однозначно определяющие положение механизма на плоскости. Механизм изображен на рисунке 2.1
X
Рисунок
2.1 – Расчетная
схема
Длины отрезков OB, AB, BD, DC являются известными. Координаты , , также являются известными. Угол ∟ABD равен 45°. Угол w является известным. Остальные координаты находятся следующим образом:
Расчёт координат точки B из треугольника GOB :
= +OB∙Cos(w) (2.1)
= – OB∙Sin(w) (2.2)
Расчёт угла w1
W1=pi-pi/2-(pi/2+w) (2.3)
Расчет координат точки D:
Xd=Xo-Od*cos(w1) (2.4)
Расчёт угла w2 из треугольника EAB:
w2=
(2.5)
Расчёт угла w3 из треугольника DCF:
w3:=Arccos((Xc-Xb)/DC) (2.8)
Расчет координат точки А:
Ya-Yb+Ab*sinW2 (2.9)
Yc=Yd+Bc*sin(w3)
2.2 Словесный алгоритм программы
На основании составленной математической модели можно составить алгоритм программного приложения. Составим алгоритм решения:
Прорисовываем неподвижные части механизма
Вводим значение w.
Определяем координаты точек в зависимости от переменной w используя формулы (2.1-2.9).
Стираем элементы системы, соответствующие старому значению w.
Производим рисование системы, в соответствии со значением w.
2.3 Форма приложения
Одним из основных элементов приложения является форма, из которой пользователь управляет событиями, происходящими во время работы приложения. Форма приложения представлена на рисунке 2.2.
Рисунок 2.2 – Рабочая форма приложения до компеляции
Рисунок 2.3 – Рабочая форма приложения после компиляции
На форме размещены следующие компоненты:
-Image1 – компонент, для рисования механизма;
-SpinEdit1Change – компонент для задания начальных условий.
2.4 Описание основных операторов, процедур и функций
В процессе создания программного приложения необходимо использование следующих процедур, функций :
1. Функция round – возвращает целую округлённую часть цисла .
2. Функции объекта canvas, обеспечивающего рисование на элементах формы:
-moveto(X,Y) – перемещает курсор в позицию, заданную координатами X
и Y;
-lineto(X,Y) – рисует отрезок в позицию, заданную координатами X и Y;
-PolyLine(Points: array of TPoint) – рисует ломанную линию, соеденяя точки массива;
-Ellipse (x1,y1,x2,y2) – рисует эллипс вписанный в прямоугольник;
-Pen – объект для рисования линий и границ геометрических фигур;
3. Оператор присоеденения with.
Синтаксис оператора
With<Имя объекта>do<Инструкция> ;
В Инструкции, расположенной после слова do, для обращения к составной части объекта можно не указывать имя этого объекта, которое уже задано после слова with.
4. Оператор Repeat
Формат оператора Repeat:
Repeat
Тело цикла
Until<логическое выражение>
5. - procedure TForm1.FormActivate(Sender: TObject) - прорисовывает механизм в момент создания формы;
-procedure Spinedit1Change (Sender: TObject) - изменяет значение переменной w и прорисовывает схему для каждого значения переменной.
2.5 Текст программного кода
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Spin, Math;
type
hz = class
Xo,Yo,Xa,Ya,Xb,Yb,Xd,Yd,Xc,Yc,AB,BO,OD,DC,Xo2,Yo2,Xc2,Yc2,Xa2,Ya2: Integer;
w,w1,w2,w3: Real;
procedure data;
procedure get_data;
procedure calc;
procedure draw;
end;
type
TForm1 = class(TForm)
SpinEdit1: TSpinEdit;
Image1: TImage;
procedure FormActivate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
hz1: hz;
implementation
{$R *.dfm}
procedure hz.data;
begin
BO:=140; AB:=90; OD:=100; DC:=160;
Xa:=80; Xc:=230; Xo:=200; Yo:=200;
end;
procedure hz.get_data;
begin
w:=form1.spinedit1.value*pi/180;
end;
procedure hz.calc;
begin
Xb:=Xo+Round(BO*Cos(w));
Yb:=Yo-Round(BO*Sin(w));
w1:=pi/2+w;
Xd:=Xo-Round(OD*Cos(w1));
Yd:=Yo+Round(OD*Sin(w1));
w2:=ArcCos((Xb-Xa)/AB);
Ya:=Yb+Round(AB*Sin(w2));
w3:=ArcCos((Xc-Xd)/DC);
Yc:=Yd+Round(DC*Sin(w3));
end;
procedure hz.draw;
begin
Form1.Image1.Picture:=nil;
with Form1.Image1.Canvas do
begin
Rectangle(Xa-10,Ya-20,Xa+10,Ya+20);
Rectangle(Xc-10,Yc-20,Xc+10,Yc+20);
Polyline([Point(Xo,Yo),Point(Xo+15,Yo+25),
Point(Xo-15,Yo+25),Point(Xo,Yo)]);
MoveTo(Xa,Ya);
LineTo(Xb,Yb);
LineTo(Xo,Yo);
LineTo(Xd,Yd);
LineTo(Xc,Yc);
MoveTo(215,240);
LineTo(215,350);
MoveTo(245,240);
LineTo(245,350);
MoveTo(65,50);
LineTo(65,250);
MoveTo(95,50);
LineTo(95,250);
Xo2:=Xo-15;
repeat
MoveTo(Xo2,Yo+25);
LineTo(Xo2-5,Yo+35);
Xo2:=Xo2+5;
until Xo2 > Xo+15;
Yc2:=240;
repeat
MoveTo(Xc+15,Yc2);
LineTo(Xc+25,Yc2-5);
MoveTo(Xc-15,Yc2);
LineTo(Xc-25,Yc2+5);
Yc2:=Yc2+5;
until Yc2 > 350;
Ya2:=50;
repeat
MoveTo(Xa+15,Ya2);
LineTo(Xa+25,Ya2-5);
MoveTo(Xa-15,Ya2);
LineTo(Xa-25,Ya2+5);
Ya2:=Ya2+5;
until Ya2 > 250;
Ellipse(Xo-4,Yo-4,Xo+4,Yo+4);
Ellipse(Xb-4,Yb-4,Xb+4,Yb+4);
Ellipse(Xa-4,Ya-4,Xa+4,Ya+4);
Ellipse(Xd-4,Yd-4,Xd+4,Yd+4);
Ellipse(Xc-4,Yc-4,Xc+4,Yc+4);
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
hz1:=hz.Create;
hz1.data;
hz1.get_data;
hz1.calc;
hz1.draw;
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
hz1.get_data;
hz1.calc;
hz1.draw;
end;
end.
Заключение
Благодаря Delphi мне представилась возможность создать приложение, которое по заданной таблице, высчитать минимальное среднее значение столбцов второй матрицы и делит первую матрицу на получившееся минимальное значение. Таким образом Delphi дает нам возможность создать приложения решающие математические задачи, тем самым облегчает нашу работу, избавляя нас от нескончаемых вычислений и расчетов, которые занимают значительную часть нашего времени и сил, а также наиболее точно определяет значения некоторых поставленных нами задач.
Разработанное нами программное приложение «Визуальное отображения перемещений механизма» описывающее движение заданного механизма является результатом работы в визуальной среде объектно-ориентированного программирования Borland Delphi 7. Мной была решена задача о создании программы для визуального отображения перемещений механизма в соответствии с представленной схемой на рисунке 2.1.Приложение нужно было выполнить с использованием объектов и пользовательских подпрограмм. Выполнение данной задачи наглядно показало мне предусмотренное движение механизма. Таким образом, я понял , что знания полученные нами на занятиях по вычислительной технике и информатике помогут нам в нашей будущей профессии инженера-механика при проектировании сложных узлов, механизмов и деталей машин.
Список литературы:
1. В.С. Шипачев «Высшая математика».- ГУП «Издательство «Высшая школа»,
Москва, 2001.
2. Хомоненко А., Гофман В., Мещеряков Е., Никифоров В. Delphi 7. – M.:BHV, Санкт-Петербург,2003.
3. Краснов М. Графика в проектах Delphi: - СПб.: BHV – Санкт-Петербург, 2000