Компьютерде дайындалған статистикалық документтерде іскерлік графика – диаграммалар жиі қолданылады. Delphi-ге экран мен принтерде түрлі диаграммаларды салуға мүмкіндік беретін TeeChart кітапханасы енгізілген. Ол Дэвид Бернедамен жазылған және құрамында диаграммалар компоненттерінің бірнеше компиляцияланатын модульдері мен бірнеше стандартты Series типтері бар. TeeChart Gallery утилитасының терезесі көрсетілген 5.1 кескіні диаграммалардың мүмкін типтерінің әртүрлілігі жайлы түсінік береді.
Мысал 10. Bar стилінің түрлі типтерін қолданатын бағандық диаграмманы құру.
Тапсырманы орындау технологиясы:
1) диаграмма компонентін формаға орналастырыңыз.
2) диаграмманың үстіне тышқанның оң жақ батырмасын шертіп, шыққан мәзірден редакторды таңдаңыз.
3) bar-дың үш сериясын кірістіріңіз де, редактордың бірінші бетіндегі Title батырмасының көмегімен оларға ‘East’, ‘West’, и ‘Other’ атауларын меншіктеңіз.
4) format парағында Multiple Bar тобын таңдаңыз да, ‘stacked’ (бұл мән үш серияның барлығына бірдей қатысты болады және бағаналардың бір-бірінде орналасуын тағайындайды) мәнін орнатыңыз.
5) диаграмма редакторының бірінші бетіндегі ‘Titles’ өрісіне атау еңгізіңіз.
6) (axis) өсінің қосымша бетіне өтіңіз. Left өсін таңдап, атауды еңгізіңіз. Біз өлшемдері автоматты түрде анықталатын өсті кірістірдік. Әрбір серияның өзіне ғана тән жолақтар формасы болады. Бұны Style-ды орнату мүмкіншілігі бар Format деген бірінші қосымша бетте тағайындауға болады. Тура осыны бағдарлама мәтінінде орындауға болады:
East.BarStyle:=bsPyramid;
West.BarStyle:=bsInvPyramid;
Other.BarStyle:bsRectangle;
Сериялардың шығу ретін не жасап шығару кезінде диаграмма редакторында, не бағдарлама мәтініде Serieslist қасиетінің көмегімен басқаруға болады:
Chart1.SeriesList[0]:=East;
Chart1.SeriesList[1]:=West;
Chart1.SeriesList[2]:=Other;
Берілген демонстрациялық диаграмманың сериялары кездейсоқ шамалармен толтырылған.
5.3 Кескінтерді модельдеу
Ф.Мартинес классификациясына сәйкес кескіндегі ақпаратты үш топқа бөлуге болады:
топологиялық ақпарат (морфология және геометрия);
визуалды ақпарат (сыртқы түрі және жарықтандыру);
анықтауыш ақпарат (идентификация және құрылым).
Аталған алты тәуелсіз класс келесі ақпаратқа ие: ,
идентификация (I) — объектілер немесе объектілер жиынтығының атауы;
құрылым (S) объектілердің өзара байланыстарын көрсетеді: логикалық (тәнділік, іске қосылу және т.б.), топологиялық(жақындылығы, жанасу және т.б.) және функционалды;
морфология (М) қалпына және байқау нүктесінен тәуелсіз объект формасын көрсетеді;
геометрия (G) морфологияны объектілердің өзара байланысы, проекциялар, көре алу қасиеті және т.б. жайлы ақпаратпен толықтырады. Геометрия түсіру және суреттеу туралы ақпаратпен толықтырылады;
түсіру(съемка) (Gv) түсіру нүктесі, объектив түрі, фокустық қашықтық, кескін форматы жайлы ақпаратты қамтиды. Үш өлшемді объектілер үшін түсіру кескін проекциясын суреттік жазықтық кеңістік немесе жоспар деп аталынатын жазықтыққа түсіру жолымен іске асырылады;
суреттеу (Ga) – жоспардың екі өлшемді кескінін кадрдың екі өлшемді кескініне түрлендіру;
сыртқы түрі (А) құрамында объект жасалған материалға қатысты ақпарат бар: түсі, текстура, жарықтылығы, мөлдірлігі және т.б.;
жарықтың түсуі (Е) жарық көзінің орналасуын, санын және табиғатына, сонымен бірге көру шарттарын: тұман, түтін көрсетеді.
Кескін синтезінің мәселесіне тоқтамаңыз, бұл ақпараттан ЭЕМ экранында кескінді құрастыруда кездесетін математикалық есептердің негізгілерін атап көрсетейік:
1) координаттар жүйесін түрлендіру және проекциялау;
2) көрінбейтін сызықтарды жою;
3) жарықтың түсуі мен көлеңкені модельдеу;
4) түстерді модельдеу;
5) текстураны модельдеу;
6) объектілермен жасалатын логиикалық операциялар.
Бір айнымалы функция графигін құру
Бірінші бөлімде параметрлі берілген функция графигін құру есебін қарастырылған. Енді нақтырақ талдау жасау үшін бір айнымалы функция графигін құрастыру есебіне оралсақ.
Для построения графика функции у = f(x) функция графигін қағазда салу үшін (X1,X2)*(Y,,Y2) өлшемді тікбұрыш таңдалып алынады. Монитор экранында функция графигін салу кезінде туындайтын қиыншылық (X1,X2)*(Y,,Y2) өлшемді тікбұрышты экрандағы тікбұрышқа масштабтауға тура келетінінде.
Мысал 11. Бұрылған торда күңгірт түстердің көмегімен бейнелеу. Тордың параметрлік теңдеулерін сурет ретінде келтіретін боламыз:
x = (R + r0 * cosβ) * cosα;
y = (R + r0 * cosβ) * sinα;
z = r0 * sinβ.
R- координаттар басынан тордың өсіне дейінгі қашықтық, r0 – тордың радиусы, - 0-ден 2-ге дейін мән қабылдайтын бұрыштар.
II(x:real): integer и JJ(y:real): integer функциялары ауқымдауды жүзеге асырады, ал О1, О2 и О3 процедуралары – координаттар жүйесін Z,Y,X өстерін сәйкесінше айналуы. Мәндерді есептеуді жылдамдату үшін sinα және cosα 30 қадамымен алдын ала есептеліп, co [0..120] және si [0..120] массивтеріне енгізіліп қойған.
Тапсырманы орындау технологиясы:
Синустар және косинустар массивін толтыру процедурасы
Procedure TForm1.FormCreate(sender:TObject);
Var i: integer;
begin
for i:=0 to 120 do
begin
co[i]:=cos(Pi/60*i); si[i]:=sin(Pi/60*i);
end;
end;
Тордың беткі қабаты тіктөртбұрыштарға бөлінген (9.7 суреті) a=i*q, i=1..n, b=j*h, j=1..m.
Тіктөртбұрыштың түсі Z өсіне проекцияның ұзындығымен және төртбұрыштың бірлік нормалі анықталады, операторлармен жүзеге асырылады.
Функцияның графиктері
unit U1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls.
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender:TObject);
procedure FormCreate(Sender:TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
imlementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender:TObject);
var
x,y: real;
Px,Py,l,g:integer;
begin
l:=Form1.Height div 2;
begin
for Px:=0 to Form1.Width do begin
x:=Px*3*pi/Form1.Width;
y:=cos(x);
Py:=trunc(0.5*y*1)+1;
Canvas.Pen.Width:=100;
for g:=1 to 1000 do Canvas.Pixels[Px,Py]:=clGreen;
end;
end;
l:=Form1.Height div 2;
begin
for Px:=0 to Form1.Width do begin
x:=Px*3*pi/Form1.Width;
y:=cos(x);
Py:=trunc(0.5*y*1)+1;
canvas.Pen.Width:=40;
canvas.Pixels[Px,Py]:=clRed;
for g:=1 to 1000 do
canvas.Pixels[Px,Py]:=clWhite;
canvas.Pixels[Px,Py]:=clRed;
for g:=1 to 1000 do
canvas.Pixels[Px,Py]:=clWhite;
canvas.Pixels[Px,Py]:=clYellow;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Color:=clWhite;
end;
end.
Мысал 12. Берілген функциялардың графиктерін салу: ; ;
Тапсырманы орындау технологиясы:
unit Graph;
interface
uses
аWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
VAR T0,TK,Q,W,Y1,Y2,Y3 :REAL;
i,H :real;
begin
Q:=StrToFloat(Edit1.Text);
W:=strToFloat(Edit2.Text);
H:=StrToFloat(Edit3.Text);
T0:=StrToFloat(Edit4.Text);
TK:=StrToFloat(Edit5.Text);
i:=T0;
Series1.Clear;
Series2.Clear;
Series3.Clear;
while i<=TK do
begin
Y1:=exp(-Q*i)*sin(W*i);
Y2:=-exp(-Q*i);
Y3:=exp(-Q*i);
Series1.AddXY(i,Y1,'',clTeeColor);
Series2.AddXY(i,Y2,'',clTeeColor);
Series3.AddXY(i,Y3,'',clTeeColor);
i:=i+h;
end;
end;
end.
Қосымшаның сыртқы келбеті:
Мысал 13. Экранда тіктөртбұрыштың қозғалысын, яғни тіктөртбұрыш бір уақытта бізден көкжиекке дейін «ұшады» да, өз өсі бойымен айналады.
Тапсырманы орындау технологиясы:
Шаршының центрге қатысты төбелерінің ығысуын пайдалану.
Ауқымдау кезінде диагональдың өлшемі және центрдің орналасуы өзгереді.
Айналу кезінде – төбелердің центрге қатысты ығысуы.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
x,y,dx,dy,dx1,dy1,xn,yn,xc,yc,xn1,yn1: real;
t,k,r:real; // шаршының бұрышы
i,j:integer;
procedure sq(x,y,dx,dy:integer); // шаршыны бейнелеу
begin
Canvas.MoveTo(x+dx,y+dy); // ауқым
Canvas.LineTo(x-dy,y+dx);
Canvas.LineTo(x-dx,y-dy);
Canvas.LineTo(x+dy,y-dx);
Canvas.LineTo(x+dx,y+dy);
end;
begin
r:=100; // шаршының қабырғасының өлшемінің жартысы
xn:=Form1.Width div 2; // бастапқы және соңғы нүктелердің координаттары
yn:=Form1.Height div 5*2;
xc:=Form1.Width+xn;
yc:=Form1.Height-yn;
dx:=r; // бастапқы мәндерді анықтау
dy:=0;
k:=0.95;
t:=0;
while (t<100) do begin // экранға кадрлеп шығару
Canvas.Pen.Color:=clGreen;
sq(round(xn),round(yn),round(dx),round(dy));
xn1:=xn*k+(1-k)*xc; // ауқымдау
yn1:=yn*k+(1-k)*yc;
r:=r*k;
{ Бұрылу }
t:=t+1; // айналудың бұрышын үлкейту
dx1:=r*cos(t);
dy1:=r*sin(t);
for j:=1 to 100000 do // уақытша тоқтату
Canvas.Pen.Color:=clWhite; // шаршыны өшіру
sq(round(xn),round(yn),round(dx),round(dy));
dx:=dx1; // шаршының парметрлерін айырбастау
dy:=dy1;
xn:=Form1.Width div 2;
yn:=yn1;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Color:=clWhite;
end;
end.
Достарыңызбен бөлісу: |