Rysowanie w Turtle - Okrąg, Łuk, Koło i Elipsa
Okrąg
Do rysowania okręgu służy funkcja circle().
Dokumentacja: turtle - circle()
turtle.circle(radius, extent=None, steps=None)
radius |
|
extent |
|
steps |
|
---
Okrąg o promeniu 100 pikseli.

import turtle turtle.circle(100) turtle.mainloop()
Wykorzystując ujemny promień można z tego samego miejsca narysować okrąg w inną stronę
Na poniższym rysunku górny okrąg powstał z dodatnim promieniem, a dolny z ujemnym.

import turtle turtle.circle(100) turtle.circle(-100) turtle.mainloop()
Z użyciem funkcji circle() i parametru steps można narysować dowolny wielobok foremny - w tym kwadrat i trójkąt.
steps=3

steps=4

steps=6

import turtle turtle.circle(100, steps=3) turtle.mainloop()
Za pomocą wieloboku o dużej ilości boków można otrzymać okrąg.
import turtle def wielobok(bok, kroki): kat = 360/kroki for _ in range(kroki): turtle.forward(bok) turtle.left(kat) wielobok(15, 36) turtle.mainloop()
Taka funkcja nie wymaga poodawania promienia lub średnicy okręgu więc trudno powiedzieć ile miejsca zajmie okrąg.
Wycinek okręgu / łuk
Za pomocą drugiego parametru extent (wyrażonego w stopniach) można rysować łuki
90 stopni

180 stopni

270 stopni

import turtle turtle.circle(100, 90) # 180 270 turtle.mainloop()
Można też narysować listek

import turtle turtle.circle(100, 90) turtle.left(90) turtle.circle(100, 90) turtle.left(90) turtle.mainloop()
lub kwiatek

import turtle def listek(promien): turtle.circle(promien, 90) turtle.left(90) turtle.circle(promien, 90) turtle.left(90) for x in range(8): listek(100) turtle.left(45) turtle.mainloop()

import turtle def listek(promien): turtle.circle(promien, 90) turtle.left(90) turtle.circle(promien, 90) turtle.left(90) for x in range(5): listek(100) turtle.left(72) turtle.left(36) for x in range(5): listek(50) turtle.left(72) turtle.mainloop()
lub płomyk

import turtle def listek(promien): turtle.circle(promien, 90) turtle.left(90) turtle.circle(promien, 90) turtle.left(90) turtle.left(45) for x in range(1, 4): listek(x*50) turtle.mainloop()
Wartości ujemne pozwala rysować do tyłu
-90 stopni

-180 stopni

-270 stopni

import turtle turtle.circle(100, -90) # -180 -270 turtle.mainloop()
Ujemny promień pozwala wracać tą samą drogą do miejsca wyjścia

import turtle for _ in range(8): turtle.circle(100, -90) turtle.circle(100, 90) turtle.left(45) turtle.mainloop()
Pozwala też na narysowanie takiego kształtu

import turtle for _ in range(2): turtle.circle(100, -90) turtle.left(90) turtle.circle(100, 90) turtle.left(90) turtle.mainloop()
lub takiego

import turtle for _ in range(2): turtle.circle(100, -90) #turtle.left(90) turtle.circle(-100, 90) #turtle.left(90) turtle.mainloop()
Dodając do tego kwadrat narysowany za pomocą circle( ..., steps=4) mamy

import turtle for _ in range(2): turtle.circle(100, -90) turtle.circle(-100, 90) turtle.right(90) turtle.circle(-100, steps=4) turtle.mainloop()
Wykorzystanie ujemnego promienia pozwala na rysowanie zawijasa

import turtle turtle.circle(100, 90) turtle.circle(-100, 90) turtle.mainloop()
lub sinusa

import turtle turtle.right(90) for _ in range(2): turtle.circle(50, 180) turtle.circle(-50, 180) turtle.mainloop()
lub bąbla

