Суббота, 30.11.2024, 03:03

Главная | Регистрация | Вход
Приветствую Вас Гость
RSS
Форма входа
Друзья сайта
Что нового?
Статистика
Мини-чат

Моя Курсовая - Форум


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Моя Курсовая
Harry_Potter6491Дата: Среда, 05.05.2010, 07:02 | Сообщение # 1
Первая кровь
Группа: Адептус Астартес
Сообщений: 33
Награды: 2
Репутация: 1
Статус: Offline
Моя курсовая работа



Сейчас играю в: Mortal Kombat X, NieR: Automata, Injustice 2
 
Harry_Potter6491Дата: Среда, 05.05.2010, 07:06 | Сообщение # 2
Первая кровь
Группа: Адептус Астартес
Сообщений: 33
Награды: 2
Репутация: 1
Статус: Offline
Порядок выполнения работы

1. Получить индивидуальное задание.
2. Изучить материал, приведённый в разделе «Необходимая информация.
3. Разработать алгоритм решения задачи.
4. Написать программу на языку Pascal или C в соответствии с указанием преподавателя.
5. Протестировать и отладить программу.
6. Оформить пояснительную записку (см. образец оформления в приложении).
7. Сдать работу преподавателю.

Задание на расчетно-графическую работу
Написать программу в соответствии с индивидуальным заданием.
Общие требования. Изображение должно занимать большую часть экрана, сопровождаться заголовком, содержать наименования и градации осей и масштабироваться в зависимости от исходных данных. При любых допустимых значениях исходных данных изображение должно полностью помещаться на экране. Программа не должна опираться на конкретные значения расширения экрана.
Задание для вариантов 1-11
Вывести на экран в графическом режиме графики двух функций на интервале от хнач до хкон с шагом dx. Первая функция задана с помощью ряда Тейлора, ее вычисление должно выполняться с клавиатуры. Графики должны быть плавными и различаться цветами.
Задание для вариантов 12-20
Написать программу, которая вводит данные из текстового файла (пример исходных данных показан в таблице 1 на стр. 3). Введенные данные отобразить на экране в виде диаграммы, в соответствии с индивидуальным заданием. Диаграмма должна строиться в зависимости от количества данных в файле.
Задание для вариантов 21-40
Написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика (сделать для одного из приведенных графиков). Параметр R вводится с клавиатуры. График изменяется в зависимости от введенного значения таким образом, что начальная точка графика остаётся фиксированной, размер и угол наклона отрезков не изменяются, участки графика остаются соединёнными.
Задание для вариантов 41-60
Написать программу, которая определяет, попадает ли точка с заданными координатами в область, закрашенную на рисунке серым цветом. Вывести на экран рисунок с точкой в указанных координатах и текстовое сообщение о результате.
Необходимая информация
Общая характеристика базовых графических средств языка Pascal.
Для реализации графических операций в прикладных программах необходима базовая графическая система (БГС). Эта система может входить в состав системы программирования(Borland Pascal, Borland C) или быть частью операционного окружения (системы класса Windows).В частности, в системе Borland Pascal базовые графические средства представлены набором графических драйверов (файлы типа EGAVGA.BGI) и набором констант, типов, переменных, процедур и функций, собранных в модуле Graph (файл GRAPH.TPU).Аналогичные средства существуют и для языка С.
В целом, все процедуры и функции модуля Graph можно разбить на следующие основные группы:
1) инициализация и завершение графического режима;
2) вывод основных графических примитивов;
3) установка атрибутов графических примитивов;
4) запрос значений атрибутов;
5) копирование.
Инициализация графического режима.
Инициализация должна выполняться перед непосредственным использованием процедур модуля Graph для построения изображения. Инициализация заключается в задании используемого графического драйвера и графического режима для этого драйвера. Процедура инициализации загружает указанный драйвер в оперативную память и настраивает систему на работу в графическом режиме.
Для указания используемого драйвера можно воспользоваться следующими константами:
Ega = 3
Vga = 9
Detect = 0.
Константа Detect используется для указания необходимости автоматического распознавания, имеющегося в наличии графического адаптера.
После задания драйвера для указания соответствующего режима можно воспользоваться следующими константами:
EgaHi = 1 - экран 640 на 350 точек с 16 цветами
VgaHi = 2 - экран 640 на 480 точек с 16 цветами
Инициализация графического режима производится вызовом процедуры InitGraph (var GrDr:integer; PathDr: string), где параметры переменные GrDr и GrMod определяют используемый драйвер и режим, а параметр PathDr определяет путь к графическому драйверу в соответствии с правилами MS/DOS. В простейшем случае параметр PathDr можно задать как пустую строку, что соответствует ситуации, когда графический драйвер находится в текущем каталоге. Теперь можно привести два варианта инициализации графического режима - с явным и автоматическим заданием драйвера и режима:
Вариант 1:

