Компьютерная графика
Компьютерная графика и аппаратно-программное обеспечение для получения разнообразных изображений: двухмерных и трехмерных. Операторы языка и типы констант. Значения переменных в соответствии с указанным спецификатором формата, шрифт и ориентация текста.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 13.12.2011 |
Размер файла | 25,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Компьютерная графика
Введение
Компьютерная графика на сегодняшний день уже вполне сформировалась как наука. Существует аппаратное и программное обеспечение для получения разнообразных изображений - от простых чертежей до реалистичных образов естественных объектов. Компьютерная графика используется практически во всех научных и инженерных дисциплинах для наглядности восприятия и передачи информации. Знание её основ, в наше время, необходимо любому ученому и инженеру. Она властно вторгается в бизнес, медицину, рекламу, индустрию развлечений и многие другие области.
Особый интерес к компьютерной графике проявляется тогда, когда графическое изображение появляется в результате собственной деятельности программиста. Принцип “сделай сам” применим ко всем видам искусства, но в компьютерной графике имеется уникальная возможность получить в собственное распоряжение очень точного и исполнительного помощника, который может создать любые рисованные картинки, нужно только проинструктировать его как это сделать. И хотя в последнее время появились огромное количество программных продуктов, предназначенных для перечисленных и многих других задач, вряд ли появится программное обеспечение для всех конкретных случаев, так что и в будущем необходимость программирования графики сохранится.
1. Краткое введение в С++
"Язык формирует наш способ мышления и определяет, о чем мы можем мыслить." Б.Л. Ворф
Название C++ - изобретение совсем недавнее (лета 1983его). Более ранние версии языка использовались начиная с 1980ого и были известны как "C с Классами". Первоначально язык был придуман потому, что автор хотел написать модели, управляемые прерываниями, для чего был бы идеален Simula67, если не принимать во внимание эффективность. "C с Классами" использовался для крупных проектов моделирования, в которых строго тестировались возможности написания программ, требующих минимального (только) пространства памяти и времени на выполнение. В "C с Классами" не хватало перегрузки операций, ссылок, виртуальных функций и многих деталей. C++ был впервые введен за пределами исследовательской группы автора в июле 1983его; однако тогда многие особенности C++ были еще не придуманы. Название C++ выдумал Рик Масситти. Название указывает на эволюционную природу перехода к нему от C. "++" - это операция приращения в C.
1.1 Компьютерная графика
C++ - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, C++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы. Ключевым понятием C++ является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают скрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций.
В своё время, лет двадцать назад, фантазия причислить компьютер к «бытовым» устройствам могла возникнуть лишь в очень умной - и слегка нездоровой - голове. Сегодня бесчисленные воплощения компьютерной идеи вполне уместны не только в рабочем кабинете. Несмотря на двадцатилетний стаж в качестве «домашнего» устройства, компьютер продолжает оставаться волнующей экзотикой. И более того, ухитряется даже подчинить себе всё вокруг, от прочей техники до своего хозяина- человека. Ни одна выдумка человечества не смогла породить вокруг себя столько шума! В настоящее время компьютер выполняет до нескольких миллионов операций в секунду. С достижением таких качеств компьютерная технология получила бурное развитие и, естественно, широкое применение фактически во всех отраслях деятельности человека.
Самая важная функция компьютера -- обработка информации. Особо можно выделить обработку информации, связанную с изображениями. Она разделяется на три основные направления: компьютерная графика (КГ), обработка изображений и распознавание изображений .
Задача компьютерной графики -- визуализация, то есть создание изображения. Визуализация выполняется исходя из описания (модели) того, что нужно отображать. Существует много методов и алгоритмов визуализации, которые различаются между собою в зависимости от того, что и как отображать. Например, отображение того, что может быть только в воображении человека -- график функций, диаграмма, схема, карта. Или наоборот, имитация трехмерной реальности -- изображения сцен в компьютерных развлечениях, художественных фильмах, тренажерах, в системах архитектурного проектирования. Важными и связанными между собою факторами здесь являются: скорость изменения кадров, насыщенность сцены объектами, качество изображения, учет особенностей графического устройства.
Образцы компьютерной графики известны уже каждому. Приобрели распространение, например, разнообразные компьютерные игры. Значительную роль в них играет анимация, реалистичность изображений, совершенство способов ввода-вывода информации. Здесь следует отметить, что во многих компьютерных играх реализованы идеи и методы, которые ранее были воплощены в профессиональных дорогостоящих системах, например, в тренажерах для летчиков.
Широко используется компьютерная графика в кино. Одним из первых известных фильмов был фильм "Звездные войны". Он был создан с помощью суперкомпьютера Сгау. Этапы дальнейшего развития компьютерного кинематографа можно проследить по таким фильмам, как "Терминатор-2", "Вавилон 5", "Леке" и десяткам (если уже не сотням) других. До недавнего времени технологии компьютерной графики использовались для спецэффектов, создания изображений экзотических чудовищ, имитации стихийных бедствий и других элементов, которые являлись лишь фоном для игры живых актеров. В 2001 году вышел на экраны полнометражный кинофильм "Финальная фантазия", в котором все, включая изображения людей, синтезировано компьютером -- живые актеры только озвучили роли за кадром.
Подходя к курсовой работе скажем, что основой общения между человеком и компьютером является монитор, с помощью которого происходит визуализация тех или иных объектов, будь то графики функций, текстовая информация или таблицы данных. Таким образом основная задача каждого программиста - освоение работы с компьютерной графикой.
Существуют двухмерные и трехмерные изображения. Работа с трехмерной графикой просто выше классом работы с двухмерной, но в общем и то и другое общее поле сражений.
В свое время работа с трехмерными изображениями вызывало довольно большие проблемы. Необходимо было создавать свои собственные функции (алгоритмы) для вывода основных фигур.
Сейчас появилось огромное количество библиотек, которые выполняют эти операции: заполнение полигонов, построение линий, кривых и окружностей. Например, с помощью окружности можно построить - тор, трехмерное изображение. Единственным недостатком использования таких библиотек является ограниченность скорости построения. То есть, стандартные библиотеки в связи с проверкой разных условий замедляют построение графических объектов, хотя и работают напрямую с видеопамятью. Разработав программу на языке ассемблера, мы добьемся гораздо большей скорости, чем используя стандартные библиотеки Borland C++.
Но основной целью курсовой работы является создание программы, которая выполняла бы такие операции в трехмерном пространстве, как перенос, поворот, масштабирование или перенос камеры. Поэтому программа разрабатывалась в среде DOS на языке программирования Borland C++, версия компилятора 3.11, использовалась графическая библиотека graphics.lib, файл определений graphics.h.
1.2 Структура программы
В с++ есть шесть классов лексем: идентификаторы, ключевые слова, константы, строки, операторы и прочие разделители. Символы пробела, табуляции и новой строки, а также комментарии (собирательно - "белые места"), как описано ниже, игнорируются, за исключением тех случаев, когда они служат разделителями лексем. Некое пустое место необходимо для разделения идентификаторов, ключевых слов и констант, которые в противном случае окажутся соприкасающимися.
Если входной поток разобран на лексемы до данного символа, принимается, что следующая лексема содержит наиболее длинную строку символов из тех, что могут составить лексему.
Символы /* задают начало комментария, заканчивающегося символами */. Комментарии не могут быть вложенными. Символы // начинают комментарий, который заканчивается в конце строки, на которой они появились.
Идентификаторы .
Следующие идентификаторы зарезервированы для использования в качестве ключевых слов и не могут использоваться иным образом:
asm auto break case char
class const continue default delete
do double else enum extern
float for friend goto if
inline int long new operator
overload public register return short
sizeof static struct switch this
typedef union unsigned virtual void
while
Идентификаторы signed и volatile зарезервированы для применения в будущем.
Константы
Константами называются перечисление величин в программе. В языке СИ разделяют четыре типа констант: целые константы, константы с плавающей запятой, символьные константы и строковыми литералы. Целая константа: это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целую величину в одной из следующих форм: десятичной, восьмеричной или шестнадцатеричной. Десятичная константа состоит из одной или нескольких десятичных цифр, причем первая цифра не должна быть нулем (в противном случае число будет воспринято как восьмеричное). Восьмеричная константа состоит из обязательного нуля и одной или нескольких восьмеричных цифр (среди цифр должны отсутствовать восьмерка и девятка, так как эти цифры не входят в восьмеричную систему счисления). Шестнадцатеричная константа начинается с обязательной последовательности 0х или 0Х и содержит одну или несколько шестнадцатеричных цифр (цифры представляющие собой набор цифр шестнадцатеричной системы счисления: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)
графика изображение константа язык
2. Описание алгоритма
Выполнение программы начинается с выполнения функции main().
В графическом режиме экран представляет собой совокупность точек, каждая из которых может быть окрашена в один из 16-ти цветов. Координаты точек возрастают слева направо и сверху вниз. Левая верхняя точка имеет координаты (0,0), правая нижняя -- (639,479).
Для того чтобы программа могла выводить на экран графические примитивы (линии, окружности, прямоугольники), Инициализируем графику, устанавливаем режим VGA, VGAMED, то есть разрешение экрана (в точках) 640 на 480.
Выполнить такую задачу удобнее на языке высокого уровня, в частности С++. Язык С++ считается языком системного программирования. Он наиболее эффективен при решении задач системного программирования , хотя он, безусловно, удобен и при написании прикладных задач. Для инициализаций используем initgraph:
void initgraph(int* Driver, int* Mode, char* Path);
Инициализирует графический режим. Параметр Driver определяет драйвер видеосистемы, параметр Mode -- режим работы видеосистемы, параметр Path -- путь к файлу драйвера.
Обычно в качестве параметра Driver используют указатель на целую константу, значение которой равно detect. В этом случае функция initgraph сама определяет тип графического адаптера и устанавливает для него наилучший режим. Заголовочный файл: <graph.h>
Операторы языка С++ манипулируют переменными и константами в виде выражений. Переменные должны быть объявлены до их использования. В моей программе использованы следующие типы:
Char- символьные, Float- с плавающей точкой, Int- целые.
void line(int xl, int yl, int x2, int y2);
Вычерчивает линию из точки с координатами xl, yl в точку с координатами х2+cos(x), у2+sin(x) т.е. крутим наши стрелки. Цвет линии задаем при помощи функции setcolor, стиль --при помощи функции setlinestyle. Заголовочный файл: <graph.h>. С помощью оператора Line чертим стрелки наших часов:
line(320,240,320+120*cos(a1),240+120*sin(a1)); -часовые стрелки.
line(320,240,320+150*cos(a2),240+150*sin(a2)); - минутные стрелки.
line(320,240,320+175*cos(a3),240+175*sin(a3)); -секундные стрелки.
После выводим системную дату :
settextstyle(0,0,1); outtextxy(290,310,g);
if((d.da_day)<10) outtextxy(280,322,gg);
else outtextxy(283,322,gg); , если день больше 10 то смешаем координаты, чтоб отображались все символы. Для того чтобы изобразить циферблат используем circle:
circle(320,240,215); setfillstyle(9,8);
floodfill(320,240,WHITE); circle(320,240,200);
setfillstyle(1,0); floodfill(320,240,WHITE);
Выводим две окружности , радиус одного меньше другого закрашиваем каждую окружность с помощью функций floodfill.
void outtextxy(int x, int y, const char* Текст);
Устанавливает указатель вывода в точку с координатами (х, у) и выводит от нее строку Текст, при этом указатель вывода своего положения не меняет, т. е. остается в точке с координатами (х, у).Цвет выводимых символов можно задать при помощи функции setcolor, шрифт -- settextstyle.Заголовочный файл: <graph.h> .
settextstyle(4,0,4); setcolor(15);
o(304,64,"12"); o(395,87,"1"); ,печатаем цифры от 1 до 12 по окружности.
В цикле do …. While вызывается функция date() и выводиться системная дата и время(в цифровом виде), используя getdate(&d);
sprintf(gg,"%02d.%02d.%d",d.da_day,d.da_mon,d.da_year);
settextstyle(0,0,2); date();
int scanf(const char* Формат, СписокАмресовПеременных);
Вводит с клавиатуры значения переменных, в соответствии с указанным спецификатором формата. Первая переменная получает значение в соответствии с первым спецификатором формата, вторая -- со вторым и т. д. В качестве параметра функции scanf должны передаваться адреса переменных, а не их имена.
Спецификатор |
Вводит |
|
%i %d |
Десятичное число со знаком |
|
%u |
Беззнаковое целое десятичное число |
|
%f %e |
Дробное число |
|
%s |
Строка символов |
|
%c |
Символ |
void settexstyle(int Шрифт, int Ориентация, int Размер);
Устанавливает шрифт, размер и ориентацию текста, выводимого функциями outtextxy и outtext. В качестве параметра Шрифт можно использовать одну из перечисленных ниже констант.
Константа |
Значение |
Шрифт |
|
DEFAULT FONT |
0 |
Стандартный. Каждый выводимый символ формируется в квадрате размером 8 на 8 пикселов. |
|
TRIPLEX FONT |
1 |
Шрифт Triplex |
|
SMALL FONT |
2 |
Мелкий |
|
SANSSERIF FONT |
3 |
Шрифт SansSerif |
|
GOTHIC FONT |
4 |
Готический |
Draw() - выводит часовые, минутные и секундные стрелки
line(320,240,320+120*cos(a1),240+120*sin(a1))…., используя системное время компьютер поворачиваем каждую стрелку на нужный угол:
a1=(t.ti_hour%12+t.ti_min/60.0+t.ti_sec/3600.0)*pi/6-pi/2;
a2=(t.ti_min+t.ti_sec/60.0)*pi/30-pi/2;
a3=t.ti_sec*pi/30-pi/2;
Используя :
sec=t.ti_sec; if((t.ti_sec==0) && (t.ti_min==0)) printf("\a");
do { gettime(&t); }
while (sec==t.ti_sec);
setcolor(0); draw();
date(); } закрашиваем в черный цвет стрелки, добиваемся эффекта движенья стрелок.
while(!kbhit()) - ждем нажатья кнопки, после выход
closegraph(); - завершаются действия с графикой и выход из графического режима .
3. Листинг программы
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
#include <time.h>
#include <graphics.h>
#define o outtextxy
int gd=0,gm,i;
char g[20],gg[20], tau[7];
float a1,a2,a3,pi=3.1415925;
struct time t;
struct date d;
int sec,r;
void logos()
{settextstyle(0,0,2);
sprintf(tau,"TauRolex09");
o(240,155,tau);}
void draw()
{line(320,240,320+120*cos(a1),240+120*sin(a1));
line(320,240,320+150*cos(a2),240+150*sin(a2));
line(320,240,320+175*cos(a3),240+175*sin(a3));}
void date()
{settextstyle(0,0,1);
outtextxy(290,310,g);
if((d.da_day)<10) outtextxy(280,322,gg);
else outtextxy(283,322,gg);}
void main()
{ initgraph(&gd,&gm," ");
circle(320,240,215);
setfillstyle(9,8);
floodfill(320,240,WHITE);
circle(320,240,200);
setfillstyle(1,0);
floodfill(320,240,WHITE);
for(i=0;i<12;i++)
{a1=i*pi/6;
line(320+180*cos(a1),240+180*sin(a1),320+200*cos(a1),240+200*sin(a1));} gettime(&t);
do {settextstyle(4,0,4);
setcolor(15);
o(304,64,"12"); o(395,87,"1");
o(453,144,"2"); o(482,225,"3");
o(450,323,"4"); o(395,373,"5");
o(312,388,"6"); o(238,356,"7");
o(181,306,"8"); o(152,226,"9");
o(175,142,"10"); o(233,85,"11");
circle(320,240,3); getdate(&d);
sprintf(gg,"%2d.%02d.%d",d.da_day,d.da_mon,d.da_year);
settextstyle(0,0,2);
a1=(t.ti_hour%12+t.ti_min/60.0+t.ti_sec/3600.0)*pi/6-pi/2;
a2=(t.ti_min+t.ti_sec/60.0)*pi/30-pi/2;
a3=t.ti_sec*pi/30-pi/2;
sprintf(g,"%02d:%02d:%02d",t.ti_hour,t.ti_min,t.ti_sec);
date(); draw(); logos();
sec=t.ti_sec; if((t.ti_sec==0) && (t.ti_min==0)) printf("\a");
do { gettime(&t); }
while (sec==t.ti_sec);
setcolor(0); draw();
date(); }
while(!kbhit());
getch();
closegraph(); }
Литература:
1. С.В. Бахвалов, Л.И. Бабушкин, В.П. Иваницкая
«Аналитическая геометрия».
2. Б.И. Березин, С.Б. Берзин «Начальный курс С и С++».
3. Бьерн Страуструп - «Язык программирования C++»
4. Н. Тюкачев, Ю. Свиридов «Delphi 5 создание мультимедийных приложений»
5. П. Франка «С++ учебный курс»
Размещено на Allbest.ru
Подобные документы
Компьютерная графика как область информатики, изучающая методы и свойства обработки изображений с помощью программно-аппаратных средств, ее классификация и разновидности. Шаги для получения трехмерного изображения, необходимое программное обеспечение.
презентация [2,1 M], добавлен 26.06.2013Компьютерная графика как область информатики, занимающаяся проблемами получения различных изображений на компьютере. Области применения компьютерной графики. Двумерная графика: фрактальная, растровая и векторная. Особенности трёхмерной графики.
реферат [756,4 K], добавлен 05.12.2010Компьютерная графика - область информатики, занимающаяся проблемами получения различных изображений. Виды компьютерной графики: растровая, векторная, фрактальная. Программы для создания компьютерной анимации, область применения, форматы хранения.
реферат [29,1 K], добавлен 16.03.2010Компьютерная графика как одно из популярных направлений использования компьютера, ее виды и особенности применения. Порядок и способы создания цифровых изображений, средства и обработка. Программы САПР и их использование в инженерной деятельности.
реферат [19,1 K], добавлен 14.09.2009Назначение компьютерной графики. Особенности трехмерной анимации. Технология создания реалистичных трехмерных изображений. Компьютерная графика для рисования на SGI: StudioPaint 3D. Пакет PowerAnimator как одна из программ трехмерной анимации на SGI.
реферат [25,7 K], добавлен 31.03.2014Компьютерная графика и визуализация данных, методы и средства создания и обработки изображений с помощью программно-аппаратных вычислительных комплексов. Понятие виртуальности, примеры применения игровой графики: пространство, спрайты, воксели, полигоны.
реферат [29,0 K], добавлен 03.06.2010Компьютерная графика как раздел информационных технологий, в котором изучают вопросы получения графических изображений с помощью компьютера. Ее классификация и типы, сравнительная характеристика, признаки: растровая, векторная, фрактальная и трехмерная.
презентация [2,0 M], добавлен 04.04.2016Структура и алгоритм составления рекламного текста. Возможности графики в рекламных текстах. Анализ рекламного текста на основе архетипов К.Г. Юнга. Цвет и шрифт как часть графики в рекламных текстах. Архетипы рекламного текста на примере MacBook Air.
дипломная работа [8,0 M], добавлен 29.12.2012Компьютерная графика как инструмент для синтеза (создания) изображений. Характеристика векторного, растрового и фрактального типов представления изображений, трёхмерная графика. Интерфейс программы "Photoshop", пример работы по коррекции фотографий.
курсовая работа [4,5 M], добавлен 19.01.2011Анализ и постановка задач дисциплины "Компьютерная графика". Разработка структуры, функциональной схемы и программной документации. Руководство программисту и оператору. Выбор и обоснование языка программирования. Описание процедур, функций, оценок.
дипломная работа [3,6 M], добавлен 16.11.2011