Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОЭВМ_Лаба3

.docx
Скачиваний:
6
Добавлен:
17.06.2023
Размер:
300.75 Кб
Скачать

x_rd = x_rd/2;

y_rd= sin(x_rd);

y_rd = y_rd * y_rd;

x_rd = sqrt(x_rd*2);

y_rd = y_rd + x_rd;

y_px = int(10*y_rd/0.79);

i++;

coord[i] = (-y_px)+150;

i++;

x_dgr = x_dgr + 45;

}

drawpoly(55, coord);

outtextxy(15, 155, “0”);

outtextxy(60,155, “3pi”):

line(60, 165, 82, 165);

outtextxy(68, 170, “2”);

outtextxy(100,155, “5pi”):

line(100, 165, 122, 165);

outtextxy(108, 170, “2”);

outtextxy(140,155, “7pi”):

line(140, 165, 162, 165);

outtextxy(148, 170, “2”);

outtextxy(180,155, “9pi”):

line(180, 165, 202, 165);

outtextxy(188, 170, “2”);

outtextxy(215,155, “11pi”):

line(215, 165, 246, 165);

outtextxy(228, 170, “2”);

outtextxy(255,155, “13pi”):

line(255, 165, 286, 165);

outtextxy(268, 170, “2”);

outtextxy(295,155, “15pi”):

line(295, 165, 326, 165);

outtextxy(308, 170, “2”);

outtextxy(335,155, “17pi”):

line(335, 165, 366, 165);

outtextxy(348, 170, “2”);

outtextxy(375,155, “19pi”):

line(375, 165, 406, 165);

outtextxy(388, 170, “2”);

outtextxy(415,155, “21pi”):

line(415, 165, 446, 165);

outtextxy(428, 170, “2”);

outtextxy(455,155, “23pi”):

line(455, 165, 486, 165);

outtextxy(468, 170, “2”);

outtextxy(495,155, “25pi”):

line(495, 165, 526, 165);

outtextxy(508, 170, “2”);

outtextxy(535,155, “27pi”):

line(535, 165, 566, 165);

outtextxy(548, 170, “2”);

outtextxy(575,155, “29pi”):

line(575, 165, 606, 165);

outtextxy(588, 170, “2”);

outtextxy(20, 107, “pi”);

outtextxy(20, 67, “2pi”);

outtextxy(20, 27, “3pi”);

setviewport(230, 250, 410, 300, 1);

rectangle(0, 0,180,50);

outtextxy(23, 21,”MAX Y = 12.167336”);

getch();

clrscr();

closegraph();

return 0;

}

  1. Структурная схема аппаратных средств.

Рис. 3. Структурная схема аппаратных средств.

Выводы.

Успешно изучена работа с видеосистемой в графическом режиме, а также был выведен график заданной функции с масштабированием и разметкой осей.

Ответы на контрольные вопросы.

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

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

Также Графический режим требует от компьютера определённой мощности и если требование мощности не удовлетворяется, то он работает очень медленно. Исходя из этого, его иногда заменяет текстовый режим, так как он не требует столь больших характеристик.

  1. Да, обойтись только графическим режимом можно, поскольку существуют функции для вывода текста и в этом режиме. Например, outtext(), outtextxy(). Для того, чтобы это было возможным нужно, чтобы видеоадаптер компьютера поддерживал графический режим.

  2. Размер видеопамяти влияет на количество возможных цветов и максимально возможное разрешение. Соответственно, размер прямо пропорционален этим характеристикам.

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

  4. Разрешение экрана – количество точек экрана на единицу площади, их плотность. Или по-другому плотность пикселей. Чем больше плотность, тем детальнее будет изображение.

Количество цветов.

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

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

  1. getgraphmode() – возвращает текущий графический режим, установленный для графической модели функциями initgraph() или setgraphmode(). Возвращаемое значение соответствует номеру режима, установленному для инсталлированного драйвера графики.

getmaxmode() – возвращает число, определяющее максимально возможный для инсталлиро­ванного .BGI-драйвера режим. Как и в предыдущем случае, возвращаемое значе­ние соответствует номеру режима, установленному для инсталлированного драйвера графики.

getmaxx(), getmaxy() – возвращают максимальные значения координат X и Y для текущего видеоре­жима.

