Академический Документы
Профессиональный Документы
Культура Документы
Работа с Графикой Питон
Работа с Графикой Питон
графика
1. Простые программы
1
Графика в Python 2
Система координат
начало
координат
(0,0) X
x (x,y)
Y
К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru
Графика в Python 3
Определение координат
(0,0) X
?
базовая точка (200,50)
200 ?
(100,100) (300,100)
?
?
(50,150) (200,150) 100 ?
(350,150)
(100,200) (300,200)
? (200,250) ?
?
Y
Управление цветом
Подключение графического модуля:
from graph import * подключить все
функции модуля graph
Цвет линий:
penColor( "red" )
white, black, gray, navy, blue, cyan,
green, yellow, red, orange, brown, maroon,
violet, purple, ...
http://www.science.smith.edu/dftwiki/index.php/Color_Charts_for_TKinter
Толщина линий:
penSize( 2 )
Цвет заливки:
brushColor( "green" )
К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru
Графика в Python 5
penColor( 0, 0, 0 ) "black"
(x1, y1)
penColor(0, 255, 0)
(x2, y2)
line(x1, y1, x2, y2)
(10, 20)
penColor("blue")
brushColor("yellow")
rectangle(10, 20, 50, 40)
(50, 40)
(10, 10)
penColor("cyan")
brushColor("magenta")
polygon( [(10,10), (50,50),
(10, 50) (50, 50) (10,50), (10,10)] )
(50, 30)
R=20
penColor("red")
brushColor("green")
circle(50, 30, 20)
Пример
from graph import *
(200, 50)
penColor("magenta")
brushColor("blue")
(100, 100)
rectangle(100,100,300,200)
brushColor("yellow")
polygon([(100,100), (200,50),
(200, 150) (300, 200) (300,100), (100,100)])
penColor("white")
brushColor("green")
circle(200, 150, 50)
run()
К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru
Графика в Python 9
Задачи
«3»: «Домик»
«4»: «Лягушка»
Задачи
«5»: «Корона»
2. Процедуры
11
Графика в Python 12
Процедуры
Задача: Построить фигуру:
Процедуры (подпрограммы)
Процедура – это вспомогательный алгоритм, который
предназначен для выполнения некоторых действий.
Применение:
• выполнение одинаковых действий в разных местах
программы
• разбивка программы (или другой процедуры) на
подзадачи для лучшего восприятия
Задача
(x, y-60)
Параметры:
60 x, y – координаты угла
с – цвет заливки
100 (x+100, y)
(x, y)
К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru
Графика в Python 15
Процедура
(x, y-60)
60
100 (x+100, y)
(x, y)
определить
(define) название параметры
Программа с процедурой
аргументы (значения
параметров)
К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru
Графика в Python 17
Задания
«3»: Используя одну процедуру, построить фигуру.
Задания
«5»: Используя одну процедуру, построить фигуру.
3. Циклы
19
Графика в Python 20
Использование циклов
40 100 160
40
? Что меняется?
x = 40 "сделай 5 раз"
for i in range(5):
circle(x, 40, 20)
x += 60
К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru
Графика в Python 21
Использование циклов
40 100 160
40
100
160
x = 40
for i in range(5): ! Можно сделать это
процедурой с
circle(x, 40
40, 20)
параметром y!
x += 60 y
Использование циклов
from graph import *
def row ( y ):
x = 40 процедура
for i in range(5):
circle(x, y, 20)
x += 60
y = 40
for k in range(3): вызов
row ( y ) процедуры
y += 60
run() вниз на 60
Задания
«3»: Ввести с клавиатуры число N и нарисовать
N рядов по 5 кругов.
Пример (N = 3):
Задания
«4»: Ввести с клавиатуры число N и нарисовать
из кругов прямоугольный размером N на N.
Пример (N = 3):
Задания
«5»: Ввести с клавиатуры число N и нарисовать
из кругов равнобедренный треугольник с
высотой N. Каждый ряд должен быть
покрашен в свой цвет.
Пример (N = 3):
Задания-2
«3»: Ввести с клавиатуры число N и нарисовать
N вертикальных рядов по 5 ромбиков.
Пример (N = 2):
Задания-2
«4»: Используя циклы и процедуры, нарисуйте
узор. Число повторений рисунка N введите с
клавиатуры.
Пример (N = 3):
Задания-2
«5»: Используя циклы и процедуры, нарисуйте
узор.
4. Штриховка
29
Графика в Python 30
Штриховка
N линий (N=5)
(x1, y1)
x2 x1
x1+h ? Как найти h? h
N 1
В цикле менять x:
h line( x, y1, x, y2)
(x2, y2)
Штриховка
N линий (N=5)
(x1, y1)
меняется!
line( x
x, y1, x
x, y2)
? Как меняется?
h (x2, y2)
x=?
для 1-й линии
x = x1 + h
for i in range(N): "сделай N раз"
line(x, y1, x, y2)
x += h для следующей ? Что плохо?
линии
К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru
Графика в Python 32
Штриховка
Сложная штриховка
a
(x1, y1) (x3+a, y1) ? Как найти a и h?
x3 x2
a x1 x2 h
(x2, y2) (x3, y2)
N 1
h
line( x1+h, y1, x1+h-a, y2);
line( x1+2*h, y1, x1+2*h-a, y2);
line( x1+3*h, y1, x1+3*h-a, y2);
...
x x-a ?
Как меняется x?
Сначала: В цикле:
x = x1 + h x += h
К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru
Графика в Python 34
x2 x1 y2 y1
hx hy
hy
N 1 N 1
N
Сначала: В цикле:
x = x1+hx x += hx
(x2, y2) y = y1+hy y += hy
Задания
«3»: Ввести с клавиатуры количество линий,
построить фигуру и выполнить штриховку:
Задания
«5»: Ввести с клавиатуры количество линий и
построить фигуру:
5. Закрашивание областей
37
Графика в Python 38
Задания
«3»: Ввести с клавиатуры число полос и построить
фигуру, залив все области разным цветом.
Задания
«5»: Ввести с клавиатуры число полос и построить
фигуру, залив все области разным цветом.
или
41
Графика в Python 42
Графики функций
Задача: построить график функции y = x2 на отрезке от
-2 до 2. Y
Анализ:
максимальное значение
ymax = 4 при x = ±2
минимальное значение
ymin = 0 при x = 0 X
Проблема: функция задана в математической системе
координат, строить надо на экране, указывая
координаты в пикселях.
Преобразование координат
Математическая Экранная система
система координат координат (пиксели)
x0
(0,0)
Y
y0 yэ
x xэ
(x,y)
(xэ,yэ)
y
(0,0) X
k – масштаб (длина
изображения единичного xэ = x0 + kx
отрезка на экране) yэ = y0 - ky
К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru
Графика в Python 44
Оси координат
x0 (x0,0)
(0,0)
y0
150
(0,y0) (x0+150,y0)
(x0,y0+20)
Строим по точкам
...
x = xmin # начальное значение x
h = 0.02 # шаг изменения x
penColor("red")
while x <= xmax:
y = x*x # функция
xe = x0 + k*x экранные координаты
(в пикселях)
ye = y0 - k*y
point(xe, ye) # точка на экране
x += h # к следующей точке
run()
Задания
«3»: Построить график функции
y x2
на отрезке [-2,2].
«4»: Построить
y x 2 yграфики
x 2 функций
и
на отрезке [-2,2].
Задания
«5»: Построить графики функций
x y2 и x y2
на отрезке [-2,2].