Пояснения к используемым функциям графической библиотеки




ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РФ

_________________________

МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ

(ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

_________________________

“КОМПЬЮТЕРНАЯ ГРАФИКА”

ЛАБОРАТОРНЫЕ РАБОТЫ

А.С. АЛЕЩЕНКО

Москва


 

ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ

1. Войти в директорию

…:\ …\COMGRAF

2. Открыть файлы-образцы, указанные в задании

FILNAME.PCC

 

Общие положения для выполнения работ

В рамках проводимых лабораторных работ требуется изучить и выполнить программы, соответствующие заданию, предъявить преподавателю результаты выполнения на экране, отразить в отчете изменения, вносимые в исходные файлы и проанализировать результаты внесенных изменений.

Общие требования к проектированию:

- необходимо использовать основные подходы структурного и модульного программирования как при оформлении программных текстов (листингов программ), так и при оформлении сопроводительной документации;

- алгоритмы требуется доработать таким образом, чтобы можно было проследить логику их работы в процессе выполнения программы;

- допускается выполнение лабораторных работ в любом варианте языка Си, представленного в лабораториях кафедры.


Лабораторная работа № 1

Графическая библиотека BORLAND C++ 3.0

Цель работы. Ознакомиться с основными приемами использования графической библиотеки для построения изображений средствами языка Си++.

Пояснения к используемым функциям графической библиотеки

 

В программе на языке C/C++ функции графической библиотеки становятся доступными после включения в текст программы ее заголовочного файла:

#include<graphics.h>

 

Первой функцией, вызов которой должен предшествовать вызовам любых других графических функций, является initgraph(int *graphdriver, int *graphmode, char *pathtodriver). Эта функция загружает в память графический драйвер, инициализирует его и переводит систему в графический режим. Первый ее параметр – адрес переменной с указанием типа драйвера. Для выполнения лабораторных работ этой переменной должно быть присвоено значение константы VGA. Второй параметр – адрес переменной с указанием графического режима VGAMED. Третий параметр задает маршрут к каталогу, в котором находится графический драйвер.

 

Перед тем как программа завершит свою работу необходимо вызвать функцию closegraph(), которая освобождает память, выделенную для графической системы, и возвращает экран в режим, в котором он был до вызова функции initgraph.

 

Функция setviewport (int left, int top, int right, int bottom, int chip) устанавливает текущее окно для графического вывода. Графическим окном называется та часть экрана, в которой происходит рисование. И если последний параметр функции равен 1, то вне этой области изображение будет отсекаться. Границы окна устанавливаются с помощью первых четырех аргументов функции в пикселах. При программировании графики следует учитывать, что начало координат графической системы находится в левом верхнем углу экрана. Ось X направлена вправо, ось Y – вниз. Разрешение экрана в режиме VGAMED составляет 640 пикселов по горизонтали и 350 по вертикали.

 

Функция clearviewport() очищает окно графического вывода.

 

Вызов setcolor(int color) устанавливает текущий цвет для рисования. В качестве аргумента может быть использовано числовое значение цвета или его символьное имя.

 

 


 

Числовое значение Символьное имя
  BLACK черный
  BLUE синий
  GREEN зеленый
  CYAN голубой
  RED красный
  MAGENTA пурпурный
  BROWN коричневый
  LIGHTGREY светло-серый
  DARKGREY темно-серый
  LIGHTBLUE светло-синий
  LIGHTGREEN светло-зеленый
  LIGHTCYAN светло-голубой
  LIGHTRED светло-красный
  LIGHTMAGENTA светло-пурпурный
  YELLOW желтый
  WHITE белый

 

 

Функция line(int x1, int y1, int x2, int y2) соединяет две точки отрезком, используя текущий выбранный цвет.

В режиме VGAMED имеется две страницы графического вывода с индексами 0 и 1. В каждой из них можно рисовать, но отображаться на экране одновременно может только одна. Процесс рисования может занимать некоторое время, сама же смена страниц происходит мгновенно. Этой особенностью пользуются для достижения эффекта мультипликации. Допустим, на экране в некоторый момент отображается страница 0. Объявляем активной, то есть той, в которой будет происходить рисование (но не обязательно отображение!), страницу 1. Рисуем в ней следующий кадр. При этом изображение на экране меняться не будет, а функции рисования будут воздействовать только на хранящуюся в памяти картинку. После того как новое изображение сформировано, объявляем страницу 1 видимой. Кадр на экране сменился. Подобным образом процесс продолжается, но теперь уже для страницы 0.

 

Функция setactivepage(int page) делает указанную страницу активной.

Функция setvisualpage(int page) делает указанную страницу видимой.

 

ЗАДАНИЕ

Разработать программу построения пространственной прозрачной фигуры линиями заданного цвета (цвет и размеры задаются с клавиатуры) в соответствии с вариантом. Программа должна предусматривать задание с клавиатуры цвета и опорного размера, выбранного студентом и обеспечивающего вычисление остальных размеров фигуры. Параметры фигуры, не определенные в задании, выбираются студентом.

ВАРИАНТЫЗАДАНИЙ

Вариант Фигура Дополнительные действия
1. Пирамида с прямоугольным треугольником в основании 2 боковые грани вертикальные, высота равна удвоенной стороне треугольника
2. Пирамида с прямоугольником в основании Вершина проецируется в центр прямоугольника, высота - произвольная константа
3. Пирамида с квадратом в основании Высота равна стороне квадрата
4. Параллелепипед с квадратом в основании Высота равна половине стороны основания
5. Призма с правильным треугольником в основании Боковые грани вертикальные, высота равна удвоенной стороне треугольника
6. Призма с прямоугольным треугольником в основании Боковые грани вертикальные, высота равна удвоенной стороне треугольника
7. Призма с прямоугольником в основании Боковые грани наклонные, Высота - произвольная константа
8. Пирамида с равнобедренным треугольником в основании 2 боковые грани вертикальные, Высота - произвольная константа



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-22 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: