Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364139
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62791)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21319)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21692)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8692)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3462)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20644)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Контрольная работа: Побудова ліній та точок з допомогою комп’ютерної графіки

Название: Побудова ліній та точок з допомогою комп’ютерної графіки
Раздел: Рефераты по информатике, программированию
Тип: контрольная работа Добавлен 10:08:19 17 октября 2009 Похожие работы
Просмотров: 27 Комментариев: 21 Оценило: 3 человек Средний балл: 5 Оценка: неизвестно     Скачать

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ

Бердичівський політехнічний коледж

Контрольна робота

з предмета “ Комп’ютерна графіка ”

(варіант №11)

Виконав: студент групи ПЗС-504

Лифар Сергій Олександрович

Перевірив

викладач: Козік Вадим Юрійович

м. Бердичів - 2007 р.


Зміст

1. Алгоритм побудови лінії.

2. Графічна бібліотека DirectX

3. Засобами бібліотеки Opengl побудувати довільну кількість довільного розміру точок на поверхні форми

Список використаної літератури


1. Алгоритм побудови лінії

Для побудування лінії необхідно застосувати аргумент команди glBegm - константу GL_LiNES, задаючий примітив "незалежний відрізок".

Для цього примітиву наступні в командних дужках вершини (тобто функції glvertex) задають попарно координати початку і кінця кожного відрізка прямої. Написавши коротенький алгоритм в програмному середовищі Delphi ми отримаємо лінію.

glBegin (GL_LINES);

glVertex2f (-1, 1);

glVertex2f (1 -1);

glVertex2f (-1, -1);

glVertex2f (1, 1);

glEnd;

Малюються два відрізки, сполучаючи кути вікна по діагоналях. Для збільшення товщини відрізків перед командними дужками потрібно вказати ширину лінії:

glLineWidth (2. 5);

Ця функція також повинна виноситися за командні дужки, у ліній можна усувати ступінчастість, що буду виконувати команда glEnable (GL_LINE_SMOOTH); згладжувати нерівності.

glLineWidth (15);

glEnable (GL_LINE_SMOOTH);

glBegin (GL_LINES);

glVertex2f (-0. 7, 0. 7);

викликом і без виклику і подивитеся результати роботи програми з glEnable (GL_LINE_SMOOTH). Отже, константа GL_LiNES задає примітив окремих відрізків, визначених вказівкою пар вершин. Зрозуміло, що кількість вершин повинна бути парною. Наступна константа - GL_LiNE_STRip - визначає примітив, коли перераховуванні вершини послідовно з'єднуються одна за одною. Код, що приводиться, пояснює відмінність цього примітиву від попередньої.

glBegin (GL_LINE_STRIP);

glVertex2f (-l -1);

glVertex2f (-1, 1);

glVertex2f (1, 1);

glVertex2f (l, -l);

glEnd;

Результат - буква П по межі вікна, що задається константою GL_LiNE_Loop, також послідовно з'єднуються перераховані вершини, проте остання вершина замикається з найпершою. Якщо в попередньому прикладі використовувати GL_LiNE__ Loop, буде побудований квадрат по межі вікна. У прикладах на відрізки ми поки використовували безперервну лінію. Для малювання пунктирною лінією перед командними дужками потрібно додати наступні рядки:

glLineStipple (1 $FOFO);

glEnable (GL_LINE_STIPPLE);

У функції glLinestipple перший аргумент - масштабний множник, другий аргумент задає шаблон штрихування (побітовим способом). За допомогою програмного середовища Delphiдуже легко можна побудувати - ще один приклад на використання штрихування (мал. 2. 1).

Мал. 2. 1. Декілька готових шаблонів штрихових ліній


Призначена для користувача процедура drawOneLine викликається для відтворення кожного окремого відрізка:

procedure TfrmGL. drawOneLine(xl, yl x2, y2: GLfloat);

begin glBegin(GL_LINES);

glVertex2f glVertex2f glEnd;

end;

(2 * xl / ClientWidth - 1. 0, yl (2 * x2 / ClientWidth - 1. 0 y2/ ClientHeight - 0. 5); / ClientHeight - 0. 5);

Змістовна частина коду перемальовування вікна виглядає так:

glColor3f (1. 0, 1. 0, 1. 0); // всі відрізки малюються білим // другий рядок: малюється 3 відрізки, все з різним штрихуванням

glEnable (GL_LINE_STIPPLE);

glLineStipple (1, $0101); // точковий

drawOneLine (50. 0, 125. 0, 150. 0, 125. 0);

glLineStipple (1 $OOFF); // штрихи

drawOneLine (150. 0, 125. 0, 250. 0, 125. 0);

glLineStipple (1 $1C47); // штріхпунктір

drawOneLine (250. 0, 125. 0, 350. 0, 125. 0);

