Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 18, 2023 19:44:45

Silent0agent
Зарегистрирован: 2023-08-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

turtle нарисовать цилиндр с пунктиром

Нарисуйте объемное изображение цилиндра, как показано на схеме.

Вводятся:
радиус большой дуги овала(r), высота(h), цвет контура и цвет заливки.
Толщина контура 2 пикселя, при рисовании пунктирной линии пропуски и дуги чередуются через 9 градусов на малых дугах и через 4.5 на большой.

Я не понимаю как нарисовать овал и пунктир. Можете хотя бы сделать сам овал и овал с пунктиром без задаваемых значений, но чтобы их можно было подставить.

Отредактировано Silent0agent (Дек. 18, 2023 19:45:17)

Прикреплённый файлы:
attachment markdown-image.png (33,8 KБ)

Офлайн

#2 Дек. 19, 2023 02:13:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

turtle нарисовать цилиндр с пунктиром

Функцию отсюда взял
https://barzunov.ru/2019/11/turtle-draw-ellipse/

Чуть переделал функцию (добавил пунктир)

  
#!/usr/bin/env python3
 
import turtle
import math
 
 
def ellipse(a, b, color='black', fill=''):
    """
    This function draws an ellipse.
    """
    dx = turtle.xcor()
    dy = turtle.ycor()
    turtle.color(color, fill)
    turtle.begin_fill()
    for deg in range(361):
        rad = math.radians(deg)
        x = a * math.sin(rad) + dx
        y = -b * math.cos(rad) + b + dy
        turtle.goto(x, y)
        if y > b:
            if deg % 10 == 0:
                turtle.penup()
            if deg % 10 == 5:
                turtle.pendown()
        else:
            turtle.pendown()
    turtle.end_fill()
 
ellipse(250, 90)

Думаю, на дугах там тоже можно сделать, но для этого непрерывное рисование дуг надо разделить на куски. Тогда какие-то куски можно будет проходить с поднятым пером просто.



Отредактировано py.user.next (Дек. 19, 2023 02:20:31)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version