* sin (pi/2 ) +0 * cos (pi/2); (320 + round (x1), 240-round (y1));: = 30 * cos (pi/2) -50 * sin (pi/2); y1: = 30 * sin (pi/2) +50 * cos (pi/2); (320 + round (x1), 240-round (у1));: = 0 * cos (pi/2) -0 * sin (pi /2); y1: = 0 * sin (pi/2) +0 * cos (pi/2); (320 + round (x1), 240-round (y1));
Визначення нових координат точки, отриманих в результаті повороту на кут а, можна оформити у вигляді функції користувача. Тоді алгоритм побудови трикутника, отриманого в результаті повороту і східного зображення на кут а = 90 ', запишеться в більш компактному вигляді:
function х (а, Ь, с: integer): integer;
х: = round (a + cos (c * pi/180)-b * sin (c * pi/180));; y (a, b, c: integer): integer; : = round (a * sin (c * pi/180) + b * cos (c * pi/180));; (320 + x (0, 0, 90), 240-y (0, 0, 90) ), (320 + x (60, 0, 90), 240-y (60, 0, 90)), (320 + x (30, 50, 90), 240-y (30, 50, 90)), (320 + x (0, 0, 90), 240-y (0, 0, 90));
.2.2 Створення орнаментів
Використовуючи правила повороту, можна створювати базові фігури для орнаментів, що складаються з однакових елементів. Наприклад, якщо алгоритм повороту трикутника на кут 90 'повторити для а = 180', 270 ', то отримаємо фігуру відповідно з малюнком 13а, яку можна використовувати в якості базової для побудови лінійного орнаменту відповідно з малюнком 3.6. br/>В
Малюнок 13 - Поворот, створення орнаментів.
.2.3 Моделювання руху
Використовуючи правила повороту, можна моделювати рух об'єкта на екрані.
Алгоритм руху об'єкта відносно заданої точки:
) задати початкове значення змінної i - кута повороту;
) поки i менше або дорівнює кінцевому значенню, виконувати наступну послідовність дій:
{намалювати об'єкт;
зафіксувати положення об'єкту на екрані;
намалювати об'єкт кольором фону екрану;
змінити координати об'єкта за формулами повороту;
: = i + di}
Приклад.
Поворот трикутника щодо центру екрана (режим 640x480):
i: = 0 to 360 do {кут повороту змінюється від 1 до 360 градусів}
begin (6), {малюємо об'єкт} {320 + х (0, 0, i), 240-у (0, 0, i)), (320 + х (60, 0, i), 240-у (60, 0, i)); (320 + х (30, 50, i), 240-у (30, 50, i)); (320 + х (0, 0, i) , 240-у (0, 0, i));
delay (100); {фіксуємо положення об'єкту на екрані} (O); (малюємо об'єкт кольором фону екрана)
moveto (320 + х (0, 0, i), 240-у (0, 0, i)); (320 + х (60, 0, i), 240-у (60 , 0, i)); (320 + х (30, 50, i), 240-у (30, 50, i)); (320 + х (0, 0, i), 240-у (0, 0 , i...