var GrDr,GrMod: integer;
begin
GrDr:=Vga; {используется драйвер VGA}
GrMod:=VgaHi;
InitGraph(GrDr,GrMod,’’);

Вариант 2:

var GrDr,GrMod: integer;
begin
GrDr:= Detect; {требуется автоопределение}
InitGraph(GrDr,GrMod,’’);

Для завершения работы в графическом режиме надо вызвать процедуру CloseGraph, которая выгружает драйвер и восстанавливает исходное состояние экрана.
Вывод основных графических примитивов.
Любое сложное изображение, в конечном счете, составляется из набора нескольких простейших геометрических элементов, называемых примитивами. Система Турбо Паскаль предлагает следующий набор графических примитивов: точка, отрезок, окружность, дуга, дуга эллипса, прямоугольник, круговой сектор, сектор эллипса, многоугольник, текст.
Каждый из этих примитивов на экране может выглядеть различным образом, в соответствии со своими атрибутами. Основными атрибутами для всех примитивов, кроме текста, являются: цвет, тип линии, толщина линии, шаблон заполнения области (там, где эта операция имеет смысл).
Установка цвета вывода примитива производится процедурой
 SetColor(цвет: integer),
где 0<=цвет<=15 и цветовая палитра совпадает с текстовым режимом.
Установка цвета фона производится процедурой
 SetBkColor(цвет: integer).
Установка типа и толщины линии - процедурой
 SetLineStyle(тип_линии, образец, толщина: integer).
Для задания типа линии предусмотрены следующие константы:
SolidLn=0 - непрерывная линия;
DottedLn=1 - точечная линия;
CenterLn=2 - штрихпунктирная линия;
DoshedLn=3 - пунктирная линия;
UserBitLn=4 - тип линии, определяемый пользователем;
в этом случае параметр ‘ образец ’ задает образец линии; во всех остальных случаях следует брать ‘образец’=0.
Замечание: атрибут ‘тип линии’ действует только для прямолинейных примитивов. Для задания толщины линии можно использовать следующие 2 константы:
NormWidth=1 - нормальная толщина;
ThickWidth=3 - утолщенная линия.
Установка шаблона и цвета закраски замкнутых областей производится с помощью процедуры
 SetFillStyle(шаблон,цвет: integer).
Для задания шаблона можно использовать следующие константы:
EmptyFill=0 - закраска фоновым цветом;
SolidFill=1 - закраска заданным цветом;
LineFill=2 - закраска шаблоном вида - - - - - - -;
LtSlashFill=3 - закраска шаблоном вида / / / / / /;
SlashFill=4 - закраска шаблоном из толстых линий ////////;
BkSlashFill=5 - закраска шаблоном из толстых линий \\\\\\\;
LtBkSlashFill=6 - закраска шаблоном вида \ \ \ \ \ \;
HatchFill=7 - закраска редкой штриховкой;
XHatchFill=8 - закраска пересекающейся штриховкой;
InterLeaveFill=9 - закраска прерывистой линией;
WideDotFill=10 - закраска редкими точками;
CloseDotFill=11 - закраска частыми точками.
Пользователь имеет возможность создавать свои собственные шаблоны заполнения с помощью процедуры SetFillPottern.
Для рисования т о ч к и на экране используется процедура
 PutPixel(x,y,цвет: integer).
Точка - наименьший адресуемый элемент изображения, который принято называть пикселом. Можно запросить цвет заданной точки экрана, обратившись к функции
 GetPixel(x,y: integer): integer.
Для вывода о т р е з к а прямой линии используются процедуры
 Line(x1,y1,x2,y2: integer) - отрезок от (x1,y1) до (x2,y2);
 LineTo(x,y: integer)- отрезок от текущей точки до точки (x,y);
 LineRel(dx,dy: integer) - отрезок от текущей точки до точки, определяемой смещением dx, dy.
Для задания текущей точки имеется специальный указатель текущей позиции (УТП), который аналогичен курсору в текстовом режиме, но в отличие от него невидим на экране. Изменение значения УТП отслеживается графическими процедурами. Для перемещения УТП можно использовать следующие процедуры:
 MoveTo(x,y: integer) - перемещение УТП в точку (x,y);
 MoveRel(dx,dy: integer) - смещение УТП на (dx,dy) относительно его исходного положения.