// третій рядок: малюється три широкі відрізки з тим же штрихуванням

glLineWidth (5. 0); // задаємо ширину лінії

glLineStipple (1, $0101);

drawOneLine (50. 0, 100. 0, 150. 0, 100. 0);

glLineStipple (1 $00FF);

drawOneLine (150. 0, 100. 0, 250. 0, 100. 0);

glLineStipple (1 $1C47);

drawOneLine (250. 0, 100. 0, 350. 0, 100. 0);

glLineWidth (1. 0);

// в першому рядку малюється 6 відрізків, шаблон "пунктир/точка/пунктир", // як частини одного довгого відрізка, без виклику процедури

drawOneLine glLineStipple (1 $1C47);

glBegin (GL_LINE_STRIP);

for i: = 0 to 6 doglVertex2f ( 2 * (50. 0 + (i * 50. 0)) / ClientWidth - 1. 0, 75. 0 / ClientHeight);

glEnd;

// Четвертий рядок - аналогічний результат, але 6 отдельньк відрізків

for i: = 0 to 5 do

drawOneLine (50. 0 + i * 50. 0, 50. 0, 50. 0 + (i+l) * 50. 0, 50. 0); // п'ятий рядок - малюється один штрихпунктирний відрізок, множник = 5 glLineStipple (5 $1С47);

drawOneLine (50.0, 25.0, 350.0, 25.0);

Після виконання побудови такого алгоритму ми отримаємо з ліній картинку, що буду нагадувати бенгальський вогник.

glEnable (GL_LINE_STIPPLE) ;

For i := 1 to 100 do begin

glColor3f (random, random, random);

glLineStipple (random (5), random ($FFFF) ) ;

glBegin (GL_LINES);

glVertex2f (xpos, ypos) ;

glVertex2f (xpos + 0.5 * random * sin (random (360)),

ypos + 0.5 * random * cos (random (360)));

glEnd;

end;

2. Графічна бібліотека DirectX

Бібліотека DirectX, істотно розширює мультимедійні можливості комп'ютера. DirectX забезпечує доступ до функцій дисплея і аудіоплати, які дозволяють реалізувати в програмах реалістичну тривимірну графіку і вражаючі музичні і звукові ефекти. DirectX є набором інтерфейсів прикладного програмування (API), що забезпечують для програм Windows підтримку високопродуктивних технологій мультимедіа з апаратним прискоренням. Графічна бібліотека DirectX використовується в програмному середовищі Delphi для відтворення та підключення Файли з растру DirectX, що надає зображенню багато - кольорової гами. DirectX бібліотека взаємодіє з іншими бібліотеками фірми Microsoft, його функція читання растру заснована на коді для методів класу TBitmap у бібліотеці DirectX. За допомогою такої досить потужної графічної бібліотеки можна утворювати декілька текстур на одній формі наприклад в зображенні такого зображення як земля вид з космосу який ми бачимо на рис. 1.

(рис. 1)

Дана бібліотека має свою базу вже готових зображень - це можуть бути різного виду фігури, предмети тощо, для того, щоб їх добавити до проекту необхідно знати лише код даної фігури. Також DirectX дозволяє точно визначити апаратні можливості комп'ютера, а потім встановлює відповідні параметри додатку. Це дозволяє виконувати мультимедійні програми на будь-якому комп'ютері під управлінням операційної системи Windows з устаткуванням і драйверами, сумісними з DirectX, а також забезпечує оптимальне використовування устаткування цими програмами. API-інтерфейси DirectX забезпечують доступ до новітніх можливостей високопродуктивних пристроїв, таких як мікросхеми прискорення тривимірної графіки і звукова платня. Ці інтерфейси управляють функціями нижнього рівня, у тому числі прискоренням двовимірної графіки, підтримкою пристроїв введення, таких, як джойстик, клавіатура і миша, а також мікшируванням і висновком звуку.

3. Засобами бібліотеки Opengl побудувати довільну кількість довільного розміру точок на поверхні форми

Використавши програмне забезпечення Delphiя побудував довільну кількість точок на поверхні форми згідно варіанту використавши такий набір алгоритмів даної програми щодо побудування точок на формі надавши точкам різного кольору, лістинг програми матиме такий вигляд:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

OpenGL;

type

TfrmGL = class(TForm)

procedure FormCreate(Sender: TObject);

