Български шевици. Работа по проект

Български шевици

Знаете ли за шевицата „канатица”?

Канатицата е символ, който се среща на различни места на Земята, без значение от религия и раса. Фигурата символизира безкрайният и вечен живот. Обикновено се поставя върху подвижни предмети – килими, традиционни носии, кърпи и др.

Когато бродирали или тъкали символи, жените ги наричали – за годеж, за сватба, за семейство. В българската народна традиция два триъгълника, допрени с върховете си, символизират годеж (връзката между мъжа и жената). Когато триъгълниците се застъпят, символизират сватба. Ако към двата триъгълника встрани се добавят по още два, то шевицата символизира семейството – жената, мъжа и децата. С още триъгълници се получават символите за род и за народ. Всяка шевица има своето име.

Модул 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а. Ще използваме това, за да управляваме движението на костенурката.

Алгоритъм за решаване на задачата

  1. Определяме началната позиция, от която да започне чертането. Нека въведем параметър pos, чрез който да определяме позицията на костенурката по абсцисната ос. Нека pos = 100. Започваме чертането на канатицата от позиция (pos, 0).

  2. Чертаем малките червени триъгълници вдясно. Позицията, в която завършва цикълът, е дадена на илюстрацията:
  3. Чертаем големия триъгълник вдясно. Триъгълникът е със страна, 2 пъти по-голяма от страната на малките триъгълници. Следователно и височината му е 2 пъти по-дълга. Началната позиция трябва да се измести още една стъпка (side*0.9) вляво.
  4. Чертаем големия триъгълник вляво. След последното чертане костенурката остава в посоката, показана на илюстрацията:

    Трябва да се обърне на 180°, за да стартира чертането на големия ляв триъгълник.

  5. Чертаем трите малки триъгълници вляво.

Стъпка 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

Алгоритъм за решаване на задачата

  1. Избираме позиция, от която да започне чертането на шевицата.
  2. Чертаем долните три триъгълника чрез подпрограма three_triangles(side).
  3. Чертаем успоредника във втори цвят по средата чрез подпрограма paralelogram(side).
  4. Чертаем горните три триъгълника.

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
= -150
= -175
for br in range(6) :
   kanatica(x+br*side*2,y,side,color1,color2)
= -150
= -72
for br in range(2) :
   kanatica(x,y+br*side*3.4,side,color1,color2)
= -150
= 130
for br in range(6) :
   kanatica(x+br*side*2,y,side,color1,color2)
= 150
= -72
for br in range(2) :
   kanatica(x,y+br*side*3.4,side,color1,color2)