Можно запросить значения УТП, обратившись к целочисленным функциям GetX и GetY, которые аналогичны функциям WhereX и WhereY для текстового режима.
Вывод прямоугольника с горизонтальными и вертикальными сторонами производится процедурой
 Rectangle(x1,y1,x2,y2: integer),
где (x1, y1) - левый верхний угол, а (x2, y2) - правый нижний угол прямоугольника.
Вывод окружности с центром (x1, y1) и радиусом R производится процедурой
 Circle(x,y,R: integer).
Вывод дуги окружности производится процедурой
 Arc(x,y,нач_угол,кон_угол,R: Integer),
где (x, y) - центр образующей окружности радиуса R, а нач_угол и кон_угол задают начальный и конечный угол дуги (в градусах); дуга рисуется против часовой стрелки в соответствии с общепринятыми соглашениями.
Вывод дуги эллипса производится процедурой
 Ellipse(x,y,нач_угол,кон_угол,RX,RY: integer),
где (x, y) - координаты центра, RX и RY - полуоси, а нач_угол и кон_угол задают начальный и конечный углы дуги, аналогично дуге окружности; если нач_угол=0, а кон_угол=359, то будет нарисован полный эллипс.
Вывод контура многоугольника производится процедурой
 DrawPoly(n: integer; var коорд_верш),
где n - число вершин, а параметр-переменная коорд_верш определяет координаты всех вершин многоугольника. Тип этого параметра не задан, поэтому он называется не типизированным, что является н е с т а н д а р т н о й возможностью системы Турбо Паскаль. Соответствующий фактический параметр может быть л ю б о г о типа. Например, удобно этот фактический параметр описать как массив записей вида:
 var коор : array[1..n] of record
 x,y: integer
 end;
При вычерчивании замкнутого многоугольника с m вершинами начальная и конечная вершины рассматриваются как две отдельные вершины, координаты которых одинаковы, поэтому n=m+1.
Для построения закрашенного многоугольника можно использовать процедуру
 FillPoly(n: integer; var коорд_верш),
где формальные параметры полностью аналогичны предыдущей процедуре.
Отличие данной процедуры от предыдущей состоит в том, что сначала рисуется контур многоугольника с использованием цвета, типа и толщины линий, заданных процедурами SetColor и SetLineStyle, а затем многоугольник закрашивается в соответствии с шаблоном и цветом, заданными процедурой SetFillStyle.
Аналогичные действия, но по отношению к произвольной замкнутой области, выполняется процедура
 FloodFill(x,y,цвет_гран: integer).
Она заполняет замкнутую область с границей, определяемой заданным цветом (параметр цвет_гран), в соответствии с заданным шаблоном закраски. Если точка (x, y) находится внутри области, то закрашивается внутренность области, иначе - весь экран за исключением заданной области.
Для вывода закрашенного кругового сектора можно использовать процедуру
 PieSlice(x,y,нач_угол,кон_угол,R: integer),
где формальные параметры полностью аналогичны параметрам процедуры Arc.
Контур сектора вычерчивается в соответствии с заданным цветом, типом и толщиной линии, а потом закрашивается в соответствии с заданным шаблоном и цветом закраски.
Аналогичная процедура для закраски эллиптического сектора имеет вид
 Sector(x,y,нач_угол,кон_угол,RX,RY: integer).
Процедура
 Bar(x1,x2,x2,y2: integer)
выводит прямоугольник , закрашенный в соответствии с установками процедуры SetFillStyle.
Система программирования Турбо Паскаль предусматривает ряд возможностей для вывода текстовой информации в графическом режиме. Прежде всего, имеется возможность выбора одного из типов шрифта. По умолчанию всегда выбирается точечный (растровый) шрифт, который для вывода любого символа использует точечную матрицу размерности 8 на 8.
При желании вместо точечного шрифта можно использовать один из штриховых (векторных) шрифтов, в которых любой символ описывается как набор отрезков (векторов). Штриховые шрифты хранятся в специальных файлах на диске и при необходимости загружаются в оперативную память. Для задания типа шрифта можно использовать следующие константы:
DefaultFont=0 - точечный шрифт;
TriplexFont=1 - основной штриховой шрифт (файл triplex.chr);
SmallFont=2 - уменьшенный штриховой шрифт(файл small.chr);
SanSeriFont=3 - дополнительный штриховой шрифт(sanserif.chr);
GothicFont=4 - готический шрифт (файл gothic.chr).
Для задания горизонтального или вертикального направления вывода текста можно использовать следующие константы:
HorizDir=0 - горизонтальное направление (слева - направо):
VertDir=1 - вертикальное направление(снизу-вверх).
Кроме того, имеется возможность управления размером символов. По умолчанию для точечного шрифта выбирается наименьший возможный размер, определяемый целочисленной константой NormSize=1.
Размер символов точечного шрифта можно увеличить в 2,3,...,10 раз. Задание типа шрифта, направления вывода и размеров символов производится процедурой
 SetTextStyle(шрифт,направл,размер: integer).
