Курстық жұмыс: Анимация құру
Мазмұны
I. КІРІСПЕ.....
II. ТЕОРИЯЛЫҚ БӨЛІМ.С++ ГРАФИКАЛЫҚ МҮМКІНДІКТЕРІ.......
1.1 Компьютер экрандағы нүктелердің координаталары...
1.2 Бейнемен жұмыс....
1.3 Экрандық обьект..
2 АНИМАЦИЯ ҚҰРУ...
Функция графигін тұрғызу....
Экрандағы қозғалысты бейнелеу..
3 ДИНАМИКАЛЫҚ АЙНЫМАЛЫНЫҢ КӨМЕГІМЕН ФИГУРАЛАРДЫҢ БЕЙНЕЛЕРІН ҚАЛЫПТАСТЫРУ ЖӘНЕ ОРЫН АУЫСТЫРУ.
3.1 Мәтіннің орнын ауыстыру...
3.2 Экрандық обьектілердің орнын ауыстыру..
3.3 Координат құрылымының алмасуы...
3.4 Бейнебетпен жұмыс..
ҚОРЫТЫНДЫ....
III. ӘДЕБИЕТТЕР ТІЗІМІ.... ҚОСЫМША....
1 С++ ГРАФИКАЛЫҚ МҮМКІНДІКТЕРІ
Қосымша сандық есептеудің ең қызықтысы болып компьютер экранында графикалық обьектілермен жұмыс істеу болып табылады.
Экран - үлкен шамадағы нүктелерден тұратын тік төрт бұрышты аймақ. Графикалық режимде кез-келген нүктенің түсін өзгертуге мүмкіндік бар. Әр түрлі түске боялған нүктелер жолақтарды, текстерді және өзге бейнелерді жасай алады. С тілінде экранға әр түрлі графиктік фигураларды (сызық, шеңбер, тік төрт бұрыш) салу үшін гафиктік режимді инициализациялау керек.
Графикада тапсырманы шешпес бұрын біз мынаны есте сақтауымыз қажет:
Графикалық режимде экран өз алдына нүктелер бір тұтасығын қояды, олардың әрқайсысы 16 түстің біреуімен боялуы мүмкін;
Координат нүктесі солдан оңға қарай және жоғарыдан төменге өсуі мүмкін. Сол жақ жоғарғы нүктесі(0,0) координат иемденеді, ал оң жақ төменгісі-(639,479);
Программа экранға графиканың примитиві (сызықтар, айналасын, тік бұрыш) шығару үшін, графикалық режимді міндетті түрде инацилиздеу керек.
Программаның графикалық режимінің шаблоны мына түрде беріледі:
//графикалық программаның шаблоны
#include
#include
#define PATHTODRIVER "c: \\borlandc\\bgi\\"
void main(void)
{
int gdriver = DETECT; // драйвер
int gmode; // режим
int errorcode; // қате коды
initgraph(sgdriver, Sgmode, PATHTODRIVER); errorcode = graphresult();
if (errorcode != grOk) // инициализация қатесі
// графикалық режим {
printf("Ошибка: %d\n", errorcode);
puts("Программаны аяқтарда батырмасын басыңыз'
getch();
return;
// ары қарай программа инструкциясы
closegraph(); //Графикалық режимнің аяқталуы
TImageList
Графикалық бейнелердің өлшемдерінің ұқсастығына және K *k, бірдейлілігіне байлансты арнайы жиында бізге керекті бір-біріне ұқсас суреттерді интервалдық мәні 0-ден п-1 индексі арқылы таңдауға болады. Графикалық жиын үлкен биттік бейнені немесе пиктограмма салу кезінде эффективті қызмет көрсетуде қолданылады .
1.1 Компьютер экранындағы нүктелердің координаттары
Графикалық обьектілердің қалай жұмыс істейтіндігін түсіну үшін ең бірінші біз компьютер экранында нүктелер қалай орналасқандығын білуіміз қажет. Экран екі өлшемді обьект болғандықтан, сол себепті ондағы нүктелер х және у координатасымен беріледі.
Экрандағы нүктелер пиксель деп аталады. Олардың саны әр түрлі болуы мүмкін. Ол монитордың сапасына байланысты болады. Координата бас нүктесі экранның сол жақ жоғарғы бұрышында орналасқан Х осінің ұзындығы -640 нүктеге, ал У осінің ұзындығы – 480 нүктеге тең. Х осі оңға қарай , У осі төменге бағытталған.
Компьютер экранындағы координат бастамасы оның сол жақтағы жоғарғы бұрышында орналасады – анықтау бойынша бұл нүкте (0,0). Х координатасы солдан оңға дейін ұлғаяды , бірақ у координатасы – жоғарыдан төмен .
Компьютер экранында тек қана соңғы нүкте саны ғана таныстырылуы мүмкін. Нақты нүкте саны сіздің видеокартаңыздың типіне байланысты болады. Мысалы: егерде сіздің компьютеріңізде экрандық рұқсат 1024*768 болса, онда сіздің экраныңыз 1024 нүкте горизонталь және 768 вертикаль нүктелерден тұратын болғандығы. Компьютер экранының өлшеміне байланысты , компьютер берілген бір рұқсат бойынша жұмыс істейді.
Типтік экрандық рұқсаттар.
Осындай координат системасының минималды бірлігі пиксель (pixel) болып табылады.
Координаттарды былай анықтауға болады, пиксельдің орнына дюймді немесе сантиметрді қолдануға болады. Пиксельдік жүйе бойынша нүкте координаттары пиксельдегі ара-қашықтықпен анықталады, яғни координат басы экранның сол жақ жоғарғы бұрышы анықталады.
1.2 Бейнелермен жұмыс
Бейнелермен жұмыс кезінде статикалық бейнелерді экранда формирлеп, оларды бірнеше әртүрлі видеобеттерде есте сақтау және олардың қажетті өлшемі бойынша қажетті беттерді дайындау керек.Әр қилы бейнелерді формирлеп және оларды ОП- да немесе файлда есте сақтап, содан кейін ғана экранға шығаруға болады. Осы бейнелерді экранда қозғалтуға, орнын ауыстыруға болады. Егерде бірнеше фаз қозғалысты есте сақтайтын болсақ, осы бейнелердің қозғалысын барлық обьектілерден және олардың бөлшектерін қосқан кезде иллюзия қозғалысын құруға болады. Сақтауда және бейнелерді қозғалту кезінде динамикалық айнымалы қажет болады. Оларды графикалық режимде экран бөліктерін сақтау кезінде қолданылады.
Мысалы: бейнені қозғалту үшін немесе фрагментті сақтау үшін.
Бейнені салу үшін мына келесі функцияны қолдануға болады:
1) нүкте арқылы: putpixel;
2) сызық арқылы: line,linerel, lineto, drawpoly;
3) тік бұрыш фигурасы :bar, bar3d, rectangle;
4) қисық сызықты фигурасы:arc, circle, ellipse, fillellipse, pieslice, sector.
Бейнені сақтауға getimage, imagesize, putimage функциясы қолданылады.
Биттік бейнені сақтау үшін алдымен қажетті өлшем берілу қажет, яғни malloc функциясы көмегімен. ОП қажетті өлшемді анықтау, берілген тікбұрыш экранындағы биттік бейнені сақтау үшін imagesize функциясы көмегімен іске асады.
Imagesize функциясының прототипі:
Unsigned far imagesize (int left, int top, int right, int bottom);
left, top- тік бұрыштың сол жақ бұрышындағы координаты;
right, bottom- тік бұрыштың оң жақ төменгі бұрышындағы координаты.
Getimage функциясы ОП-дағы биттік бейнені тік бұрышты экран бөлігін сақтайды, анықталған координаттармен, яғни олардың сол жақ жоғарғы жағы және оң жақ төменгі бұрышын.
Getimage функциясының прототипі:
Void far gitimage (int left, int top, int right, int bottom. Void far * bitmap);
Putimage функциясы экранда берілген орында тік бұрыштың бейнесін шығару үшін арналған.
Putimage функциясының прототипі:
Void far Putimage(int left, int top, Void far * bitmap, int op);
Ор=0 мәнін қолданғанда экранда бейненің көшірмесі шығады;
ор=1 ескі бейне экран бетінен тазартылады.
• Сурет – графика жиынын құрайды, ол кез-келген графикалық бейнелердің класстарын құрауы да мүмкін. Сонымен TPicture жиын классы биттік бейне құрайды, пиктограмма , метафайл немесе кейбір графикалық типтерді құрайды. Суреттермен жұмыс істейтін болсаңыз сіз графикалық обьектінің TPicture жиыныны арқылы жұмыс істейсіз..
Биттік бейнені көшіру
С++ -те бейнені графикада көшіру төрт әдіспен атқарылады. Яғни олар мыналар.
Қажетті нәтиже Әдіс
Графиканы толық көшіру Draw
Масштабтау арқылы көшіру StretchDraw
Канваның тікбұрышты бөлігін көшіру CopyRect
Расторлы операциямен көшіру BrushCopy
1.3 Экран обьектісі
Графиканы жете меңгеру үшін мен экрандық обьектілердің класын дайындадым.
Бұл класс franca.h.бастапқы файлдан құралған. Осылардың кейбірі:
• ақпараттық рамкалар
• квадраттар
• айналасы
Экрандағы квадраттар және айналасы олардың центрі бойынша анықталады, ал рамкалары- сол жақ жоғарғы бұрыш координатасымен.
Экрандық бейнелер үшін келесі операцияларды орындауға болады:
• Оларды экранның кез –келген орнына жылжытуға болады.
Place(x,y) функциясы (х,у) координата нүктесінде обьектіні ауыстырады. Мысалы: ball . place (20.20);
• Экранда оларды бейнелеуге болады (обьектілер автоматты түрде бейнеленбейді ). Show функциясы обьектіні ағымды экран нүктесінде бейнелейді (салады) .
Мысалы: ball. Show( );
• Оларды экранда бетінде тазалап тастауға болады. Erase( )функциясы обьектіні жояды (тазалайды), оны ақ түске бояйды.
Мысалы: ball. Erase(); Обьектіні жылжытар(орын ауыстыру) алдында оны өшірмеу қажет.
• Олардың өлшемін өзгертуге болады. Үнсіз келісім бойынша экран обьектісі 20 пиксельге тең. Оның өзгеруіне бір немесе екі аргументтің тапсырмасы қажет болады. Өлшемді өзгерту үшін екі resize () және absize () функциясы қажет.
• Олардың түсін өзгертуге болады. Ол үшін color( ) функциясы қажет болады. Негізінде үнсіз келісім бойынша экрандық обьектілер құрылуы бойынша ішкі жағы ақ түспен боялған, ал контуры қара түске боялған. Бір түсті белгілей тұра, обьектіні осы түс бойынша бояп, ішкі жағын да , контурды да солай бояуға болады. Мысалы: ball. Color(2);. Обьектіні екі түспен бояуға болады.Мысалы: ball. Color(2,4);.
Box экрандық обьектісі арқылы кейбір арнайы операцияларды орындауға болады:
• Ақпараттық рамка ішіне хабар енгізуге болады. Мысалы: егер message ауыспалы
Box типін жарияласақ , онда message. Say( “Here!”)инструкциясы; бұл ішкі рамкада “Here” хабарының пайда болуына себепкер болады. Аргумент сапасы бойынша барлық сандар немесе жүзуші нүкте сандарын қолдануға болады.
Информациялы рамканың іс-қимылы (әрекеті) басқа экрандық обьектілердің іс-қимылынан айырмашылығы бар, бірақ олар автоматты түрде пайда болады. Тек қана егерде біз Say( ) функциясын қолдансақ қана. Басқа сөзбен айтқанда , рамканы экранға шығарып жатпаймыз. Сонымен қатар, рамка координаты өзінің сол жақ жоғарғы бұрышына қатынасады, центріне емес.
1-кесте
Экрандық обьектілерді басқару функциялары.
Хабар Анықтама Аргументтер
Place (float,float)
Show()
Erase()
Resize(float)
Absize(float)
Color(int,int)
Scale(float,float)
Origin (float,float)
Обьектіні қозғалту
Экранға обьектіні шығару
Экранды обьектіден тазарту
Обьектінің өлшемін өзгерту
Обьектінің абсолютті өлшемін өзгерту
Обьектінің түсін өзгерту
Масштабты өзгерту
Есеп берудің бастамасын өзгерту
Х,у координаты
Жоқ
Жоқ
Жаңа өлшем
Жаңа өлшем
Түс
Жаңа масштаб
Х,у координаты
Ақпараттық рамкалар сонымен қатар экрандық обьектілер болып саналады, оларға place(), show() және erase() функциясын қолдануға болады.
Circle() обьектісін жариялаған кезде үнсіз келісім бойынша, оның айналасы 20 пикселге тең.
Содан кейін оның өлшемін өзгертуге болады. Мысалы: келесі фрагментте диаметрі 10 пиксель келтірілген:
Circle mycircle;
Mycircle. Resize(10);
Түс
Экран обьектілерін әр түрлі түстерге бояуға болады. Обьектіде екі түс қатысуы мүмкін – ішкі және контур түсі.
Мысалы: айналасы қара, ішкі жаға қызыл болуы мүмкін. Түстер келесі сандармен кодталады:
0 – ақ
1 - қызыл
2 – ашық жасыл
3 – көгілдір
4 – ашық көк
5 – күлгін
6 – сары
7 – қараша
TPaintBox
Бұл функция бізге графикада тек қана тік төрт бұрышты аймақта сурет салуға мүмкіндік береді.Егерде TpaintBox қолданылса, онда программада сурет салу жолдың жоғарғы жағында атқарылады, яғни OnPciinl көмегімен.Түс және шрифт Color и Font арқылы орындалады. Егерде барлық формада сурет салғыңыз келсе, онда OnPaint формасын қолданған жөн.
Экран обьектілерін құрған кезде үнсіз мына жағдайлар орындалады:
♦ Ақпараттық рамкалар бірінен кейін бірі вертикалды экранның оң жағында орналасады;
♦ Барлық обьектілер ақ, қара контурмен құралады.
Координаттар пиксельде берілгеніне қарамастан, экрандық обьектілер координат және өлшем жүзуші нүкте санын қолдайды.
Келесі программалық кодттың фрагменті нүктені (50,50) орталықта құрып және оны экранда көрсетеді.
#include“franca.h”
Void mainprog()
{
Int x,y;
X=50;
Y=50;
Circle mycircle;
Mycircle. Place(x,y);
Mycircle.show()
}
Программадағы қолданған барлық экран обьектілер алдын – ала жариялануы керек.
Кез-келген сурет салу, яғни нүктені экран ауданынан басқа жерде салуымыз, бізге диалогтық терезеден қате жайлы хабардың пайда болуына әкеліп соқтырады, яғни Object out of range.
(х немесе у) координаты берілген қателік экранның сол жақ бұрышында пайда болады.
Енді мен “Hello World” хабарын графикалық Windows-тің графикалық интерфейс жүйесін пайдаланып экранға шығарамын.
♦ File(New Application) менюін таңдап, жаңа проект құрамыз. Сонымен жаңа конструктор формасын ашамыз. Обьект инспекторы оның сыйымдылығын көрсетеді.
♦ Caption сыйымдылығынан Properties бетін таңдаймыз. Онда оның мағынасы “Hello World” екенін байқайсыз.
Осыдан кейін біраз командаларды орындап, ақыр соңында Message кнопкасын басамыз. Exit кнопкасы программа жұмысын аяқтайды, яғни оның басты терезесін жабады. Төменде қарастырылған программа көрсетілген:
2 Анимация құру
Енді біз сандық деректерді өңдеуді, экрандық обьектілердің координатасын санауды білсек, енді бізге оларды қозғалтып, анимация құру қажет.
Анимация құру процесі өте қарапайым. Ол келесі этаптардың қайталануынан құралады:
1. Экранда берілген нүктеде обьектіні қозғалту;
2. Берілген аз уақытта обьектіні экранда шығару;
3. Обьектіні жою немесе құрту.
Егерде бір уақытта бірнеше экрандық обьектілердің орнын ауыстыру керек боласа, онда программа ұзын және көптеген қайталанулардан тұратын болуы қажет. Осы жағдайды болдырмас, біз обьект типі Stage- жаңа экран обьектілерімен танысамыз. Оның көмегімен біз бірнеше обьектіні бір обьект болып көрсету үшін пайдаланамыз.
Математикалық функцияда график құру
Обьектіні экранда құруды, координат және масштабын өзгертуді білсеңіз, онда сіз функция графигін құра аласыз. Берілген y=f(x)функциясын құрамыз, (xf(x)) координат маңында нүктені қозғалту.
Айталық, біз y=x²-x+1 интервалында х=-5 және х=20 нүкте аралығында функция графигін алғымыз келеді.
С++ функция тілінде математикалық функцияны анықтайық:
Floatf (float x)
{
Return x*x-x+1;
}
Сурет салу процедурасы өте қарапайым:
♦ dot обьектісін кішігірім ......
Мақала ұнаса, бөлісіңіз:
Ұқсас мақалалар:
» Курстық жұмыс: Бағдарламалау | Турбо Паскальдың графикалық мүмкіндіктері
» Курстық жұмыс: Экономика | Паскаль жүйесіндегі графика
» Курстық жұмыс: Бағдарламалау | Турбо-Паскальдағы графикамен жұмыс
» Курстық жұмыс: Бағдарламалау | Турбо Паскаль жүйесіндегі графика. Жұмыс істеп тұрған бағдаршамның бейнесін шығару
» Курстық жұмыс: Информатика | Графикалық ақпаратты экран терминалына шығару
» Курстық жұмыс: Бағдарламалау | Турбо Паскальдың графикалық мүмкіндіктері
» Курстық жұмыс: Экономика | Паскаль жүйесіндегі графика
» Курстық жұмыс: Бағдарламалау | Турбо-Паскальдағы графикамен жұмыс
» Курстық жұмыс: Бағдарламалау | Турбо Паскаль жүйесіндегі графика. Жұмыс істеп тұрған бағдаршамның бейнесін шығару
» Курстық жұмыс: Информатика | Графикалық ақпаратты экран терминалына шығару
Іздеп көріңіз: