Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Практическая работа №22. Построение графика функции
1. Цель работы:
Получить начальные навыки написания программ на языке программирования C++, работающих в графическом режиме.
Графический режим дисплея предназначен для вывода графиков, рисунков и т.п. В этом режиме можно выводить также и текстовую информацию.
В программах на языке С++ прежде вывода на экран графической информации необходимо произвести инициализацию графического режима, а по окончании закрытие графического режима. Графический режим определяет разрешающую способность экрана и количество цветов и должен поддерживаться видеоадаптером. Функции, использующиеся для инициализации и деинициализации графического режима, а также для вывода информации на экран в графическом режиме, содержатся в заголовочном файле graphics.h.
Инициализация графического режима
Для этого используется функция initgraph, имеющая следующий синтаксис:
void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver)
Функция initgraph инициализирует графическую систему путем загрузки графического драйвера с диска и переводит систему в графический режим.
Параметры функции:
*pathodriver определяет маршрут, по которому initgraph будет искать графические драйверы (если строка пуста, то поиск осуществляется в текущем каталоге);
*graphdriver целое, которое определяет используемый графический драйвер;
*graphmode целое, которое определяет исходный графический режим (если *graphdriver не равен DETECT, *graphmode устанавливается в наивысшее разрешение, допустимое для данного драйвера).
Возвращаемое initgraph значение представляет собой код ошибки, который необходимо проанализировать, прежде чем приступать к работе в графическом режиме. В случае успешного завершения код равен 0.
Закрытие графического режима
Закрытие графического режима осуществляется при помощи функции closegraph, имеющей следующий синтаксис:
void far closegraph(void).
Функция closegraph освобождает всю память, выделенную под графическую систему, затем восстанавливает экран в режим, который был до вызова initgraph.
П р и м е р Программа, инициализирующая и деинициализирующая графический режим (в программе используется автоопределение режима):
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{ int graphdriver = DETECT, mode, errorcode;
initgraph(&graphdriver,&gmode,"");
errorcode = graphresult(); // получение результата инициализации
if(errorcode != grOk) // если ошибка */
{ printf("Ошибка :%s\n",grapherrormessage(errorcode));
printf("Для останова нажмите любую клавишу\n");
getch();
return(1); // завершение с кодом ошибки
}
line(0,0,getmaxx(),getmaxy()); построение диагональной линии
getch();
closegraph();
return 0; }
Основные функции работы с графикой
bar
void bar (int xl, int yl, int x2, int y2) ;
Вычерчивает закрашенный прямоугольник. Параметры xl и yl задают положение левого верхнего угла прямоугольника, х2 и у2 правого нижнего.
Цвет и стиль заливки прямоугольника задаются функцией setfillstyle.
ellipse
void ellipse(int x, int y, int УголНачала, int УголКонца, int РадиусХ, int РадиусУ ) ;
Вычерчивает эллипс или дугу эллипса с центром в точке с координатами (х, у). Параметры УголНачала и УголКонца задают круговые координаты начальной и конечной точек линии эллипса, которая вычерчивается против часовой стрелки от начальной точки к конечной. Угловые координаты задаются в градусах. Значение угловой координаты возрастает против часовой стрелки. Параметры РадиусХ и РадиусУ задают горизонтальный и вертикальный радиусы эллипса.
getmaxx, getmaxy
int getmaxx(void); int getmaxy(void);
Функция getmaxx возвращает координату х крайней правой точки экрана, функция getmaxy координату у крайней нижней точки экрана.
getx, gety
int getx(void); int gety(void) ;
Возвращает координату х (у) указателя вывода.
line
void line(int xl, int yl, int x2, int у2);
Вычерчивает линию из точки с координатами x1, y1 в точку с координатами х2, у2.
Цвет линии можно задать при помощи функции setcolor, стиль при помощи функции setlinestyle.
outtext
void outtext(const char* Текст);
Выводит строку символов Текст от текущего положения указателя вывода и перемещает указатель вывода в точку, расположенную за последним выведенным символом.
Строка, передаваемая функции outtext, не должна содержать символов форматирования, например \n.
Цвет выводимых символов можно задать при помощи функции setcolor, шрифт settextstyle.
outtextxy
void outtextxy(int x, int y, const char* Текст);
Устанавливает указатель вывода в точку с координатами (х, у) и выводит от нее строку Текст, при этом указатель вывода своего положения не меняет, т. е. остается в точке с координатами (х, у).
Цвет выводимых символов можно задать при помощи функции setcolor, шрифт settextstyle.
rectangle
void rectangle (int xl, int yl, int x2, int y'2) ;
Вычерчивает прямоугольник. Параметры x1 и y1 задают положение левого верхнего угла прямоугольника, х2 и у2 правого нижнего.
Вид (стиль линии) контура прямоугольника можно задать при помощи функции setlinestyle, цвет при помощи функции setcolor.
setcolor
void setcolor(int Цвет);
Задает цвет вывода текста (функции outtextxy и outtext), вычерчивания линий и фигур (функции line, circle, rectangle и др.). В качестве параметра Цвет обычно используют именованную константу.
setfillstyle
void setfillstyle(int Стиль, int Цвет);
Устанавливает стиль и цвет заливки (закрашивания), используемый функциями вывода областей (bar, bar3d, sector и др.). В качестве параметра Стиль обычно используют одну из именованных констант, список которых приведен ниже. Параметр Цвет также задается именованной константой (см. setcolor).
setlinestyle
void setlinestyle(int ТипЛинии, int Образец, int Толщина)
Устанавливает стиль вычерчиваемых контуров и линий (см. функции line, circle и др.).
Параметр ТипЛинии, в качестве которого обычно используется одна из перечисленных ниже именованных констант, определяет вид линии.
settexstyle
void settexstyle(int Шрифт, int Ориентация, int Размер);
Устанавливает шрифт, размер и ориентацию текста, выводимого функциями outtextxy и outtext.
// График функции
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define PATHTODRIVER "c:\\TC\\bgi\\"
// функции, график которых надо построить
grafik(){float i,x,y;
line(1,240,600,240);
line(300,1,300,480);
for(i=-6.28;i<=6.28;i=i+0.01){x=i; y=x*x;
//масштабирование
x=x*50; y=y*50;
putpixel (300+x, 240-y, 5) ; }}
void main(void){
int gdriver = DETECT; // драйвер
int gmode; // режим
int errorcode; // код ошибки
initgraph(&gdriver, &gmode, PATHTODRIVER) ;
errorcode = graphresult ();
if (errorcode == grOk) {grafik(); getch();closegraph () ; }
else {printf("Ошибка: %d\n", errorcode);
puts("Для завершения программы нажмите <Enter>");
getch();}}
Разработать программу построения графика функции:
F(x) = sin (1/x) +2.
Границы исследуемого участка функции (min x и max x), масштаб по осям ОХ и OY задаются пользователем с клавиатуры.
Предусмотреть вывод координатных осей на экран и их разметку в соответствии с заданными масштабом и границами.
PAGE 3