Pascal программалау тіліндегі фрактальді графика

Автор работы: Пользователь скрыл имя, 28 Апреля 2014 в 01:25, курсовая работа

Описание работы

Берілген курстық жұмыста Паскаль программалау тілінде түрлі
графикалық обьектілерді құру мүмкіндіктері қарастырылған. Graph модулін
пайдалана отырып оның түрлі сипаттағы функциялары мен процедуралары
программалау кезінде қолданылды. Паскаль программалау тілінде графикалық
жұмыстар екі режимде іске асады

Содержание работы

Кіріспе....................................................................................................................
1. 1. Паскаль программалау тіліндегі фрактальді графика........................
1. 1 Базалық процедуралар мен функциялар.......................................................
1. 2 Фрактальді графикалық режимдегі экран мен терезелер...........................
1. 3 Фрактальді графикада қарапайым фигураларды шығару...........................
1. 4 Графикалық процедуралар………………………………………………….
1. 5 Graph модулі…………………………………………………………………
1. 6 Мәтінмен жұмыс………………………………………………………….....
2. Фрактальді графика мүмкіндіктерін программалауда жүзеге асыру.
2. 1 Функцияның графигін тұрғызу……….........................................................
2. 2 Графикадағы циклдер. Кездейсоқ процесстердiң құрастыру….................
2. 3 Жұлдызды аспан программасы......................................................................
Қорытынды...........................................................................................................
Қолданылған әдебиеттер....................................................................................

Файлы: 1 файл

Фрактальді графика.doc

— 351.50 Кб (Скачать файл)

PutPixel (x, y: integer, color:word);

Мұндағы х, у – нүктенің орналасу координаталары; color – түсі.

Color мәнінің мүмкіндіктері кестеде көрсетілген.

Кесте 3.

Түстік шкала

Түс

Код

Түс

Код

Black – қара

0

DarkGray – қоңырқай сұр

8

Blue – көк

1

LightBlue – көгілдір

9

Green – жасыл

2

LghtGreen – ашық жасыл

10

Gyan – бирюзовый

3

LightGyan – ашық-бирюзовый

11

Red – қызыл

4

LightRed – ашық қызыл

12

Magenta – малина түсті

5

LightMagenta – ашық малина түсті

13

Brown – қоңыр

6

Yellow –сары

14

LightGray – ақшыл сұр

7

White – ақ

15


 

Мысалы

PutPixel(320, 240, 4); ü

ý - экранның центріне қызыл нүктені шығарады.

PutPixel(320,240, Red);þ

Сызықты шығару.

Сызықтар (түзулер қимасынан) нүктелерден тұрғызылады. Мұны келесі процедураның көмегімен жүзеге асыруға болады

Line (x1, y1 , x2,y2 :integer);

Мұндағы x1, y1 – сызықтың бастапқы нүктесінің координатасы, x2,y2 – сызықтың соңғы нүктесінің координатасы, Мысалы Line(1,1,600,1);

Line процедурасында түсті белгілеуге арналған параметр жоқ. Бұл жағдайда түс SetColor (түсі: word) процедурасымен орындалады; бұл кестедегі 1 түс болып табылады. Мысал үшін:

SetColor(Gyan);

Line(1,1,600,1);

Сызықты салу үшін тағы да екі процедура қолданылады: LineTo және LineRel. LineTo (x,y: integer) процедурасы берілген нүктені орнынан х, у координаталы нүктеге бағытталған сызықты салады. LineRel (dx,dy: integer) процедурасы берілген (х, у) нүктесіні координатасы x+dx, y+dy нүктесіне бағытталған сызықты жүргізеді.

Турбо Паскаль әр түрлі стильдегі сызықтарды: жіңішке, жуан, штрихталған, пунктирлі және тағы басқаларын сызуға мүмкіндік береді. Стильді орнату SetLineStyle(a,b,c: word) процедурасының көмегімен іске асады, мұнда мәндер 2 кестеде келтірілген жолдың типі, b – үлгісі, с – кесте 3-те көрсетілген тұрақтымен анықталған сызықтың қалыңдығы. Егер стандартты стильдердің бірі қолданылса, b-ның мәні 0-ге тең. Егер өзіндік стильді енгізетін болса, онда b=4 болады. Қолданушы өз қалауымен үлгі арқылы сызықты неден құрау керек екенін анықтайды.

Мысалы:

SetLineStyle(1,0,1);

Line(15,15, 150,130);

немесе

SetLineStyle(UserBitLn,$5555,ThickWidth);

Line(15,15, 150,130);

 

Кесте 4.

Сызықтың стильдері

Тұрақты

Мәні

Сипатталуы

SolidLn

0

Үзіксіз сызық

DottedLn

1

Нүктеден құралған сызық

CenterLn

2

Сызықша мен нүктеден құралған сызық

DashedLn

3

Штрихталған сызық

UserBitLn

4

Қолданушының типі

NormWidth

1

Жай қалыңдығы (1 пиксель)

ThickWidth

3

Қалың сызық (3 пиксель)


Экран центрінде үшбұрышты қызыл сызықпен сызып шығатын программаны құру керек.

 

