
- •До розрахунково-графічної роботи
- •2.1. Мета роботи...............................................................................................................................15
- •3.1. Мета роботи...............................................................................................................................17
- •4.1. Мета роботи...............................................................................................................................21
- •5.1. Мета роботи...............................................................................................................................21
- •Завдання
- •Календарний план
- •Індивідуальні завдання
- •Список скорочень
- •Розділ 1. Моделі геометрії просторових об’єктів
- •1.2. Комбінаційні моделі геометричного об’єкта Комбінаційна модель геометричного об’єкта
- •Розділ 2. Координатне перетворення
- •Розділ 3. Побудови кривих
- •Розділ 4 колірні моделі. Змішування кольорів
- •4.2. Розрахунок кольорів та колірних перетворень
- •1. Тексти програмної реалізації завдання:
- •Int main(void)
- •2. Результати виконання програми (PrintScreen):
- •Розділ 5 програмні реалізації
- •5.2. Програмна реалізація з OpenGl
- •InitializeComponent();
- •5.2.2 Віконні інтерфейси
- •5.3. Програмна реалізація з WinApi
- •5.3.1 Опис алгоритму
- •Interface
- •Image1: tImage;
- •Implementation
- •Var daDi:integer;
- •If Form1.CheckBox2.Checked then
- •5.3.2 Віконні інтерфейси
- •5.4. Програмна реалізація афінних перетворень та анімації
- •5.4.1 Опис алгоритму
- •2. Тексти програмної реалізації завдання:
- •Void drawB()
- •Void DrawObjects()
- •Int main( int argc, char *argv[])
- •5.4.2 Віконні інтерфейси
- •5.5. Програмні реалізація розрахунків кривих ліній, координат, кольорів
- •5.5.1 Опис алгоритмів
- •Int main(void)
- •5.5.2 Віконні інтерфейси
- •Висновки
- •Список використаних джерел
- •Додатки
- •InitializeComponent();
- •Interface
- •Image1: tImage;
- •Implementation
- •Var daDi:integer;
- •If Form1.CheckBox2.Checked then
- •Void drawB()
- •Void DrawObjects()
- •Int main( int argc, char *argv[])
- •Int main(void)
5.2.2 Віконні інтерфейси
Рис.5.1.1 Програма реалізації на початку закривання діафранми
Рис.5.1.2 Програма реалізації при закритті діафрагми
Рис.5.1.3 Програма реалізації закритої діафрагми
5.3. Програмна реалізація з WinApi
5.3.1 Опис алгоритму
unit Unit1;
Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, Buttons;
type
TForm1 = class(TForm)
Image1: tImage;
TrackBar1: TTrackBar;
Label1: TLabel;
Label2: TLabel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label3: TLabel;
TrackBar2: TTrackBar;
Label4: TLabel;
CheckBox2: TCheckBox;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Label5: TLabel;
Label6: TLabel;
ComboBox3: TComboBox;
procedure BitBtn2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Label4Click(Sender: TObject);
procedure TrackBar2Change(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
procedure Label5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
k,f,x,y,rx,ry,kd,fd:integer;
colGr1,colGr2,colAx:TColor;
Implementation
{$R *.dfm}
Procedure FonDraw;
Begin
Form1.Image1.Canvas.FillRect(Rect(0,0,Form1.Image1.Width,Form1.Image1.Height));
End;
Procedure DrawAxes;
Begin
k:=Form1.TrackBar1.Position;
Form1.Image1.Canvas.Pen.Color:=colAx;
Form1.Image1.Canvas.MoveTo(0,Trunc(Form1.Image1.Height/2));
Form1.Image1.Canvas.LineTo(Form1.Image1.Width,Trunc(Form1.Image1.Height/2));
Form1.Image1.Canvas.MoveTo(Trunc(Form1.Image1.Width/2),0);
Form1.Image1.Canvas.LineTo(Trunc(Form1.Image1.Width/2),Form1.Image1.Height);
Form1.Image1.Canvas.Pen.Color:=clSilver;
x:=Trunc(Form1.Image1.Width/2);
while x<Form1.Image1.Width do
begin
x:=x+k;
Form1.Image1.Canvas.MoveTo(x,0);
Form1.Image1.Canvas.LineTo(x,Form1.Image1.Height);
end;
x:=Trunc(Form1.Image1.Width/2);
while x>0 do
begin
x:=x-k;
Form1.Image1.Canvas.MoveTo(x,0);
Form1.Image1.Canvas.LineTo(x,Form1.Image1.Height);
end;
y:=Trunc(Form1.Image1.Height/2);
while y<Form1.Image1.Height do
begin
y:=y+k;
Form1.Image1.Canvas.MoveTo(0,y);
Form1.Image1.Canvas.LineTo(Form1.Image1.Width,y);
end;
y:=Trunc(Form1.Image1.Height/2);
while y>0 do
begin
y:=y-k;
Form1.Image1.Canvas.MoveTo(0,y);
Form1.Image1.Canvas.LineTo(Form1.Image1.Width,y);
end;
End;
Function fy1(fx:integer):real;
Begin
fy1:=(sqr(fx)-1)/(sqr(sqr(fx))+1)
End;
Function fy2(fx:integer):real;
Begin
fy2:=-sqr(sqr(fx))*fx+2*sqr(fx)*fx-1;
End;
Function fy1D(fxD:real):real;
Begin
fy1D:=(sqr(fxD)-1)/(sqr(sqr(fxD))+1)
End;
Function fy2D(fxD:real):real;
Begin
fy2D:=-sqr(sqr(fxD))*fxD+2*sqr(fxD)*fxD-1;
End;
Procedure Grafic(pg:integer);
Begin
if pg=1 then
begin
FonDraw;
DrawAxes
end
else if pg=2 then
begin
Form1.Image1.Canvas.Pen.Color:=colGr1;
rx:=0;
ry:=Trunc(fy1(rx));
x:=Trunc(Form1.Image1.Width/2)+k*rx;
y:=Trunc(Form1.Image1.Height/2)-k*ry;
Form1.Image1.Canvas.MoveTo(x,y);
while x<Form1.Image1.Width do
begin
rx:=rx+1;
ry:=Trunc(fy1(rx));
x:=Trunc(Form1.Image1.Width/2)+k*rx;
y:=Trunc(Form1.Image1.Height/2)-k*ry;
Form1.Image1.Canvas.LineTo(x,y);
end;
rx:=0;
ry:=Trunc(fy1(rx));
x:=Trunc(Form1.Image1.Width/2)+k*rx;
y:=Trunc(Form1.Image1.Height/2)-k*ry;
Form1.Image1.Canvas.MoveTo(x,y);
while x>0 do
begin
rx:=rx-1;
ry:=Trunc(fy1(rx));
x:=Trunc(Form1.Image1.Width/2)+k*rx;
y:=Trunc(Form1.Image1.Height/2)-k*ry;
Form1.Image1.Canvas.LineTo(x,y);
end
end
else if pg=3 then
begin
Form1.Image1.Canvas.Pen.Color:=colGr2;
rx:=0;
ry:=Trunc(fy2(rx));
x:=Trunc(Form1.Image1.Width/2)+k*rx;
y:=Trunc(Form1.Image1.Height/2)-k*ry;
Form1.Image1.Canvas.MoveTo(x,y);
while x<Form1.Image1.Width do
begin
rx:=rx+1;
ry:=Trunc(fy2(rx));
x:=Trunc(Form1.Image1.Width/2)+k*rx;
y:=Trunc(Form1.Image1.Height/2)-k*ry;
Form1.Image1.Canvas.LineTo(x,y);
end;
rx:=0;
ry:=Trunc(fy2(rx));
x:=Trunc(Form1.Image1.Width/2)+k*rx;
y:=Trunc(Form1.Image1.Height/2)-k*ry;
Form1.Image1.Canvas.MoveTo(x,y);
while x>0 do
begin
rx:=rx-1;
ry:=Trunc(fy2(rx));
x:=Trunc(Form1.Image1.Width/2)+k*rx;
y:=Trunc(Form1.Image1.Height/2)-k*ry;
Form1.Image1.Canvas.LineTo(x,y);
end
end
End;
Procedure func;
Begin
if Form1.RadioButton1.Checked then f:=1
else if Form1.RadioButton2.Checked then f:=2
else if Form1.RadioButton3.Checked then f:=3
else if Form1.RadioButton4.Checked then f:=4;
case f of
1:Grafic(1);
2:Grafic(2);
3:Grafic(3);
4:Begin
Grafic(2);
Grafic(3)
end
end;
End;
Procedure GraficD(pgD:integer);
Var dx,dy,krok:real;
Begin
if pgD=2 then
begin
Form1.Image1.Canvas.Pen.Color:=colGr1;
krok:=1/(10*kd);
dx:=0;
x:=Trunc(Form1.Image1.Width/2);
dy:=fy1D(dx);
y:=Trunc(Form1.Image1.Height/2-dy*(kd*10));
Form1.Image1.Canvas.MoveTo(x,y);
while x<Form1.Image1.Width do
begin
dx:=dx+krok;
x:=x+1;
dy:=fy1D(dx);
y:=Trunc(Form1.Image1.Height/2-dy*(kd*10));
Form1.Image1.Canvas.LineTo(x,y);
end;
dx:=0;
x:=Trunc(Form1.Image1.Width/2);
dy:=fy1D(dx);
y:=Trunc(Form1.Image1.Height/2-dy*(kd*10));
Form1.Image1.Canvas.MoveTo(x,y);
while x>0 do
begin
dx:=dx-krok;
x:=x-1;
dy:=fy1D(dx);
y:=Trunc(Form1.Image1.Height/2-dy*(kd*10));
Form1.Image1.Canvas.LineTo(x,y);
end;
end
else if pgD=3 then
begin
Form1.Image1.Canvas.Pen.Color:=colGr2;
krok:=1/(10*kd);
dx:=0;
x:=Trunc(Form1.Image1.Width/2);
dy:=fy2D(dx);
y:=Trunc(Form1.Image1.Height/2-dy*(kd*10));
Form1.Image1.Canvas.MoveTo(x,y);
while x<Form1.Image1.Width do
begin
dx:=dx+krok;
x:=x+1;
dy:=fy2D(dx);
y:=Trunc(Form1.Image1.Height/2-dy*(kd*10));
Form1.Image1.Canvas.LineTo(x,y);
end;
dx:=0;
x:=Trunc(Form1.Image1.Width/2);
dy:=fy2D(dx);
y:=Trunc(Form1.Image1.Height/2-dy*(kd*10));
Form1.Image1.Canvas.MoveTo(x,y);
while x>0 do
begin
dx:=dx-krok;
x:=x-1;
dy:=fy2D(dx);
y:=Trunc(Form1.Image1.Height/2-dy*(kd*10));
Form1.Image1.Canvas.LineTo(x,y);
end;
end
End;
Procedure DrawAxesD;