Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3761683
А
Аноним
6 дней назад · публичный вопрос
А
Аноним

Сделай на пайтан

Нейросеть6 дней назад

Вот рабочий код на Python Turtle — он рисует такого медвежонка из кругов. Сначала идёт рисунок, потом короткое объяснение принципа.

import turtle
import math

BG = "#1b1b1b"      # цвет доски
PEN = "white"       # цвет мела

screen = turtle.Screen()
screen.setup(700, 650)
screen.bgcolor(BG)
screen.title("Медвежонок из кругов")

t = turtle.Turtle()
t.speed(0)
t.hideturtle()
t.pensize(3)
t.color(PEN, BG)


def disc(x, y, r):
    """Закрашенный круг с центром (x, y)."""
    t.penup()
    t.goto(x, y - r)      # нижняя точка круга
    t.setheading(0)       # смотрим вправо
    t.pendown()
    t.begin_fill()
    t.circle(r)
    t.end_fill()


def ring(x, y, r):
    """Контурный круг с центром (x, y)."""
    t.penup()
    t.goto(x, y - r)
    t.setheading(0)
    t.pendown()
    t.circle(r)


def arc(cx, cy, r, a1, a2, n=90):
    """Дуга окружности от угла a1 до a2."""
    t.penup()
    for i in range(n + 1):
        a = math.radians(a1 + (a2 - a1) * i / n)
        x = cx + r * math.cos(a)
        y = cy + r * math.sin(a)
        if i == 0:
            t.goto(x, y)
            t.pendown()
        else:
            t.goto(x, y)
    t.penup()


# 1. То, что должно быть позади: уши, руки, ноги
disc(-72, 205, 35)    # левое ухо
disc(72, 205, 35)     # правое ухо
disc(-120, -15, 42)   # левая рука
disc(120, -15, 42)    # правая рука
disc(-57, -170, 52)   # левая нога
disc(57, -170, 52)    # правая нога

# 2. Туловище и голова
disc(0, -40, 110)     # туловище
disc(0, 130, 85)      # голова

# 3. Глаза
ring(-35, 160, 16)
ring(35, 160, 16)
ring(-35, 160, 7)
ring(35, 160, 7)

# 4. Рот: нижняя полуокружность и верхняя линия
t.penup()
t.goto(-42, 95)
t.setheading(-90)
t.pendown()
t.circle(42, 180)

t.penup()
t.goto(-42, 95)
t.pendown()
t.goto(42, 95)
t.penup()

# 5. Две дуги-полоски на животе
arc(0, 115, 150, 235, 305)
arc(0, 83, 150, 235, 305)

# 6. Цветок из пяти кругов
for i in range(5):
    a = math.radians(90 + i * 72)
    ring(20 * math.cos(a), -55 + 20 * math.sin(a), 14)

turtle.done()

Как это работает

  • В Turtle circle(r) рисует круг не от центра, а от текущей точки на окружности. Поэтому в функциях disc и ring черепашка сначала ставится в нижнюю точку (x, y - r), смотрит вправо и только потом рисует круг. Тогда центр получается ровно в (x, y).
  • Рисуем слоями: сначала уши, руки и ноги, потом туловище, потом голову. Круги закрашиваются цветом фона, поэтому на пересечениях не видно лишних линий.
  • Рот — это circle(42, 180): второй параметр 180 означает половину круга. Именно поэтому на доске рядом с circle написано 180.
  • Цветок — цикл из пяти маленьких окружностей. Их центры стоят на окружности вокруг середины живота.

Проверить просто: запусти код, должен появиться белый контурный медвежонок на тёмном фоне. Если нужен белый лист, поменяй BG = "white", а PEN = "black".

сделай на пайтан
Вот рабочий код на Python Turtle — он рисует такого медвежонка из кругов. Сначала идёт рисунок, потом короткое объяснение принципа. ```python import turtle import math BG = "#1b1b1b" # цвет доски PEN = "white" # цвет мела screen = turtle.Screen() screen.setup(700, 650) screen.bgcolor(BG) screen.title("Медвежонок из кругов") t = turtle.Turtle() t.speed(0) t.hideturtle() t.pensize(3) t.color(PEN, BG) def disc(x, y, r): """Закрашенный круг с центром (x, y).""" t.penup() t.goto(x, y - r) # нижняя точка круга t.setheading(0) # смотрим вправо t.pendown() t.begin_fill() t.circle(r) t.end_fill() def ring(x, y, r): """Контурный круг с центром (x, y).""" t.penup() t.goto(x, y - r) t.setheading(0) t.pendown() t.circle(r) def arc(cx, cy, r, a1, a2, n=90): """Дуга окружности от угла a1 до a2.""" t.penup() for i in range(n + 1): a = math.radians(a1 + (a2 - a1) * i / n) x = cx + r * math.cos(a) y = cy + r * math.sin(a) if i == 0: t.goto(x, y) t.pendown() else: t.goto(x, y) t.penup() # 1. То, что должно быть позади: уши, руки, ноги disc(-72, 205, 35) # левое ухо disc(72, 205, 35) # правое ухо disc(-120, -15, 42) # левая рука disc(120, -15, 42) # правая рука disc(-57, -170, 52) # левая нога disc(57, -170, 52) # правая нога # 2. Туловище и голова disc(0, -40, 110) # туловище disc(0, 130, 85) # голова # 3. Глаза ring(-35, 160, 16) ring(35, 160, 16) ring(-35, 160, 7) ring(35, 160, 7) # 4. Рот: нижняя полуокружность и верхняя линия t.penup() t.goto(-42, 95) t.setheading(-90) t.pendown() t.circle(42, 180) t.penup() t.goto(-42, 95) t.pendown() t.goto(42, 95) t.penup() # 5. Две дуги-полоски на животе arc(0, 115, 150, 235, 305) arc(0, 83, 150, 235, 305) # 6. Цветок из пяти кругов for i in range(5): a = math.radians(90 + i * 72) ring(20 * math.cos(a), -55 + 20 * math.sin(a), 14) turtle.done() ``` ### Как это работает - В Turtle `circle(r)` рисует круг **не от центра**, а от текущей точки на окружности. Поэтому в функциях `disc` и `ring` черепашка сначала ставится в нижнюю точку `(x, y - r)`, смотрит вправо и только потом рисует круг. Тогда центр получается ровно в `(x, y)`. - Рисуем **слоями**: сначала уши, руки и ноги, потом туловище, потом голову. Круги закрашиваются цветом фона, поэтому на пересечениях не видно лишних линий. - Рот — это `circle(42, 180)`: второй параметр `180` означает половину круга. Именно поэтому на доске рядом с `circle` написано `180`. - Цветок — цикл из пяти маленьких окружностей. Их центры стоят на окружности вокруг середины живота. Проверить просто: запусти код, должен появиться белый контурный медвежонок на тёмном фоне. Если нужен белый лист, поменяй `BG = "white"`, а `PEN = "black"`.