getmodename(int mode_number) – возвращает указатель на ASCII-строку символов, содержащую имя символи­ческой константы, соответствующей режиму mode_number. Значение mode_number должно быть в пределах диапазона значений, возвращенных функцией getmaxmode() (для любого драйвера) или getmoderange() (для драйвера Borland International).

setgraphmode(int mode) – устанавливает видеосистему в режим, заданный значением переменной mode, и сбрасывает значения внутренних переменных системы графики в их значения по умолчанию.

restorecrtmode() – возвращает видеоадаптер в режим, в котором он был до выполнения ини­циализации системы графики.

  1. setviewport (int left, int top, int right, int bottom, int clip) – описывает новое графическое окно с координатами (столбец, строка) левого верхнего угла left, top, координатами правого нижнего угла right, bottom и значением флага усечения clip. В качестве начала текущих координат для функций графического вывода устанавливается левый верхний угол.

getx (void), gety (void) – возвращают текущие координаты X и Y, измеряемые относительно коор­динат левого верхнего угла текущего графического окна.

moveto (int x, int y) – устанавливает новое значение координат текущей позиции. Аргументы х, у задают новые значения координат текущей позиции относительно координат левого верхнего угла текущего графического окна.

moverel(int dx, int dy) – устанавливает новое значение координат текущей позиции.

  1. Курсора как такового нет, однако есть понятие «текущая позиция». И вот ею можно управлять (с помощью, например, функции gotoxy()).

  2. Пиксел – это такая единица изображения на экране. Так же, как все живые веществ состоят из клеток, так и любое электронное изображение состоит из пикселов. Атрибуты пиксела – его биты в памяти компьютера – нужны для того, чтобы определять его отображение.

  3. getpixel(int x, int у) – определяет, лежит ли пиксел с координатами (х, у) в текущем графическом окне, и, если лежит, возвращает код цвета этого пиксела.

putpixel(int x, int у, int pixelcolor) – определяет, лежит ли пиксел с координатами (х, у) в текущем графическом окне, и, если лежит, выводит на экран пиксел, код цвета которого равен pixelcolor.

  1. Функция gemaxcolor() возвращает максимальное значение кода цвета пиксела -1. Это значение позволяет установить максимальное число цветов, которое может отображаться на экране. В зависимости от режима, в котором проведена инициализация системы графики, возвращаемое значение может быть равно 1, 3 или 15.

  2. getbkcolor(void) – возвращает целое число, равное коду цвета фона.

getmaxcolor(void) – возвращает максимальное значение кода цвета пиксела -1.

setbkcolor(int color) – устанавливает новый цвет пикселов, имеющих код цвета 0.

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

  1. Графические примитивы – отрезки линий, окружности, эллипсы, окружности и т.д. Функции работы с графическими примитивами:

void arc(int x, int y, int stangle, int endangle, int radius) – выводит дугу окружности радиусом radius.

void bar(int left, int top, int right, int bottom) – выводит полосу, заполненную текущим цветом с использованием текущей маски заполнения.

void bar3d(int left, int top, int right, int bottom, int depth, int topflag) – выводит в изометрии "столбик" и заполняет его фронтальную поверхность текущим цветом с использованием текущей маски заполнения.

void circle(int x, int y, int radius) – выводит окружность заданного аргументом radius радиуса с центром, за­данным координатами х и у.

void drawpoly(int numpoints, int polypoints[]) – "соединяет" отрезками прямых линий текущего цвета и стиля точки (полигон), координаты которых заданы парами значений.

void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius) – выводит эллиптическую дугу или полный эллипс, используя текущий цвет.

void fillellipse(int x, int y, int xradius, int yradius) – выводит эллипс, заполненный текущим стилем.

void fillpoly(int numpoints, int *polypoints) – выводит контур полигона, заданного numpoints точками.

void floodfill (int x, int y, int border) – заполняет текущим стилем область экрана, ограниченную непрерывной линией с цветом border, начиная с точки с координатами (х, у).

void pieslice(int x, int y, int stangle, int endangle, int radius) – выводит контур кругового сектора и заполняет его внутреннюю область текущим стилем.

void rectangle(int left, int top, int right, int bottom) – выводит контур прямоугольника, заданного координатами левого верхнего (left, top) и правого нижнего (right, bottom) углов.

void sector(int x, int y, int stangle, int endangle, int xradius, int yradius) – работает аналогично функции pieslice(), за исключением того, что выводится не круговая, а эллиптическая дуга.

Соседние файлы в предмете Организация ЭВМ и вычислительных систем