Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / lect11.doc
Скачиваний:
7
Добавлен:
20.05.2014
Размер:
92.16 Кб
Скачать

11.3 Пример программы для символьного графика

// grasim1.cpp

#include <fstream.h>

#include <conio.h> // for getch

#include <math.h>

#include <iomanip.h>

void graphN ( int N, float x [ ], float y [ ] );

Int main( )

{ float x[50], y[50]; int N=25;

ofstream ff (“ag1.txt”);

for (int k = 0; k < N; k++) { x[k] = .3*k; y[k] = sin(x[k] );

ff << k << " \t " << x[k] << ' \t ' << y[k] <<endl; }

graphN (N, x, y); getch();

}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

void

graphN ( int N, float x[ ], float y[ ] )

{ char v= '|'; int kx = 20, ky=20; char Mas[20][20];

int k, i ,j; float xmin, xmax, ymin, ymax, yi;

for(i=0; i<ky; i++) for (j = 0; j<kx; j++) Mas[i][j]=' '; //п1

xmin = xmax = x[0]; ymin = ymax = y[0]; //п2

for(k=1; k<N; k++) {xmin = min (xmin,x[k]); xmax = max (xmax,x[k]);

ymin = min (ymin,y[k]); ymax = max (ymax,y[k]); } ;

float stepx = (xmax-xmin) / (kx-1); float stepy = (ymax-ymin) / (ky-1);

// if(stepx<1e-10 || stepy < 1e-10){ cout<< " y(x)=const => End";

// getch( ); return;}

for (i=0; i<ky; i++) { Mas[i][0] = v; Mas[i][ky-1]= v;} //п3

for (k=0; k<N; k++) { i = ( ymax-y[k]) / stepy +0.5;

j = (x[k]- xmin ) / stepx +0.5; Mas[i][j]='*'; } //п4

cout<<setprecision(3);

for(i=0; i<ky; i++) { yi = ymax-stepy*i; cout<<endl<<setw(11) << yi;

for(j = 0; j<kx; j++) cout<<" "<<Mas[i][j]; } //п5

cout<< endl << setw(15) << xmin <<setw(57)<< xmax <<endl; } //п6

11.4 Построение графика в графическом режиме

В графическом режиме резко увеличивается количество точек, т.к. работа с

пикселами позволяет использовать, например, 200 строк и 600 столбцов

вместо 20 строк и 20 столбцов символьного графика. При этом рис. 11.1 и

алгоритм построения графика почти не изменяются, но теперь каждая точка

рис.11.1 соответствует пикселу. Матрицу Mаs можно не формировать, т.к.

возможен вывод каждого отдельного пиксела в любом порядке с помощью

стандартных графических подпрограмм. Следовательно, основное отличие двух

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

для его вывода необходимо формировать строку, а в графическом режиме можно

выводить любой пиксел.

Рассмотрим основные этапы графического программирования на примере для

задачи раздела 11.2. Пример программы дан в разделе 11.6.

Используется библиотека graphics.lib.

1. Составление функции main ( если необходимо, и других функций) для

вычисления двух массивов x[k], y[k], определящих координаты N точек, т.е.

k=1,2,.., N. Отметим, что значения N для графического режима могут быть

резко увеличены по сравнению со случаем символьного графика. После

формирования массивов x, y можно вызывать функцию построения

графика : gragci ( N, x, y ).

2. Подключение необходимых заголовочных файлов, в частности, файла

graphics.h

3. Установка видеорежима в соответствии с особенностями конкретного

компьютера. Для этого вызывается функция initgraph, которой передается

параметр DETECT и путь к папке с графическими драйверами. Значение

DETECT равно 0, и при этом определение типа видеоадаптера и выбор

соответствующего драйвера происходят автоматически. Установленный

режим характеризует параметр mode в initgraph.

4. Вызов в тексте подпрограмм всех необходимых графических функций,

т.е. непосредственная работа с графикой. В рассматриваемом примере вызываются

функции rectangle, setcolor, moveto, lineto, line, outtextxy.

5. Компиляция, компоновка, выполнение программы. Результатом является

график на экране.

Программа построения графика будет рассмотрена на семинаре, а также при

выполнении лабораторной работы следующего семестра.

Соседние файлы в папке Лекции