Компьютерная графика. Часы

Автор: Пользователь скрыл имя, 13 Декабря 2011 в 13:16, курсовая работа

Краткое описание

Компьютерная графика на сегодняшний день уже вполне сформировалась как наука. Существует аппаратное и программное обеспечение для получения разнообразных изображений – от простых чертежей до реалистичных образов естественных объектов. Компьютерная графика используется практически во всех научных и инженерных дисциплинах для наглядности восприятия и передачи информации. Знание её основ, в наше время, необходимо любому ученому и инженеру. Она властно вторгается в бизнес, медицину, рекламу, индустрию развлечений и многие другие области.

Файлы: 1 файл

курсовая.doc

— 98.50 Кб (Скачать)

Введение 

      Компьютерная   графика   на   сегодняшний   день  уже вполне сформировалась как наука. Существует аппаратное и программное обеспечение   для   получения   разнообразных  изображений  –  от простых  чертежей  до  реалистичных образов естественных объектов. Компьютерная графика используется практически во всех научных и инженерных дисциплинах для наглядности восприятия и передачи информации. Знание её основ, в наше время, необходимо любому ученому и инженеру. Она  властно вторгается в бизнес, медицину, рекламу, индустрию развлечений и многие другие области.

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

 

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. Структура программы

    В с++ есть шесть классов лексем: идентификаторы, ключевые слова, константы, строки, операторы и прочие разделители. Символы пробела, табуляции и новой строки, а также комментарии (собирательно - "белые места"), как описано ниже, игнорируются, за исключением тех случаев, когда они служат разделителями лексем. Некое пустое место необходимо для разделения идентификаторов, ключевых слов и констант, которые в противном случае окажутся соприкасающимися.

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

    Символы /* задают начало комментария, заканчивающегося символами */. Комментарии не могут быть вложенными. Символы // начинают комментарий, который заканчивается в конце строки, на которой они появились.

Идентификаторы .

Следующие идентификаторы зарезервированы для использования  в качестве ключевых слов и не могут использоваться иным образом:

      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)); -секундные  стрелки.

Информация о работе Компьютерная графика. Часы