Изменение высоты и ширины символов для штриховых шрифтов производится процедурой
 SetUserCharSize.
Выводимый текст можно выравнивать в горизонтальном или вертикальном направлениях. Горизонтальное выравнивание определяется следующими константами :
LeftText=0 - текст выводится вправо от заданной точки, т.е. выравнивается по л е в о й границе текста;
CenterText=1 - центрирование текста, т.е. заданная точка соответствует середине выводимого текста;
RightText=2 - текст выводится влево от заданной точки, т.е. выравнивается по правой границе текста.
Аналогично, для вертикального выравнивания определены константы:
BottomText=0 - текст выводится н и ж е заданной точки;
CenterText=1 - центрирование текста;
TopText=2 - текст выводится в ы ш е заданной точки.
Нулевые значения констант выбираются по умолчанию. Для задания выравнивания текста используется процедура
 SetTextJustify(горизонт,вертик: integer).
Вывод текста производится двумя процедурами:
 OutTextXY(x,y: integer; строка: string);
 OutText(строка: string).
Первая выводит текст относительно заданной точки (x,y), а вторая - относительно имеющего значение УТП (обе - с учетом выравнивания текста).При использовании точечного шрифта (он всегда выбирается по умолчанию) надо знать, что если выводимая строка не помещается полностью на экране, то она просто не выводится!
Однако, при использовании штриховых шрифтов не выводится лишь та часть строки, которая выходит за пределы экрана.
Задание области вывода
Область вывода (или область просмотра, поле вывода, графическое окно)- это часть графического экрана, куда направляется весь графический вывод без изменения остальной части экрана. В этом смысли понятие области вывода аналогично понятию окна в текстовом режиме. Область вывода задается процедурой
 SetViewPort(x1,y1,x2,y2: integer; режим_отсечения: boolean),
где (x1, y1) - координаты левого верхнего угла поля вывода, а (x2, y2) - координаты правого нижнего угла. Булевский параметр ‘режим_отсечения’ определяет, включен или нет для данного поля вывода режим отсечения по границе поля: если включен (константа ClipOn=true), то все выводимые примитивы отсекаются по границе поля, т.е. не выходят за его пределы, в противном случае (константа ClipOff = false) изображение может выходить за границы области. Нормальное состояние области вывода соответствует режиму включения отсечения.
На экране одновременно может существовать несколько областей вывода. Для возврата в исходное состояние, соответствующее ПОЛНОМУ экрану, можно сделать следующий вызов:
 SetViewPort(0,0,GetMaxX,GetMaxY,True),
где GetMaxX и GetMaxY - функции модуля Graph, возвращающие максимально возможные для данного графического режима значения координат X и Y. Эти функции чрезвычайно полезны при написании программ, работающих с различными адаптерами.
Для очистки области вывода можно использовать процедуру:
 ClearViewPort.
Работа с графикой на языке C и модуль graphics.h
Монитор ПК может работать в двух режимах текстовый и графический. В этих режимах по разному представляется видео память. Переход из режима в режим очищает экран. В графическом режиме необходимо пользоваться функциями из графической библиотеки graphics.h.
Типы видео мониторов и их режимы
Существует много типов мониторов, на каждом из которых доступны кроме своего режима, и все более низкие режимы. Под режимом понимается разрешающая способность количество цветов. Кроме того мониторы делятся по аппаратной реализации: ЦИФРОВЫЕ и АНАЛОГОВЫЕ.

Остальные стандартные типы являются мало употребительными или повторяют более слабые режимы. Режимы SVGA не являются стандартными, хотя драйвера для них иногда и встречаются, но не входят в комплект Borland Си. Положение ухудшает и большое разнообразие особенностей SVGA карт выпускаемыми разными фирмами, не придерживающихся одинакового формата.
Инициализация графики
Функции:
initgraph(int *GrDr,int *GrMod,char *Path) ;
i=graphresult() ;
closegraph() ;

