Урок " Стандартні графічні процедури і функції для роботи з координатами, вікнами"

Про матеріал

Розширений додатковий матеріал для вивчення теми "Комп'ютерна графіка Pascal"

Структура:

  1. Методи використання абсолютних та відносних координат
  2. Приклади програм з використанням відносних координат
Перегляд файлу

Стандартні графічні процедури і функції для роботи з координатами, вікнами.

 

Для побудови зображення у графічному режимі використовують систему координат, яка відрізняється від текстового режиму (екран представляється у вигляді прямокутного масиву символів і координати Х, Y починаються з 1 … max значення).

Відлік координат починається з верхнього лівого кута екрана з координатами (0, 0). При цьому екран представляється у вигляді прямокутного масиву адресованих точок (пікселів). Для різних типів адаптерів та режимів кількість точок по вертикалі та горизонталі суттєво відрізняється.

Для визначення максимальних значень координат екрану, в модулі GRAPH використовують функції:

GetMaxX: integer; GetMaxY: integer.

 

Особливості: якщо при адресації точок вказуються значення координат, які перевищують максимальні, то операція ігнорується.

Спосіб побудови зображень з використанням абсолютних координат не завжди є зручним, оскільки виникають випадки, коли необхідно змінювати розташування, чи розміри зображень.

При використанні абсолютних координат це є  неможливим, принаймні для швидкого коригування програм, що є дуже незручним. Також даний метод є дещо незручним при побудові зображень із симетричними об’єктами.

В такому випадку використовують метод відносних координат – метод, коли координати графічних елементів задаються не відносно початку координат екрану, а відносно змінних, яким задаються певні значення координат перед початком побудови. При використанні даного методу, переміщення графічних об’єктів зводиться до зміни значень лише двох координат. У випадку масштабування вводяться додаткові змінні – коефіцієнти, які множаться на значення координат.

Зобразимо систему відносних координат. Початок машинної системи координат, напрямок осей, а також максимальні значення координат монітора показані на рисунку.

 На рисунку представлено також машинну (xm, ym) та фізичну (відносну - x, y) системи координат. Для зображення на екрані точки з фізичними координатами (x, y) необхідно визначити її машинні координати (xm, ym). Розрахункові формули мають наступний вигляд: xm=x0+x*Mx, ym=y0-y*My,

де Mx, My-масштаби відповідно по осях x і y, які показують кількість пікселів в одній фізичній одиниці, x, y- фізичні координати точки, xm, ym- машинні координати точки, x0, y0- машинні координати початку фізичної системи координат.

Така система використовується скоріше для побудови складних об’єктів (таких що мають багато елементів), наприклад побудова корабля, автомобіля, тощо.

             

Приклад: Намалювати корабель, використовуючи відносну систему координат.

 

 

При побудові зображень із симетричними елементами використовую умовні осі симетрії, проведені через середину рисунка. Зазвичай такі побудови виконуються відносно центру екрану. Відомо, що у графічному режимі Pascal координати центру рівні (319,239), проте не завжди можна згадати ці числа. Їх можна визначити за допомогою нескладних розрахунків – максимальні значення координат (функції GetMaxX та GetMaxY) – розділивши націло на 2:

координати центру екрану:

xс:= GetMaxX div 2;

yс:= GetMaxY div 2;

 

На рисунку представлено розподіл координат         екрану            через   розділ їх максимальних            значень.          Наприклад, координати центру можна представити як (GetMaxX div 2, GetMaxY div 2), ліва нижня четверть – (GetMaxX div 4, GetMaxY div 4*3), права половина        – (GetMaxX    div       4*3,

GetMaxY div 2), тощо.

 

Приклад: Написати програму, яка виконує наступні дії:

1.      будує на екрані сітку з трьох горизонтальних ліній і трьох вертикальних, які перетинаються в центрі, серединах і четвертях;

2.      побудувати зафарбовані квадрати в 9-ти точках, де перетинаються прямі. Для побудови використати відносні координати.

Для спрощення і зрозумілості коду, на початку побудови, для змінних x та y присвоїмо відповідні максимальні значення координат.

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

 

 

 

 

Program GrafikaKoordunatu;  uses graph, crt;  var gr, gd:integer; x, y:integer; begin   gd:=detect;   initgraph(gr,gd,'../bgi'); if graphrezult<>0 then writeln(‘Error’) else begin

   x:=getmaxx; y:=getmaxy;

   Line(x div 4,0,x div 4,y);

   Line((x div 2),0,(x div 2),y);

   Line((x div 4)*3,0,(x div 4)*3,y);

   Line(0,y div 4,x,y div 4);

   Line(0,(y div 2),x,(y div 2));

   Line(0,(y div 4)*3,x,(y div 4)*3);

   Bar((x div 2)-25,(y div 2)-25,(x div 2)+25,(y div 2)+25);

   Bar((x div 4)-25,(y div 2)-25,(x div 4)+25,(y div 2)+25);

   Bar((x div 4)*3-25,(y div 2)-25,(x div 4)*3+25,(y div 2)+25);

   Bar((x div 2)-25,(y div 4)-25,(x div 2)+25,(y div 4)+25);

   Bar((x div 4)-25,(y div 4)-25,(x div 4)+25,(y div 4)+25);

   Bar((x div 4)*3-25,(y div 4)-25,(x div 4)*3+25,(y div 4)+25);

   Bar((x div 2)-25,(y div 4)*3-25,(x div 2)+25,(y div 4)*3+25);

   Bar((x div 4)-25,(y div 4)*3-25,(x div 4)+25,(y div 4)*3+25);

Bar((x div 4)*3-25,(y div 4)*3-25,(x div 4)*3+25,(y div 4)*3+25);   End; readkey;    Closegraph;  end.

pdf
Додав(-ла)
Апенера Вадим
Додано
19 жовтня 2018
Переглядів
1329
Оцінка розробки
Відгуки відсутні
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку