logo
ООП для Заоч / Пинчук Лозовская Программир на С

15.4. Функції й процедури класів

void WIND::scale(double Xmin,double Ymin, double Xmax,double Ymax);

Відкриває вікно у якому Xmin,Ymin є координати лівої нижньої точки вікна, а Xmax,Ymax є координати правої верхньої точки вікна.

void WIND::setpos(int a1, int b1, int a2, int b2);

Відкриває вікно із заданим положенням, a1,b1 - координати лівої нижньої точки, a2,b2 - координати правої верхньої точки вікна в абсолютній системі координат екрана. При цьому вважається, що сам екран має такі абсолютні координати: ліва верхня точка - 0,0 , права нижня точка - 639,479. Вісь Y направлена зверху вниз.

void WIND::setup(double Ms, float Ar);

Відкриває вікно із заданим розміром і співвідношенням сторін: Ms - відносний розмір, Ar - відношення висоти вікна до ширини; добуток Ms*Ar не повинне бути більше, ніж 0.75.

void FRAM::setup(int colstr, int colgrid, int stylgrid);

Встановлює параметри малювання координатної сітки: colstr - колір підпису осі координат, colgrid - колір координатної сітки, stylgrid - тип лінії координатної сітки.

void FRAM::draw(char* Sx, char* Sy);

Ініціалізує графічне вікно й малює координатну сітку; параметри-рядки Sx, Sy передають інформацію для визначення масштабу відносного вікна й нанесення оцифровки координатної сітки (див. приклади).

void POINT::setup(int cl, int cf, int st, double dm);

Встановлює параметри малювання точок при виведенні графіка, cl - колір лінії фігури точки, cf - колір заповнення фігури точки, st - параметр, що визначає форму точки, dm - відносний діаметр точки.

void POINT::draw(double x, double y);

Виводить точку графіка із координатами x,y. Атрибути малювання точки встановлюються за допомогою функції point.setup.

void CURV::setup(int res, int col, int stl, int th);

Встановлює параметри малювання лінії графіка, res - ціле число, що визначає кількість прямолінійних відрізків, з яких будується графік, col - колір лінії графіка, stl - тип лінії графіка, th - товщина лінії графіка.

void CURV::line(int N, double * x, double * y);

Малює ламану лінію з прямих відрізків для яких координати кінцевих точок задані в масивах x[N], y[N]. Ця функція застосовується для побудови графіка функції y(x), яку надано у табличній формі. Побудований на екрані графік відповідає лінійній інтерполяції даних.

void CURV::spline(int N, double * x, double * y);

З’єднує точки, координати яких задані в масивах x[N], y[N] плавною лінією, використовуючи інтерполяцію сплайнами.

void CURV::fx(double a, double b, FUNX f);

Малює графік для функції f(x), параметри a,b визначають інтервал значень х.

void CURV::fx(FUNX f);

Малює графік для функції f(x). Інтервал значень х визначається обраним масштабом графічного вікна.

void CURV::proxyt(double a, double b, PROXYT p);

Малює графік для функції, заданої параметрично за допомогою процедури p(x,y,t), параметри a,b визначають інтервал значень t.

15.5. Функції графічного виведення

void ropen();

Ініціалізація графічного режиму. Встановлюється графічне вікно з параметрами по умовчанню. Координати точки, що відповідає лівому нижньому куту вікна, дорівнюють x = -4, y = -3 , а координати правого верхнього кута мають координати x = 4, y = 3. За допомогою функції wind.scale можна встановити будь-які іншу систему координат і масштаб.

void rclose();

Виконується перехід із графічного режиму виведення на екран в текстовий.

void rclear();

Очищення поточного графічного вікна.

int pix(double xr);

Перетворення значення відносної x-координати точки в значення її абсолютної координати.

int piy(double yr);

Перетворення значення відносної y-координати точки в значення її абсолютної координати.

void rmoveto(double x, double y);

Аналог функції moveto зі стандартної бібліотеки. Встановлює курсор графічного вікна в положення, що відповідає координатам x,y.

void rputpixel(double x, double y, int col);

Аналог функції putpixel зі стандартної бібліотеки. Малює на екрані точку з координатами x,y, використовуючи при цьому колір малювання col.

void rlineto(double x, double y);

Аналог функції lineto зі стандартної бібліотеки. Малює відрізок прямої лінії починаючи з поточної точки графічного вікна й до точки з координатами x,y.

void rline(double x1, double y1, double x2, double y2);

Аналог функції line зі стандартної бібліотеки. Малює відрізок прямої лінії починаючи із точки з координатами x1,y1 і до точки з координатами x2,y2..

void rball(double x, double y, float R);

Аналог функції circle зі стандартної бібліотеки. Малює коло із центром у точці з координатами x,y і з радіусом R.

void rbox(double x1, double y1, double x2, double y2);

Аналог функції rectangle зі стандартної бібліотеки. Малює прямокутник, x1,y1 - координати лівого нижнього кута, x2,y2 - координати правого верхнього кута.

void rfloodfill(double x, double y, int clr, int brd);

Аналог функції floodfill. Виконує заливання фігури кольором clr до границі з кольором brd починаючи із точки з координатами x,y.

void rwinbox(int col=15, int th=1);

Малює прямокутну рамку для поточного графічного вікна із зазначеними кольором й товщиною лінії. Якщо ця функція викликається без фактичних параметрів, то, за умовчанням, використовуються значення col=15, th=1.

void rwinbk(int colbk);

Створює фон поточного вікна, зафарбовуючи його кольором colbk.

void rfillball(double x, double y, double R, int col);

Малює зафарбоване коло, x,y - координати центру, R - радіус, col - колір зафарбовування.

15.6. Приклади програм з графічним виведенням

Давайте подивимося, що необхідно записати в програмі, щоб відкрити графічне вікно з параметрами по умовчанню і намалювати на екрані коло.

// Приклад 1

#include "rgraph.h"

void main()

{ PathBGI="D:\\bc5\\bgi";

// у системній змінній PathBGI повинен бути записаний шлях // до папки із графічними драйверами

ropen(); // ініціалізація графічного вікна

rball(0,0,1.5); // малювання кола з радіусом 1.5

pause; // пауза до натискання клавіші

rclose(); // повернення екрану у текстовий режим

}

У наведеному нижче прикладі використовуються функції управління графічним вікном і деякі функції малювання.

// Приклад 2

#include "rgraph.h"

void main()

{ ropen(); // ініціалізувати графічне вікно

double Ms=1.0, Ar=0.75; // Ms – відносний розмір графічного // вікна

for (int i=0;i<12;i++)

{ wind.setup(Ms,Ar);

// установити максимальний розмір вікна

rwinbox(12); // намалювати рамку графічного вікна

wind.scale(-1,-1,1,1);

// установити масштаб графічного вікна

rbox(-0.7,-0.7,0.7,0.7); // намалювати прямокутник

rball(0,0,0.5); // намалювати коло

rfillball(0,0,0.3,1); // намалювати круг

rfloodfill(-0.68,-0.68,15); // виконати зафарбовування

pause; // пауза до натискання клавіші

Ms* = 0.75; // установити менший розмір вікна

rclear(); // очистити вікно

}

rclose(); // перейти у текстовий режим

}

Приклад програми, що виводить на екран графік функції, яка надається як функція С++.

// Приклад 3

#include "rgraph.h"

float f(float x) // функція, графік якої необхідно

{ return sin(10*x)*exp(-x/2); // намалювати

}