import turtle turtle.circle(100, 90) turtle.circle(-100, 180) turtle.circle(100, 90) turtle.mainloop()
a po dorysowaniu oczu mamy ducha

import turtle # bąbel turtle.circle(100, 90) turtle.circle(-100, 180) turtle.circle(100, 90) # przesunięcie na środek turtle.penup() turtle.backward(200) turtle.left(90) turtle.forward(150) # lewe oko turtle.left(90) turtle.forward(25) turtle.pendown() turtle.circle(15) turtle.penup() turtle.forward(-25) # prawe oko turtle.left(180) turtle.forward(25) turtle.pendown() turtle.circle(-15) turtle.penup() turtle.forward(-25) # przesunięcie żółwia poniżej oczu aby udawał nos albo usta turtle.right(90) turtle.forward(50) turtle.mainloop()
Linia przerywana
Podnosząc i opuszczając pióro podczas rysowania łuków można otrzymać okrąg/łuk z linii przerywanej.

import turtle for _ in range(10): turtle.circle(100, 18) turtle.penup() turtle.circle(100, 18) turtle.pendown() turtle.mainloop()

import turtle for _ in range(10): turtle.circle(100, 6) turtle.penup() turtle.circle(100, 18) turtle.pendown() turtle.mainloop()
Koło
Koło to okrąg z wypełnieniem.
Stosując turtle.begin_fill() i turtle.end_fill() można okrąg wypełnić kolorem.

import turtle turtle.begin_fill() turtle.circle(100) turtle.end_fill() turtle.mainloop()
Aby zmienić kolor wypełnienia należy użyć turtle.fillcolor(kolor)

import turtle turtle.fillcolor('red') turtle.begin_fill() turtle.circle(100) turtle.end_fill() turtle.mainloop()
Dostępne nazwy kolorów
Aby narysować bez obwódki można nadać obwódce ten sam kolor co wypełnieniu turtle.color(kolor) lub podnieść pióro turtle.penup(). Nic nie daje zmiana grubości kreski na zero turtle.pensize(0) lub turtle.pensize(None)

import turtle turtle.color('red') turtle.fillcolor('red') turtle.begin_fill() turtle.circle(100) turtle.end_fill() turtle.mainloop()
import turtle turtle.penup() turtle.fillcolor('red') turtle.begin_fill() turtle.circle(100) turtle.end_fill() turtle.pendown() turtle.mainloop()

import turtle turtle.pensize(10) turtle.color('green') turtle.fillcolor('red') turtle.begin_fill() turtle.circle(100) turtle.end_fill() turtle.mainloop()
Elipsa
Turtle nie ma funkcji do rysowania elipsy. Pozostaje samemu taką funkcję napisać albo wykorzystać fakt, że Turtle wykorzystuje obiekt Canvas (Płótno) z modułu Tkinter, które posiada funkcję create_oval() do rysowania okręgów i elips.
Ale o tym jest w osobnym wpisie: Rysowanie z Turtle - Płótno czyli Canvas i inne obiekty z Tkinter
Inne

import turtle for _ in range(12): turtle.circle(100, 90) turtle.left(60) turtle.mainloop()

import turtle for _ in range(8): turtle.circle(100, 180) turtle.right(45) turtle.mainloop()

import turtle for _ in range(6): turtle.circle(25, 180) turtle.right(120) turtle.mainloop()

import turtle for _ in range(9): turtle.circle(25, 180) turtle.right(140) turtle.mainloop()

import turtle turtle.tracer(False) for _ in range(12): turtle.circle(25, 180) turtle.right(100) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) for _ in range(18): turtle.circle(50, 180) turtle.right(280) turtle.update() turtle.mainloop()

import turtle for x in range(10, 201, 10): turtle.circle(x, 90) turtle.penup() turtle.circle(x, -90) turtle.pendown() turtle.mainloop()

