Български шевици. Работа по проект
Български шевици
Знаете ли за шевицата „канатица”?
Канатицата е символ, който се среща на различни места на Земята, без значение от религия и раса. Фигурата символизира безкрайният и вечен живот. Обикновено се поставя върху подвижни предмети – килими, традиционни носии, кърпи и др.
Когато бродирали или тъкали символи, жените ги наричали – за годеж, за сватба, за семейство. В българската народна традиция два триъгълника, допрени с върховете си, символизират годеж (връзката между мъжа и жената). Когато триъгълниците се застъпят, символизират сватба. Ако към двата триъгълника встрани се добавят по още два, то шевицата символизира семейството – жената, мъжа и децата. С още триъгълници се получават символите за род и за народ. Всяка шевица има своето име.
Модул turtle
Чертането в Python се реализира чрез обект от клас Turtle и основните му функции (методи) за движение, завъртане, избор на цвят и т.н. Тези методи са обединени в специална библиотеката – модула turtle. За да покажем, че ще използваме модула turtle, в началото на кода в Python трябва да зададем командата: import turtle. Създаваме екран, върху който ще чертаем – обект от клас Screen. Създаваме костенурка – обект, който ще чертае върху екрана. Костенурката е обект от клас Turtle.
scr = turtle.Screen() – дефинираме обект scr от клас Screen
don = turtle.Turtle() – дефинираме обект don от клас Turtle
Oсновни методи на обектите в модула turtle:
scr.bgcolor(color) – задаване на цвят на екрана
scr. bgpic(picture) – задаване на изображение за фон на екрана
don.pensize() – задаване на дебелина на линия за чертане
don.color() – задаване на цвят за чертане/запълване
don.down() – пускане на молива за чертане
don.up() – вдигане на молива
don.forward(step) – движение (и чертане) напред (don.fd())
don.backward(step) – движение назад (don.bk())
don.left(angle) – завъртане наляво на дадения ъгъл
don.right(angle) – завъртане надясно на дадения ъгъл
don.begin_fill() – начало на запълването при чертане на фигура
don.end_fill() – край на запълването
don.goto(x,y) – преместване на костенурката на позиция с координати (x, y)
Забележка. Да припомним, че върху екрана е дефинирана координатна система с начало точката (0,0), която е разположена в центъра. Повече информация за функционалностите в библиотеката turtle можете да получите на https://docs.python.org/
Задача 1
Напишете код в Python за чертане на равностранен триъгълник.
Анализ на задачата
Нека да дефинираме функция за чертане на равностранен триъгълник със зададена дължина на страната.
def triangle(side) :
p.color(color)
p.begin_fill()
p.down()
for count in range(3) :
p.forward(side)
p.left(120)
p.end_fill()
p.up()
Задача 2
Напишете код в Python за чертане на мотива канатица.
Анализ на задачата
За да начертаем триъгълника от шевицата канатица, равностранният триъгълник трябва се завърти на 30° надясно.
За чертането ни трябва дължината на височината на равностранния триъгълник. В следващите години ще научите как се определят страните на правоъгълния триъгълник. Още в древността Питагор е установил, че ако страната на равностранния триъгълник е а, то височината му е 0.9а. Ще използваме това, за да управляваме движението на костенурката.
Алгоритъм за решаване на задачата
- Определяме началната позиция, от която да започне чертането. Нека въведем параметър pos, чрез който да определяме позицията на костенурката по абсцисната ос. Нека pos = 100. Започваме чертането на канатицата от позиция (pos, 0).
- Чертаем малките червени триъгълници вдясно. Позицията, в която завършва цикълът, е дадена на илюстрацията:
- Чертаем големия триъгълник вдясно. Триъгълникът е със страна, 2 пъти по-голяма от страната на малките триъгълници. Следователно и височината му е 2 пъти по-дълга. Началната позиция трябва да се измести още една стъпка (side*0.9) вляво.
- Чертаем големия триъгълник вляво. След последното чертане костенурката остава в посоката, показана на илюстрацията:
Трябва да се обърне на 180°, за да стартира чертането на големия ляв триъгълник. - Чертаем трите малки триъгълници вляво.
Стъпка 1
# начална позиция
pos=100
color='red'
side=30
p.goto(pos,0)
p.right(30)
Стъпка 2
# чертане на трите
# триъгълника вдясно
for br in range(3) :
tringle(side)
pos = pos - side*0,9
p.goto(pos,0)
Стъпка 5
# чертане на трите
# триъгълника вляво
for br in range(3) :
tringle(side)
pos = pos - 0,9*side
p.goto(pos,0)
Решението на задачата може да се види на следната връзка: https://trinket.io/python/8d33c7e62b
Задача:
Създайте кодове за чертане на останалите шевици.
Задача 3
Напишете код в Python за чертане на шевицата:
Анализ на задачата
Посоките, в които е обърната костенурката в началото и в края на чертане на всеки от долните три триъгълника на шевицата, е показана на илюстрацията:
За да стартира чертането на успоредника, завъртаме костенурката наляво на ъгъл 60°.
for i in range(2) :
p.begin_fill()
p.forward(side)
p.left(60)
p.forward(side)
p.left(120)
p.end_fill()
Освен това трябва да дължината на големия диагонал на средния успоредник:
2.0,86 = 1,74 ≈ 1,7
Алгоритъм за решаване на задачата
- Избираме позиция, от която да започне чертането на шевицата.
- Чертаем долните три триъгълника чрез подпрограма three_triangles(side).
- Чертаем успоредника във втори цвят по средата чрез подпрограма paralelogram(side).
- Чертаем горните три триъгълника.
def three_triangles(side) :
for br in range(3) :
p.right(120)
triangle(side,color1)
def paralelogram(side) :
p.begin_fill()
for i in range(2) :
p.down()
p.forward(side)
p.left(60)
p.forward(side)
p.left(120)
p.up()
p.end_fill()
Да дефинираме подпрограма, която да чертае шевицата. Подпрограмата трябва да има няколко параметъра – начална позиция, дължина на страната на триъгълника и двата цвята на шевицата.
def kanatica(x,y,side,color1,color2):
p.goto(x,y) # начална позиция на чертане
p.color(color1)
three_triangles(side)
p.color(color2) # чертане на успоредника
p.left(60)
paralelogram(side)
p.goto(x,y+side*1.7) # позиция за начало на горната част
p.color(color1)
three_triangles(side) # чертане на горните триъгълници
p.left(300)
Един вариант на решението на тази задача можете да видите на следната връзка: https://trinket.io/python/c1d26ca4a6
Задача 4
Напишете код в Python за чертане на шевицата:
Анализ на задачата
За решаване на задачата използваме подпрограмата kanatica(), дефинирана в Задача 3.
Трябва да се зададат цветовете на всяка шевица и началната позиция, от която да стартира чертането.
p.up()
color1 = 'violet'
color2 = 'pink'
side = 40
kanatica(-100,-100,side,color1,color2)
color1 = 'blue'
color2 = 'navy'
kanatica(0,-100,side,color1,color2)
color1 = 'green'
color2 = 'lightgreen'
kanatica(100,-100,side,color1,color2)
color1 = 'navy'
color2 = 'pink'
kanatica(-100,80,side,color1,color2)
color1 = 'orange'
color2 = 'yellow'
kanatica(0,80,side,color1,color2)
color1 = 'red'
color2 = 'orange'
kanatica(100,80,side,color1,color2)
Задача 5*
Напишете код в Python за чертане на шевицата:
p.up()
color1 = 'red'
color2 = 'green'
side = 30
x = -150
y = -175
for br in range(6) :
kanatica(x+br*side*2,y,side,color1,color2)
x = -150
y = -72
for br in range(2) :
kanatica(x,y+br*side*3.4,side,color1,color2)
x = -150
y = 130
for br in range(6) :
kanatica(x+br*side*2,y,side,color1,color2)
x = 150
y = -72
for br in range(2) :
kanatica(x,y+br*side*3.4,side,color1,color2)