procedure FormPaint(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure FormKeyPress(Sender: TObject; var Key: Char);

private

hrc: HGLRC;

end;

var

frmGL: TfrmGL;

Vert:array[1..6,1..10] of GLfloat; //оголосили масив з параметрами 10-ти точок

mx,my:byte; //коефіцієнти збільшення/зменшення

implementation

{$R *.DFM}

procedure TfrmGL.FormPaint(Sender: TObject);

var

i:byte;

begin

wglMakeCurrent(Canvas.Handle, hrc); //Встановили контекст відображення

glViewPort (0, 0, ClientWidth, ClientHeight); // встановили область відображення

glClearColor (0.5, 0.5, 0.5, 1.0); // задали колір фону

glClear (GL_COLOR_BUFFER_BIT); // Очистили буфер кольору

glEnable(GL_POINT_SMOOTH); //активізувати згладжування точок

glScalef (my/mx, -my/mx, 1.0); //виконуємо масштабування

for i:= 1 to 10 do

begin

glPointSize (vert[4,i]); // задали розмір точки

glColor3f (vert[1,i], vert[2,i], vert[3,i]); // задали колір для примітивів

glBegin (GL_POINTS); // розпочинаємо побудову

glVertex2f (vert[5,i],vert[6,i]); //будуємо точку

glEnd; // закінчуємо побудову

end;

glScalef (mx/my, -mx/my, 1.0); //повертаємо систему в початкове положення

SwapBuffers(Canvas.Handle); // вміст буферу виводимо на екран

wglMakeCurrent(0, 0); //вивілбняємо контекст відображення

end;

{Формат пикселя}

procedure SetDCPixelFormat (hdc : HDC);

var

pfd : TPixelFormatDescriptor; //структура формату пікселя

nPixelFormat : Integer; //номер формату пікселя

begin

FillChar (pfd, SizeOf (pfd), 0); //онулили формат пікселя

pfd.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER; //встановили флаги

nPixelFormat := ChoosePixelFormat (hdc, @pfd); //активізували формат пікселя для нашого контексту відображення

SetPixelFormat (hdc, nPixelFormat, @pfd); //встіновили формат вікселя

end;

{Создание формы}

procedure TfrmGL.FormCreate(Sender: TObject);

var

i:byte; //кількість точок на екрані

begin

SetDCPixelFormat(Canvas.Handle); //встановили формат пікселя

hrc := wglCreateContext(Canvas.Handle); //створили контекст вдображення

randomize; //активізувати генератор випадкових змінних

for i:= 1 to 10 do

begin

vert[1,i]:=Random(10)/10; //R встановити коефіцієнти кольору

vert[2,i]:=Random(10)/10; //G

vert[3,i]:=Random(10)/10; //B

vert[4,i]:=random(30); //pointSize

vert[5,i]:=(random(10)-random(10))/10; //X

vert[6,i]:=(random(10)-random(10))/10; //Y

end;

mx:=10; my:=10;

end;

Для попереднього практичного завдання варіанту забезпечити операцію масштабування використовуючи клавіші “+” та “-“

Далі згідно варіанту необхідно, щоб довільна кількість точок наближалась за допомогою натиску на клавішу і таким же чином точки віддалялися тобто виконувалося масштабування. Для більшої зручності ми виберемо клавіші на клавіатурі “+” та “-“, що само собою вже підрозумовує наближення та віддалення. Для вже існуючого лістингу вище вказаного допишемо такий алгоритм дій:

procedure TfrmGL.FormDestroy(Sender: TObject);

begin

wglDeleteContext(hrc); //знищили контекст відображення

end;

procedure TfrmGL.FormKeyPress(Sender: TObject; var Key: Char);

begin

if key ='-' then mx:=mx+1;

if key ='+' then mx:=mx-1;

FormPaint(Sender);

end;

end.

Після написання цих команд програма буде виконувати масштабування довільної кількості точок на формі, які вказані на рис.1 та рис. 2:

(рис. 1)


На рис. 1 показане вже генерована програма яка виконує масштабування віддалення при натиску на клавішу “-“, на рис.2 ви бачите наближення довільних точок при натиску на клавішу “+”

(рис. 2)


Список використаної літератури

1. Блінова Т.О., Порєв В.М. Комп’ютерна графіка / За ред. В.М.Горєва. – К.: Видавництво “Юніор”, 2004. – 456с., іл.

2. С.В.Глушаков, Г.А.Крабе Компютерная графика, Харьков 2002

3. OpenGl, технология ставшая символов, Учебник в примерах.

4. Конспект лекцій.

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Хватит париться. На сайте FAST-REFERAT.RU вам сделают любой реферат, курсовую или дипломную. Сам пользуюсь, и вам советую!
Никита13:12:34 02 ноября 2021
.
.13:12:33 02 ноября 2021
.
.13:12:32 02 ноября 2021
.
.13:12:32 02 ноября 2021
.
.13:12:31 02 ноября 2021

Смотреть все комментарии (21)
Работы, похожие на Контрольная работа: Побудова ліній та точок з допомогою комп’ютерної графіки

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(287988)
Комментарии (4159)
Copyright © 2005-2021 HEKIMA.RU [email protected] реклама на сайте