Program treug;

uses graph; {графических процедуралар кітапхансын қосу}

var gd,gm: integer; {графикалық драйвер мен мониторды анықтайтын айнымалыларды сипаттау}

begin

gd:=detect; {ПК-ның таңдауымен айнымалылардың мәнін сипаттау}

initgraph(gd, gm, ‘ c/bp’); { графикалық режимді инициализациялау }

SetColor(4); {сызықтың түсін беру}

SetLineStyle(1,0,3); {сызықтың стилін беру}

Line(320, 240, 320, 180);

Line(320, 240, 390, 240);

Line(390, 240, 320, 180);

end.

 

Көпбұрыштарды және тіктөртбұрыштарды тұрғызу.

Тікбұрышты фигураларды тұрғызу кезінде бірнеше процедура қолданылады. Олардың алғашқысы – бірөлшемді тіктөртбұрышты сызу: Rectangle (x1, y1 , x2, y2:integer ), мұндағы x1, y1 – тіктөртбұрыштың сол жақ жоғарғы бұрышының координаталары, x2, y2 – тікбұрыштың оң жақ төменгі бұрышының координаталары. Тіктөртбұрыштың іші боялмаған, сондықтан да ол фонның түсімен сәйкес келеді.

Қабылдауға әсерлі тіктөртбұрышты боялған тіктөртбұрышты салатын Bar (x1, y1 , x2, y2:integer) процедурасының көмегімен салуға болады. SetFillStyle көмегімен боялу түсі анықталады. Тағы да бір әсерлі процедура ретінде үшөлшемді боялған тіктөртбұрышты (параллелепипед) шығаратын Bar3D (x1, y1 , x2,y2, d: integer, a:boolean) процедурасы қолданылады. Сонымен қатар SetFillStyle көмегімен орнатылған боялу түсі мен типі анықталады. d параметрі үшөлшемді контур тереңдігін білдіретін пикселдер санын көрсетеді. Көп жағдайда оның мәні тіктөртбұрыштың төрт төбесіне ( d:= (x2 - x1) div 4 ) тең болады. Ал а параметрі тіктөртбұрыштың төбелерін салу керек пе (а:=True) әлде жоқ па (a:=False) соны анықтайды.

Қолдану мысалдары:

1. SetColor(Green);

Rectangle (200, 100, 250,300);

2. SetFillStyle(1,3);

Bar(10,10,50,100);

3. SetFillStyle(1,3);

Bar3D(10,10,50,100,10,True);

Line процедурасының көмегімен көпбұрыштарды әр түрлі тәсілмен салуға болады. Алайда Турбо Паскальда берілген түстегі, стильдегі және қалыңдықтағы сызық арқылы кез келген көпбұрыштарды салуға мүмкіндік беретін DrawPoly прцедурасы бар. Ол DrawPoly( a: word, var PolyPoints) форматымен анықталады. PolyPoints параметрі көпбұрыштағы әрбір қиылысудың координаталарын құрайтын типталмаған параметр болып есептеледі. а параметрі PolyPoints-тағы координата санын береді.

N төбелері бар тұйық фигураны салу үшін DrawPoly N+1 процедурасы кезінде координата беру керек екендігін есте сақтау қажет, ал мұндағы N нөмірлі төбенің координатасы 1-ге тең төбенің координатасымен тең болуы керек.

Мысал ретінде сипаттағанда:

program tr; { Экран центрінде үшбұрышты қызыл сызықпен сызып шығатын программа}

uses crt, graph;

var gd, gm: integer;

pp: array[1..4] of PointType;

xm, ym, xmaxD4, ymaxD4:word;

begin

gd:= detect;

Initgraph(gd, gm, ‘ c/bp’);

xm:=GetmaxX; ym:=GetmaxY;

xmaxD4:=xm div 4;

ymaxD4:= ym div 4;

{төбелердің анықталған координатасы}

pp[1].x := xmaxD4;

pp[1].y := ymaxD4;

pp[2].x := xm - xmaxD4;

pp[2].y := ymaxD4;

pp[3].x := xm div 2;

pp[3].y := ym - ymaxD4;

pp[4] :=pp[1];

SetColor(4); {сызуға арналған түс}

DrawPoly(4,pp); {4 – қиылысу саны +1}

readln;

CloseGraph

end.

 

Жұмыстың нәтижесінде экранның қара фонона қызыл үшбұрыш шығады. Үшбұрыштың ішіндегі фонды FillPoly(a: word, var PolyPoints) процедурасымен өзгертуге болады. Параметрлердің мәні DrawPоly процедурасындағыдай қалады. Қозғалыстары да анологиялық тұрғыда болады, алайда үшбұрыш ішіндегі фон боялады. Оған мысал ретінде экранның сол жақ жоғары бөлігіне жасыл түсті төртбұрышты жұлдызды салуға болады.

 

program g;

uses crt, graph;

const

Star: array[1..18] of integer = (75, 0, 100, 50, 150, 75, 100, 100, 75, 150, 50, 100, 0, 75, 50, 50, 75, 0);

var

gd, gm: integer;