import turtle turtle.tracer(False) for x in range(10, 101, 10): turtle.circle(x, 180) turtle.penup() turtle.circle(x, -180) turtle.pendown() turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) for x in range(10, 101, 10): turtle.circle(x, 180) turtle.circle(-110+x, 180) turtle.penup() turtle.circle(-110+x, -180) turtle.circle(x, -180) turtle.pendown() turtle.update() turtle.mainloop()
multi-jin-jang-2
import turtle turtle.tracer(False) for x in range(0, 101, 10): turtle.circle(x, 180) turtle.circle(-100+x, 180) turtle.penup() turtle.circle(-100+x, -180) turtle.circle(x, -180) turtle.pendown() turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) for x in range(0, 101, 50): turtle.circle(x, 180) turtle.circle(-100+x, 180) turtle.penup() turtle.circle(-100+x, -180) turtle.circle(x, -180) turtle.pendown() turtle.update() turtle.mainloop()

import turtle turtle.circle(100) turtle.circle(50, 180) turtle.circle(-50, 180) turtle.mainloop()

import turtle turtle.tracer(False) turtle.circle(50, 180) turtle.circle(-50, 180) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) turtle.circle(35, 180) turtle.circle(-65, 180) turtle.circle(-35, -180) turtle.circle(65, -180) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) turtle.circle(45, 180) turtle.circle(-55, 180) turtle.circle(-45, -180) turtle.circle(55, -180) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) turtle.circle(70, 180) turtle.circle(-30, 180) turtle.circle(-25, -180) turtle.circle(75, -180) turtle.update() turtle.mainloop()
Pasta do zębów

import turtle turtle.tracer(False) #--- turtle.color('blue') turtle.fillcolor('blue') turtle.begin_fill() turtle.circle(35, 180) turtle.circle(-65, 180) turtle.circle(-50, -180) turtle.circle(50, -180) turtle.end_fill() #--- turtle.color('red') turtle.fillcolor('red') turtle.begin_fill() turtle.circle(50, 180) turtle.circle(-50, 180) turtle.circle(-35, -180) turtle.circle(65, -180) turtle.end_fill() #--- turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) turtle.left(-90) turtle.circle(25, 180) turtle.circle(-75, 180) turtle.circle(-70, -180) turtle.circle(30, -180) turtle.circle(70, 180) turtle.circle(-30, 180) turtle.circle(-25, -180) turtle.circle(75, -180) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) turtle.circle(-30, 180) turtle.circle(70, 180) turtle.circle(75, -180) turtle.circle(-25, -180) turtle.circle(-30, -180) turtle.circle(70, -180) turtle.circle(75, 180) turtle.circle(-25, 180) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) turtle.circle(-30, 180) turtle.circle(70, 180) turtle.circle(75, -180) turtle.circle(-25, -180) turtle.fillcolor('white') turtle.begin_fill() turtle.circle(-30, -180) turtle.circle(70, -180) turtle.circle(75, 180) turtle.circle(-25, 180) turtle.end_fill() turtle.update() turtle.mainloop()
Bałwanek z warkoczem

import turtle turtle.tracer(False) turtle.left(180) turtle.circle(-70, 180) turtle.circle(30, 180) turtle.circle(30, -180) turtle.circle(-70, -180) turtle.left(180) turtle.fillcolor('white') turtle.begin_fill() turtle.circle(75, 180) turtle.circle(-25, 180) turtle.circle(-35, -180) turtle.circle(65, -180) turtle.end_fill() turtle.update() turtle.mainloop()
Wąsy