Функция initgraph(...) инициализирует графический режим. В параметрах ей передается:
GrDr - Тип графического монитора, или DETECT - Определить максимально возможный. Тип установленного оборудования возвращается в этих же переменных (поэтому они и передаются указателем).
GrMod - Режим.
Path - Путь до файлов *.bgi - драйверов графических режимов. Если указанно " " - то в текущем каталоге.
Значения и имена можно взять из предыдущей таблицы.
Функция graphresult() - возвращает код ошибки инициализации графики (недопустимый графический режим, не найден файл *.bgi и т.п.). Если все в порядке функция возвращает значение grOk. Проверку правильного выполнения функции initgraph(...) обязательно надо производить, так как, если графический режим не установлен, выполнение любой графической команды приведет к аварийному останову программы.
Функция closegraph() обеспечивает корректное возвращение в текстовый режим. Ее выполнение, как говорилось раньше, очищает экран. При необходимости вставляйте задержку до нажатия клавиши: getch().
Внимание!
Работа с графикой возможна только в моделях памяти >= medium, это устанавливается в опциях компилятора. Для работы с библиотекой графики ее необходимо подключить. В опциях Си: Option\Linker\Libriry\Graphics: X
Пример:
#include
#include
#include
int main(void)
{
int GrDr,GrMod,rez ;
GrDr=DETECT ;
initgraph(&GrDr,&GrMod," ") ;
rez=graphresult() ;
if(rez != grOk)
{
printf("\n Ошибка инициализации графики") ; return(1) ;
} /* Кон. if */
line(0,0,100,100) ;
getch() ;
closegraph() ;
return(0) ;
} /* Кон. main() */

Система координат
Система координат в графическом режиме начинается с точки 0,0. Размеры экрана зависят от установленного графического режима.

Основные графические функции
Ниже используются обозначения:
x,y,x1,y1,x2,y2 – координаты;
*St – строка символов;
rx,ry,r – радиусы;
h – толщина изображения;
Alfa1,Alfa2 – углы в градусах;
DX,DY – размеры символа;
Color – цвета.
Функции рисования

Функция Описание

line(int x1,int y1,int x2,int y2) Линия
rectangle(int x1,int y1,int x2,int y2) Прямоугольник
bar(int x1,int y1,int x2,int y2) Закрашенный прямоугольник
bar3d(int x1,int y1,int x2,int y2,int h) Закр. прям. с оттененением
ellipse(int x,int y,int rx,int ry) Эллипс
fillellipse(int x,int y,int rx,int ry) Закрашенный эллипс
arc(int x,int y,int Alfa1,int Alf2,int r) Дуга (круг)
outtextxy(int x,int y,char *St) Вывод строки текста
putpixel(int x,int y,char Color) Поставить точку
Color=getpixel(int x,int y) Получить цвет точки
floodfill(int x,int y,char Color) Залить до границы указанного цвета
cleardevice() Очистить экран
clearviewport() Очистить порт вывода
setviewport(int x1,int int y1) Установить порт вывода
int x2,int y2,char flg) flg-вывод за пред. окна

Функции изменения параметров рисования

Функция Описание
setcolor(char Color) Установить цвет рисования
setbkcolor(char Color) Установить цвет фона
setfillstyle(<Шаблон>,cahr Color) Установить цвет и стиль закраски фигур
setlinestyle(<Шаблон>,int Bit,char h) Установить стиль и толщину линий.

Шаблоны линий

Шаблон Ном Изображение
SOLID_LINE 0 Сплошная линия
DOTTED_LINE 1 Линия из точек
CENTER_LINE 2 Centered line
DASHED_LINE 3 Dashed line

Шаблоны закраски
Шаблон Ном. Изображение
EMPTY_FILL 0 Цветом фона
SOLID_FILL 1 Выбранным цветом
LINE_FILL 2 ---
LTSLASH_FILL 3 ///
SLASH_FILL 4 ///
BKSLASH_FILL 5 \\\
LTBKSLASH_FILL 6 \\\
HATCH_FILL 7 Light hatch
XHATCH_FILL 8 Heavy crosshatch
INTERLEAVE_FILL 9 Interleaving line
WIDE_DOT_FILL 10 Точками
CLOSE_DOT_FILL 11 Частыми точками

Мое задание:

Прикрепления: 0805982.jpg (9.3 Kb)




Сейчас играю в: Mortal Kombat X, NieR: Automata, Injustice 2
 
Lock_DockДата: Понедельник, 17.05.2010, 22:24 | Сообщение # 3
Crazy Admin
Группа: Священная Инквизиция
Сообщений: 6547
Награды: 7
Репутация: 12
Статус: Offline
А для чего нужно то? Что надо сделать?







Сейчас играю в: Need a packet? (PS Vita), Persona Q2: New Cinema Labyrinth (3DS), Super Mario 3D All-Stars (Switch), Ghost of Tsushima: Legends (PS4)
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz