ї в центрі екрану. У таких випадках, встановивши початок координат в точці (x 0, y 0) на екрані, можна координати (x, y) довільної точки кривої визначати різницею (xx 0, yy 0). Після цього в програмі можна вживати не тільки позитивні, але і негативні значення.
Малюнок 2.4.1
Малюнок виходить маленьким, тому потрібно збільшити масштаб зображення. Якщо для функції буде використаний весь екран, треба збільшити малюнок по x і по y в залежності від обраного екрана.
Вибрати масштаб збільшення можна наступним чином:
визначити горизонтальний і вертикальний розміри графіка (для цього вводяться кордону області значень і визначаються максимальне і мінімальне значення функції на заданій області визначення, потім обчислюються різниці максимального і мінімального значень аргументів і функції, які і є горизонтальним і вертикальним розмірами графіка відповідно);
визначити масштаб (спочатку визначаються масштаби зображення по горизонталі і вертикалі з урахуванням розмірів вибраного екрана по формулі: масштаб (г/в)=розмір екрану (по г/в)/розмір графіка (по г/в ), потім з них вибирається менший, який і приймається за необхідний масштаб. У нашому випадку графічний екран має розміри 640 на 480.
У кожному разі, щоб висвітити на екрані точку, треба взяти x, обчислити за даною абсциссе y і виконати малювання точки. Так як на екрані можна отримати лише обмежену кількість значень х, то їх перебираємо за допомогою циклу.
Для перекладу поточних координат точки з декартової системи координат в систему пристрою можна скористатися формулами:
nx:=round ((x-xmin)/(maxx-minx) * nx_max);:=round ((y-ymax)/(maxy-miny) * ny_max);
де: x, y - координати поточної точки;
xmax, xmin - діапазон зміни x в декартовій системі координат;
ymax, ymin - діапазон зміни y в декартовій системі координат;
nx_max - кількість піксел по ширині екрана, можна отримати за допомогою функції Getmaxx;
ny_max - кількість піксел по висоті екрану, можна отримати за допомогою функції Getmaxy;
Їх зручно оформити у вигляді функцій. Задану формулу для графіка теж краще оформити у вигляді функції, тоді вийде універсальна програма.
Краще для малювання графіка використовувати процедуру line, а не putpixel, тому графік вийде без розривів.
Розглянемо побудову графіка функції, заданої параметрично. На відміну від функції, заданої в явному вигляді y=f (x), параметр х в цьому випадку також є функцією, залежною від деякого значення.
графічний pascal програмування
2.5 Побудова найпростіших графічних зображень
Відображення крапки
Які б зображення не виводилися на екран, всі вони побудовані з точок. Процедура PutPixel (X, Y: integer; Color: word); відображає точку на екрані, де X і Y - екранні координати точки. Color - її колір.
Наведемо приклад програми, при виконанні якої створюється цікавий візуальний ефект шляхом заповнення екрану безліччю точок різних кольорів.
Відображення відрізків прямих ліній
Процедура Line (Xl, Yl, X2, Y2: integer); виводить на екран відрізок прямої лінії. Тут (X1, Y1) - координати початкової точки, a (X2, Y2) - координати кінцевої точки відрізка.
Для побудови відрізків можна застосовувати також наступні процедури:
LineTo (X, Y);- Проводить відрізок з поточної точки до точки з координатами (X, Y);
LineRel (dX, dY |; - проводить відрізок з поточної точки до точки, віддаленій від неї на відстань (dX, dY). Лінії можна викреслювати самих різних стилів: тонкі, широкі, штрихові, пунктирні і т.д. Процедура SetLineStyle ( lt; тип лінії gt;: word; lt; yзop (maблон) gt ;: word; (товщина лінії): word); виробляє установку стилю. Константи типу ліній і їхньої товщини наведені в таблиці.
Таблиця 2.5.2. Константи типу ліній і їх товщини
ІмяЗначеніеНазначеніе Коди типів ліній (для процедури SetLineStyle) SolidLn0CплошнаяDottedLn1ПунктирнаяCenterLn2ШтрихпунктирнаяDashedLn3ШтриховаяUserBitLn4Заданная користувачем Коди товщини лінії NormWidth1НормальнаяThickWidth3Толстая
Якщо тип лінії НЕ дорівнює UserBitLn, то параметр «візерунок (шаблон)» не використовується і зазвичай задається рівним нулю, наприклад SetLineStyle (0,0,3) - стиль лінії - суцільна, жирна.
Побудова прямокутників
<...