begin

gd:= detect;

initgraph(gd, gm, ‘ c/bp’);

SetFillStyle(1,2);

FillPoly(9,Star); {9 – қиылысу саны + 1}

CloseGraph;

end.

Доға мен шеңберді тұрғызу.

Берілген түстегі шеңберді сызу келесі форматта жүзеге асады:

Cicrle(x, y, r: word), мұндағы х, у – шеңбер центрінің координаталары, r – оның радиусы.

Мысалға келесі программа фрагменті радиусы 50 пикселден тұратын және центріндегі нүкте (450, 100) тең болатын ашық жасыл түсті шеңберді шығару керек:

SetColor(LightGreen);

Circle(450, 100, 50);

Доғаларды Arc(x, y: integer, a, b, R:integer) процедурасының көмегімен сызуға болады, мұндағы a, b - градустағы бастапқы және соңғы бұрыштар, R – радиусы. Бұрыштарды белгілеу үшін полярлы координаталар жүйесі қолданылады.

Сызу үшін қажетті түс SetColor процедурасы арқылы беріледі. a=0 және b=360 жағдайында, толық шеңбер салынады.

Мысалы 0 мен 90° аралығындағы Circle(450, 100, 50) болып шеңбер күйінде сызылған қызыл түсті доғаны салу керек:

SetColor(Red);

Arc(450, 100, 0, 90,50);

Элипстік доғаларды салуда Ellipse (x, y: integer, a, b, Rx, Ry: integer) процедурасы қолданылады, мұндағы х, у – элипс центрі, ал Rx, Ry: горизонтальді и вертикальді осьтер. a=0 және b=360 жағдайында толық элипс салынады. Мысалы толық элипс тұрғызу керек:

SetColor(9);

Ellipse(100, 100, 0, 360, 50,50);

Элипстің ішіндегі фон экран фонымен сәйкес ке леді. Боялған элипсті салу үшін арнайы FillEllipse (x, y: integer, Rx, Ry: integer) процедурасы қолданылады. SetFillStyle (a, b: word) процедурасының көмегімен элипстің боялуы іске асады, мұндағы а- боялу стилі (кесте 4), b – боялатын түс (кесте 1).

Мысалы жасыл түсті сирек нүктелермен толтырылған алқызыл түсті элипсті салу керек, ол үшін төмендегі процедуралар орындалады.

SetFillStyle(WideDotFill, Green); { толтыру стилін орнату}

SetColor(12); {эллипстің сызылу түсі}

FillEllipse(300, 150, 50, 50);

 

Турбо Паскальдағы графикалық мүмкіншіліктерді толық пайдалану үшін uses сипаттау блогына Graph графикалық модулін қосу керек.

Модуль графикалық функциялар мен процедуралардың тізбегін құрайды.

 

  1. 4 Графикалық процедуралар

 

Arc (x,y: integer; St,En,R: word); {доғаны салу, мұндағы x,y – доға центрінің координатасы, R - радиусы, St, En – бастапқы және соңғы бұрышы}.

 

                 

Сурет 1. Доға

 

 

ClearDevice; {экранды тазалау}

Circle (x,y: integer; R: word); {шеңбердің радиусыR

(x,y) центр нүктелері }

CloseGraph; {графиканың жабылуы}

InitGraph (gd,gm: integer; Path: string); { графиканың инициализациясы, мұндағы

gd - графикалық драйвер,

gm - графикалық режим,

Path – файлды .bgi кеңейтілуімен орналастыру жолы}

Line (x1,y1,x2,y2: integer); {координаталары(x1,y1) және (x2,y2) болатын екі нүкте арқылы өтетін сызық сызу}

LineRel (dx,dy: integer); {сызықтарды салу: dx, dy – координатаның курсордың берілген координатасына өсуі}

                     

Сурет 2. LineRel процедурасының сипатталуы

LineTo (x,y: integer); {меңзердің берілген позициясынан және координатасы (x,y) болатын нүкте арқылы өтетін сызықты салу}

Moveto (x,y: integer); {берілген нүктенің координатасы}

OutText (T: string); {берілген нүктеге мәтін шығару}

OutTextXY (x,y: integer; T: string); {координатасы х, у нүктеге мәтін шығару}

Rectangle (x1,y1,x2,y2: integer); {тіктөртбұрышты салу: (x1,y1) және (x2,y2) – қарама-қарсы төбелерінің координатасы}

PutPixel (x,y: integer; c: word); {түсі с болатын (х, у) координаталы нүктені шығарады}

Сурет 3. Дисплей экранының координаталары

 

Графикалық функциялар

GetMaxX – х осі бойынша экранның максивальді өлшемін анықтайды.

GetMaxY - у осі бойынша экранның максивальді өлшемін анықтайды.

GetX - х осі бойынша берілген позицияның координатасы.

GetY - у осі бойынша берілген позицияның координатасы.

Машиналық координаталар

Машиналық координата жүйесінің басы, осьтің бағыттары, сонымен қатар монитордың координаталарының максимальді мәндері суретте көрсетілген.

Информация о работе Pascal программалау тіліндегі фрактальді графика