Відображення базових графічних примітивів - лінія, прямокуктик, сектор, ламана, еліпс, налаштування стилю та кольору примітивів засобами мови прогрмування (задачі)


Написання програм, що малюють квадрати
Напишемо програму, що малює квадрат зі стороною 100 пікселів блакитного кольору у першій координатній чверті.

Уявимо собі, що має бути результатом виконання програми.
Мал. 3
 (Координатні осі і точки ми не малюємо, лише контур квадрата)
Намагайтеся подумки повторювати рухи черепашки, особливо зверніть увагу, як вона повертає. На мал.3 відмічено кути, на які має повертати черепашка. Всі вони прямі, тобто дорівнюють 90 градусів. Поворот здійснюється завжди вліво.
Напишемо програму. По-перше, треба підключити модуль графічних можливостей:
from  turtle import *
По-друге, треба встановити колір. Чому саме напочатку малювання? Ви спочатку берете олівець блакитного кольору, а потім починаєте ним малювати. Так само і колір сліду черепашки змінюється  тільки після відповідної команди:
color('blue')
Після підключення модуля для малювання сторони можна використати команду forward(100)
Щоб черепашку зорієнтувати у першу чверть, треба повернути її наліво. На скільки градусів? Оскільки кути квадрата прямі, і 180-90=90, то остаточно команда виглядатиме так: left (90)
Після цієї команди черепашка буде дивитися вверх, далі треба їй сказати намалювати другу сторону і повернутися для малювання третьої. Це будуть команди:
forward(100)
left (90)
Аналогічно домальовуємо третю і четверту сторони квадрата:
forward(100)
left (90)
forward(100)
left (90)
Остання команда повороту необхідна для зорієнтування черепашки у початковий напрямок, тобто строго направо. Це просто необхідно, адже при малюванні складних малюнків важливо знати, куди дивиться черепашка.
Маємо програму:
from turtle import *
color('blue')
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
Запам'ятавши її під ім'ям, наприклад kvadrat.py, і запустивши на виконання натиском F5, ми побачимо, як черепашка просувається по екрану. В кінці виконання матимемо:

Мал. 4

Як змінити програму, щоб точка з координатами (0, 0) була не лівою нижньою точкою квадрата, а його центром?

 Мал. 5
Треба перенести точку початкового малювання у точку А. Якщо сторона квадрата дорівнює 100 пікселів, то координати точки А (-50, -50). Але переносячи черепашку у точку з такими координатами, варто пам'ятати, що при перенесенні черепашка не повинна залишати слід. Цього можна досягнути такою послідовністю команд:
up()
goto(-50,-50)
down()
А далі так само малюємо квадрат. Остаточно програма kvadrat2.py матиме вигляд:
from turtle import *
up()
goto(-50,-50)
down()
color('blue')
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)

Квадрат можна намалювати і використовуючи команду goto.
Для цього треба знати координати вершин і обходити їх послідовно за годинниковою стрілкою чи проти, але лише в одному напрямку.
Подамо код готової програми:
from turtle import *
color('blue')
goto(100,0)
goto(100,100)
goto(0,100)
goto(0,0)
Результат виконання програми буде такий самий як на мал.4.
Для того, щоб намалювати квадрат з центром у точці (0, 0), треба знову ж таки знати координати вершин А, В, С, D.

 Мал. 6
Починати малювати  при цьому можна з будь-якої точки. Подамо програму, що малює квадрат за годинниковою стрілкою, починаючи з точки D:
from turtle import *
color('blue')
up()
goto(-50, 50)
down()
goto(50,50)
goto(50,-50)
goto(-50,-50)
goto(-50,50)
Виділена частина програми є ніби підготовкою перед малюванням.

Написання програм, що малюють трикутники
Напишімо програму, що малює рівносторонній трикутник зі стороною 60 пікселів товщиною лінії 3 зеленого кольору.
Уявимо, який результат має видавати ще ненаписана програма:
 Мал.7.
Точкою А на малюнку відмітимо початкову точку малювання. Дугами показано, на які кути має повертати черепашка. Визначимо їх градусну міру:
Оскільки трикутник рівносторонній, то всі його внутрішні кути дорівнюють 180/3=60 градусів. Кут повороту черепашки є суміжним до внутрішнього кута, а тому його градусна міра дорівнює: 180-60=120 градусів.
Пригадаємо, яким чином змінити колір і товщину сліду, що залишає черепашка. Це будуть команди:
color(‘green')
width(3)
Остаточно програма малювання заданого трикутника матиме вигляд:
from turtle import *
color('green')
width(3)
forward(60)
left(120)
forward(60)
left(120)
forward(60)
left(120)
Результат виконання програми буде наступним:
Мал. 8

 Програми, що малюють КОЛО
Напишемо програму, яка малює жовте коло радіуса 40 з центром у точці (0, 0) і товщиною лінії 4.
Уявимо, який має бути результат виконання цієї програми:
 

Мал. 9
Здавалося б, що може бути простіше:
  • 1. підключив модуль turtle from turtle import *
  • 2. встановив колір сліду color('yellow')
  • 3. встановив товщину сліду width(4)
  • 4. намалював коло circle(40)
Але є одна особливість малювання кола: circle(40) малює коло радіуса 40, яке повністю знаходиться зліва від положення  черепашки. Оскільки черепашка напочатку дивиться строго вправо, то точка початку малювання (в даному випадку точка (0,0)) буде найнижчою точкою кола. Коло буде лише дотикатися осі Ох.
Якби черепашка дивилася б наліво, то командою circle(40)  малювалося б коло, а точка початку малювання була б найвищою точкою. Якби черепашка дивилася б строго вверх, то точка початку малювання була б найправішою точкою кола. Якби черепашка дивилася б строго вниз, то точка початку малювання була б найлівішою точкою кола. Робимо висновок: залежно від того, коди дивиться черепашка, отримуємо різні положення кола.
Напочатку програми черепашка дивиться вправо. Тому початок малювання має бути найнижчою точкою кола. Це точка А. Знайдемо її координати: оскільки радіус кола за умовою дорівнює 40 пікселів, то ОА=40, то координати точки А(0, -40).
Підготовка до малювання кола буде такою:
1. підняти перо, щоб при пересуванні у точку А, черепашка не залишала сліду → up()
2. пересунути черепашку у точку А  → goto(0,-40)
3. опустити перо, щоб черепашка почала залишати слід при пересуванні → down()
4. лише після цього малювати коло.
Остаточно програма виглядатиме так:
from turtle import *
up()
goto(0,-40)
down()
color('yellow')
width(4)
circle(40)
Зверніть увагу, що спочатку ми переносимо черепашку, а потім малюємо з нової позиції коло, а не навпаки.
Результат виконання програми тепер є правильним:
 Мал. 10


Додаткове завдання
Напишіть програму, що малює ялинку. Розміри та точки вказані на малюнку. Кожен елемент намалювати за годинниковою стрілкою.
   
      
     

Комментариев нет:

Отправить комментарий