Python ile
Matematik
3
Haluk Tanrıkulu
Ver. 1.1 - 2021
| 2
Proje Çalışması
Düzgün çokgenleri daire çizerek oluşturmayı bir önceki derste
öğrenmiştik. Bu derste ise Pitonca Education’in logosunu yine daire
çizerek oluşturmaya çalışacağız.
Aşağıda Pitonca Education logoları görülmektedir. Logo bir kare içine
eşkenar üçgen yerleştirilmiş ve içi siyah renkle boyanmıştır.
Şimdi bu logoyu Python kullanarak çizdirelim.
2 || Tüm Yayın Hakları Haluk Tanrıkulu’na aittir.
| 3
Daireler Çizelim
Logo da iki daire oluşturalım.
Dış Daire : Dış daire 100 piksel yarıçapında olsun. Daire karenin
köşelerini üzerinde bulunduracaktır.
øç Daire : øç daire 60 piksel yarıçapında olup, bir köşesi karenin sol
köşesi ile aynı hizada olacaktır.
Üçgenin øçinin Boyanması : hçgenin için boyamak için .fd()
fonksiyonu kullanmak bizim için çok daha kolay olacaktır. Ancak biz
bu tür çizimlerde ne karenin nede üçgenin kenar boylarını bilmiyoruz.
Bildiğimiz tek şey, iç içe olan bu dairelerin 100/60 oranında olmasıdır.
Bu yüzden .goto() kullanacağız. øçin doldurmak için ise begin_fill() ve
end_fill() fonksiyonlarının kullanacağız.
1. dım - Karenin Çizimi :
Daireleri çizelim. Önce dıştaki kareyi çizelim. Önce kenar sayısını 4
olarak belirleyelim. Logoda karenin kenarlarının kalın çizildiği
görüldüğünden .pensize() değerin 5 olarak belirledik
import turtle
t = turtle.Pen()
t.pensize(5)
t.speed(0)
kenar_sayısı= 4
Şimdi ise karenin çizimi yapalım. Çizime başladığındaki konumu (x1,y1)
iken ilk döngüde yani ilk 90 derecelik açıda (x2, y2) konumuna gidiyor.
2 || Tüm Yayın Hakları Haluk Tanrıkulu’na aittir.
| 4
(x2, y2) konumundan (x1, y1) konumuna bir çizgi çizip tekrar (x2, y2)
konumuna dönen bir yapı kuruyoruz. Sonra (x1, y1) konumun değerleri
(x2, y2) konumu ile değiştiriyoruz. Burası çok önemli!
Bunu daha basit bir şekilde yapabilir misin?
for i in range(kenar_sayısı):
x1, y1 = t.pos()
acı = 360 / kenar_sayısı
t.circle(100, acı)
x2, y2 = t.pos()
t.goto(x1, y1)
t.goto(x2,y2)
x1, y1=x2, y2
Şimdi daireyi kaldıracak bir hamle yapalım. .penup() bizim işimize yarayacaktır. Tüm kodları
aşağıdaki tekrar yazıp çalıştıralım.
import turtle
t = turtle.Pen()
t.pensize(5)
t.speed(0)
kenar_sayısı = 4
for i in range(kenar_sayısı):
x1, y1 = t.pos()
acı = 360 / kenar_sayısı
2 || Tüm Yayın Hakları Haluk Tanrıkulu’na aittir.
| 5
t.penup()
t.circle(100, acı)
t.pendown()
x2, y2 = t.pos()
t.goto(x1, y1)
t.goto(x2,y2)
x1, y1=x2, y2
Görüntüde başladığı yere dönen ikonun karenin en alt kısmında
görüyoruz. Bunun görünmesini istemeyiz. Bunun için sadece t.penup()
kullanmak yeterli olur mu?
Şimdi oraya t.hideturtle() ekliyoruz. Bu ikonun sonda görünmemesini
sağlasın.
2 || Tüm Yayın Hakları Haluk Tanrıkulu’na aittir.
| 6
Evet bu daha iyi oldu.
2. dım - Üçgenin Çizimi :
Resimde görüldüğü gibi çizime (0,0) noktasında başladık ve aynı
noktada bitirdik. Dairemizin merkezi ise (0,100). Logomuzda karenin
sol köşesi ile aynı hizada bir köşesi olan üçgenimiz var.
O zaman üçgenin bir köşesi (-60,100) noktasında olması gerekir.
Unutmayın tek bildiğimiz iç içe iki dairenin yarıçapları, biri 100 piksel
diğeri ise 60 piksel değerinde.
2 || Tüm Yayın Hakları Haluk Tanrıkulu’na aittir.
| 7
Şimdi (-60, 100) noktasından başlayan (tabii ki yönü aşağı doğru
olacak) bir çember çizelim.
t.goto(-60, 100)
t.right(90)
a = 3
t.pendown()
x1, y1 = -60, 100
t.circle(60)
Bu çemberin üzerinde 3 köşesi olan bir üçgen çizelim.
for i in range(3):
acı = 360 / a
#t.color("white")
2 || Tüm Yayın Hakları Haluk Tanrıkulu’na aittir.
| 8
#t.begin_fill()
t.circle(60, acı)
#t.end_fill()
t.pendown()
x2, y2 = t.pos()
t.goto(x1, y1)
t.goto(x2,y2)
x1, y1=x2, y2
Burada iç çemberden kurtulalım. Bunun için for döngüsü bitimine
aşağıdaki kodları ekleyelim. Siyah çemberin üzerinden beyaz ile geçince
kare ve üçgen ortaya çıkacaktır.
t.color("white")
t.pensize(6)
t.circle(60)
2 || Tüm Yayın Hakları Haluk Tanrıkulu’na aittir.
| 9
Görüldüğü üzere çemberin silmesine rağmen izler kaldı.
3. Adımda
üçgenin içini boyalım ve bu izlerden kurtulalım.
3. dım - Üçgenin İçin Boyanması:
Herşeyden önce
.goto() kullandığımızda begin_fill() ve end_fill()
kullandığımızda için dolduramıyoruz. Bunun için ters bir işlem yapacağız.
Önce üçgeni oluşturmak için kullandığımız çemberin içini siyah ile
doldurup daha sonra üç adet yayın bulunduğu alanları beyaz ile
dolduracağız. Bu işlemleri yapan tüm programı aşağıda bulabilirsiniz.
import turtle
t = turtle.Pen()
t.pensize(5)
t.speed(0)
a= 4
for i in range(a):
x1, y1 = t.pos()
acı = 360 / a
t.penup()
t.circle(100, acı)
t.pendown()
2 || Tüm Yayın Hakları Haluk Tanrıkulu’na aittir.
| 10
x2, y2 = t.pos()
t.goto(x1, y1)
t.goto(x2,y2)
x1, y1=x2, y2
t.hideturtle()
t.penup()
t.goto(-60, 100)
t.right(90)
a = 3
t.pendown()
x1, y1 = -60, 100
t.begin_fill()
t.circle(60)
t.end_fill()
Şimdi yapacağımız yayların için beyaz boyamak. Projenin son hali
aşağıdadır.
import turtle
t = turtle.Pen()
2 || Tüm Yayın Hakları Haluk Tanrıkulu’na aittir.
| 11
t.pensize(5)
t.speed(0)
a= 4
for i in range(a):
x1, y1 = t.pos()
acı = 360 / a
t.penup()
t.circle(100, acı)
t.pendown()
x2, y2 = t.pos()
t.goto(x1, y1)
t.goto(x2,y2)
x1, y1=x2, y2
t.hideturtle()
t.penup()
t.goto(-60, 100)
t.right(90)
a = 3
t.pendown()
x1, y1 = -60, 100
t.begin_fill()
t.circle(60)
t.end_fill()
for i in range(3):
acı = 360 / a
t.color("white")
t.begin_fill()
t.circle(60, acı)
t.end_fill()
t.pendown()
x2, y2 = t.pos()
t.goto(x1, y1)
t.goto(x2,y2)
x1, y1=x2, y2
2 || Tüm Yayın Hakları Haluk Tanrıkulu’na aittir.
| 12
t.pensize(5)
t.circle(60)
Ö EV :
1 - Logonun üçgenini farklı renklerde yapınız͘
2 - (-60, 100) noktası yerine (-70, 100) noktasından başladığınızda görüntü nasıl
olur?
Bu yayının tüm hakları saklıdır. Hiçbir şekilde kopyalanamaz, çoğaltılamaz.
2 || Tüm Yayın Hakları Haluk Tanrıkulu’na aittir.