Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по QBasic.doc
Скачиваний:
4
Добавлен:
29.04.2019
Размер:
5.12 Mб
Скачать

Лабораторна робота № 19

Побудова багатовимірних зображень

Мета роботи – вивчення засобів машинної графіки QBASIC для побудови багатовимірних зображень.

Теоретична частина

Функція U називається функцією N змінних (аргументів) X, Y, Z,…,T, якщо кожній сукупності значень X, Y, Z,…,T, з області їх зміни, відповідає визначене значення U. Функціональна залежність позначається так:

U=F(X, Y, Z,…,T)

Про функції двох змінних

Площа прямокутника, що має 4см в довжину і 6 см в ширину, дорівнює 4*6 = 24 см2. У загальному випадку площа Z прямокутника з довжиною сторін X і Y виражається формулою Z = X*Y. У такому випадку кажуть , що Z є функція від X і Y, або Z є функція двох змінних X і Y.

Можна навести багато прикладів залежності однієї величини від двох інших. Розглянемо формулу для об’єму V циліндра, що виражається через його висоту HT і радіус R:

V = PI*R*R*HT.

Значення V залежить від значень, що приймає R і HT (PI – постійна величина ). Таким чином, V є функція двох змінних R і HT. Приведемо ще декілька прикладів функцій двох змінних:

Z = COS(X*Y)

Z = COS(X*EXP(-Y/5))

Z = SIN(X)*COS(Y)

Z = COS(X)*COS(Y)

Z = X-X*X*X/12 – Y*Y/2

Z = 5 – (X+2) * (X+1) * (X-1) * *(X-2) – Y*Y.

Як мають «виглядати» такі функції? Ви вже познайомилися з тим, як креслити графік функції однієї змінної.

Спробуємо застосувати аналогічну процедуру для функцій двох змінних. Якщо Z функція X і Y, то для кожного значення X і Y можна обчислити відповідне значення Z. Якщо у нашому розпорядженні було б три виміри, то ми змогли б побудувати точку з висотою Z над точкою з координатами (X, Y). В результаті отримали б поверхність схожу на острів.

Екран нашого комп’ютера та лист паперу не мають трьох вимірів. Тому нам потрібно зобразити ці три виміри з допомогою можливостей двовимірного простору; це дуже нагадує фотографію або рисунок куба.

Припустимо, що цей куб є частиною трьохвимірного простору, в якому нам потрібно побудувати графіки. Саму нижню вершину назвемо початком координат, праве нижнє ребро буде віссю X, а ліве нижнє – віссю Y. Ребро, що виходить з даної вершини вертикально, буде відповідати третьому виміру.

Таким чином, основа куба представляє собою кусок площини X, Y, а точки на ній задаються своїми декартовими координатами (X, Y).

Щ об зобразити графік, ми знаходимо точку (X, Y) в основі куба, потім обчислюємо відповідне значення Z і помічаємо точку над точкою (X,Y) на відстані Z.

Щоб отримати на нашому екрані необхідне пояснення, потрібно знати відповідність між координатами екрана і координатами куба. Якщо (А,В) означає координати екрану для точки, що лежить в основі куба, то значення X і Y можна отримати за наступною формулою (тут через S=SQR(2)/2):

X = S*A + S*B

Y = -S*A + S*B.

Для того, щоб побудувати графік, потрібно почати з точок, що лежать в основі куба. Припустимо, що така точка на нашому екрані має координати (А,В). По виписаним вище формулам обчислюємо відповідні координати (X,Y) в основі куба. Використовуючи значення X і Y, знаходимо значення Z. Тепер ми можемо побудувати на нашому екрані точку з координатами (А,В + Z). Проте для того, щоб отримати більш глибшу перспективу ми зменшуємо вертикальний відрізок, помноживши його довжину на S. На екрані зявляється точка з координатами (A, S*(B + Z)).

Якби ми побудували такі точки для усіх точок в основі куба, то отримали б щось незрозуміле. Щоб запобігти цьому, ми будуємо тільки вибранні точки, як правило, ті, які відповідають точкам на прямих, паралельних осі X і (або) осі Y. Тому поверхня виглядає так, наче її відрізали на площині. Нижче приводиться подібний приклад.

Д алі на рисунках наведено ще декілька прикладів.

Програма “Поверхні” дозволяє креслити графіки функцій двох змінних. Якість отриманих графіків в більшій мірі залежить від графічних пристроїв вашого комп’ютера. Програма передбачає побудову 5 функцій.

Приклад розв’язання завдання для лабораторної роботи:

Побудувати графік функцій двох змінних:

Z= COS(R)

Z=EXP(-R*R)

Z=SIN(R)/R

R=SQR(X*X+Y*Y)

Z=COS(X)*COS(Y)

Мавпяче сідло

Програма

BEGIN1:

CLS

' Графіки в полярних координатах

SX = 200 ' Розмір екрана по горизонталі

SY = 220 ' Розмір екрана по вертикалі

ratio =0.6 ' Робить рядки однаковими по вертикалі і по горизонталі

HY = SY / 2'Візьміть прийнятні для вашого комп’ютера

HX = SX / 2'значення SY, SX

S = SQR(2) / 2

AA = HX * S

CLS

PRINT "Поверхні"

PRINT: PRINT "1. Z= COS(R)"

PRINT: PRINT "2. Z=EXP(-R*R)"

PRINT: PRINT "3. Z=SIN(R)/R", де R=SQR(X*X+Y*Y)"

PRINT: PRINT "4. Z=COS(X)*COS(Y)"

PRINT: PRINT "5. Мавпяче сідло"

PRINT: PRINT "Вкажіть номер рівняння"

INPUT N

CLS 'Побудова графіків

SCREEN 9

COLOR 14, 1

FOR A = -AA TO AA + 5 * S

MAX = -HX

BB = AA + A - 10 * S * INT((A + ABS(A)) / (10 * S))

FOR B = -BB TO BB + S * 4 STEP 10 * S

X = S * (A + B): Y = S * (B - A): Z = B: R = SQR(X * X + Y * Y)

IF N = 1 THEN Z = 10 * COS(R / 5) + B

IF N = 2 THEN Z = 75 * EXP(-R * R / 600) + B

IF N = 3 AND R <> 0 THEN Z = 125 * SIN(R / 5) / R + B

IF N = 4 THEN Z = 10 * COS(X / 10) * COS(Y / 10) + B

IF N=5 AND R <> 0 THEN Z =X*Y*(X-Y)*(X+Y)/(1000*R)+B

IF Z < MAX THEN GOTO BEGIN3

MAX = Z

U = HX + A

V = HY + Z * S / ratio

IF V < 0 OR V > SY THEN GOTO BEGIN3

PSET (50 + U, 20 + V)

BEGIN3:

NEXT B

NEXT A

'Вибір закінчення чи повтору програми

LOCATE 1, 2

PRINT "Якщо потрібно повторити виконання програми" PRINT "натисніть Y, якщо ні — N"

BEGIN2:

G$ = INKEY$

IF G$ <> LCASE$("Y") AND G$ <> LCASE$("N") THEN GOTO BEGIN2

IF G$ = LCASE$("Y") THEN GOTO BEGIN1

END