import turtle turtle.tracer(False) turtle.left(-90) turtle.circle(25, 180) turtle.circle(-75, 180) turtle.circle(-70, -180) turtle.circle(30, -180) turtle.circle(-25, 180) turtle.circle(75, 180) turtle.circle(70, -180) turtle.circle(-30, -180) turtle.left(180) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) turtle.left(90) turtle.circle(25, 180) turtle.circle(-75, 180) turtle.circle(-70, -180) turtle.circle(30, -180) turtle.circle(-25, 180) turtle.circle(75, 180) turtle.circle(70, -180) turtle.circle(-30, -180) turtle.left(180) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) turtle.left(90) turtle.begin_fill() turtle.circle(25, 180) turtle.circle(-75, 180) turtle.circle(-70, -180) turtle.circle(30, -180) turtle.end_fill() turtle.begin_fill() turtle.circle(-25, 180) turtle.circle(75, 180) turtle.circle(70, -180) turtle.circle(-30, -180) turtle.end_fill() turtle.left(180) #turtle.left(180) #turtle.circle(50) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) turtle.left(-90) turtle.circle(-70, -180) turtle.circle(30, -180) turtle.circle(25, 180) turtle.circle(-75, 180) turtle.circle(70, -180) turtle.circle(-30, -180) turtle.circle(-25, 180) turtle.circle(75, 180) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) turtle.left(90) turtle.circle(-70, -180) turtle.circle(30, -180) turtle.circle(25, 180) turtle.circle(-75, 180) turtle.circle(70, -180) turtle.circle(-30, -180) turtle.circle(-25, 180) turtle.circle(75, 180) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) turtle.circle(50, 180) turtle.circle(-50, 180) turtle.circle(-100, 180) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) for _ in range(4): turtle.circle(50, 180) turtle.circle(-50, 180) turtle.circle(-100, 180) turtle.left(-90) turtle.update() turtle.mainloop()

import turtle turtle.tracer(False) for _ in range(5): turtle.circle(50, 180) turtle.circle(-50, 180) turtle.circle(-100, 180) turtle.left(-90-18) turtle.update() turtle.mainloop()

import turtle def lezka1(): turtle.circle(50, 180) turtle.circle(-50, 180) turtle.circle(-100, 180) def lezka2(): turtle.circle(-50, 180) turtle.circle(50, 180) turtle.circle(100, 180) turtle.tracer(False) lezka1() lezka2() turtle.update() turtle.mainloop()

import turtle def lezka1(): turtle.circle(25, 180) turtle.circle(-25, 180) turtle.circle(-50, 180) def lezka2(): turtle.circle(-25, 180) turtle.circle(25, 180) turtle.circle(50, 180) turtle.tracer(False) lezka1() turtle.penup() turtle.left(90) turtle.forward(50) turtle.left(-90) turtle.pendown() lezka2() turtle.penup() turtle.left(-90) turtle.forward(50) turtle.left(90) turtle.pendown() turtle.update() turtle.mainloop()

import turtle def lezka1(): turtle.circle(25, 180) turtle.circle(-25, 180) turtle.circle(-50, 180) def lezka2(): turtle.circle(-25, 180) turtle.circle(25, 180) turtle.circle(50, 180) turtle.tracer(False) turtle.left(90) for _ in range(4): lezka1() turtle.penup() turtle.left(90) turtle.forward(50) turtle.left(-90) turtle.pendown() lezka2() turtle.penup() turtle.left(-90) turtle.forward(50) turtle.left(90) turtle.pendown() turtle.update() turtle.mainloop()
Podobne wpisy
Starsze:
- Rysowanie kwiatka z użyciem żółwika w Pythonie
- Rysowanie kolorowego okręgu z Turtle
- Rysowanie planu mieszkania za pomocą Turtle w Pythonie
Nowsze:
Wpisy jeszcze nie gotowe:
Galeria
Figury
- Rysowanie z Turtle - Okrąg, Łuk, Koło i Elipsa
- Rysowanie z Turtle - Romb, Trapez i Gwiazda
- Rysowanie z Turtle - Wielobok
- Rysowanie z Turtle - Schodki
- Rysowanie z Turtle - Kwadrat, okrąg i inne figury
- Rysowanie z Turtle - Inne
Tkinter
- Rysowanie z Turtle - Wprowadzanie danych z textinput i numinput
- Rysowanie z Turtle - Płótno czyli Canvas i inne obiekty z Tkinter
- Rysowanie z Turtle - Wait On Click
Internet
Inne
Spis - powyższe linki na osobnej stronie
