【问题标题】:Drawing a 3D multicolor triangle in python turtle在 python turtle 中绘制一个 3D 多色三角形
【发布时间】:2021-10-24 21:28:40
【问题描述】:

我需要在海龟中制作这个三角形 (https://i.imgur.com/DKVMxfW.png),但无法完全确定尺寸。除此之外,我还需要根据我设置的列表以不同的颜色显示三角形的每个象限......我可以稍后再做。但我无法让三角形的长度/宽度正确。我将链接一张类似于它需要在这里的东西的图片 (https://i.imgur.com/E7Skzcc.png) 这是我能找到的最接近我需要它做的事情。如何使用 width, width * math.sqrt(2), and width 之类的东西来获取三角形的长度和宽度?任何帮助是极大的赞赏。对不起,如果我的英语不好,那不是我的第一语言。以下是我目前所写的内容。


turtle.setup(575,575)
pen = turtle.Turtle()
pen.speed(0)
pen.pensize(2)
pen.hideturtle()

width = random.randint(25,100)

def draw_art_cube(x,y):
    draw_triangle(width, width * math.sqrt(2) + width)

def draw_triangle(x,y):
    pen.up()
    pen.setpos(x,y)
    pen.down()
    pen.setheading(0)
    pen.forward(width)
    pen.left(width)





turtle.onscreenclick(draw_art_cube)

turtle.done()

【问题讨论】:

  • 为什么我们在绘制2D图形时标题中包含3D?还是示例 *.png 文件实际上是 3D 文件,但在我的显示器上没有正确显示?

标签: python turtle-graphics python-turtle


【解决方案1】:

您的draw_triangle() 功能被严重承保。您至少需要绘制六行,但您的代码只绘制 一个!让我们充实这个函数,让它绘制示例图像:

from turtle import Screen, Turtle
from random import randint

def draw_art_cube(x, y):
    screen.onscreenclick(None)  # Disable handler inside handler

    pen.up()
    pen.setposition(x, y)
    pen.down()

    width = randint(25, 100)
    draw_triangle(width)

    screen.onscreenclick(draw_art_cube)  # Reenable handler on exit

def draw_triangle(short):

    long = short * 2**0.5

    pen.setheading(0)

    for _ in range(4):
        pen.forward(short)
        pen.left(135)
        pen.forward(long)
        pen.left(135)
        pen.forward(short)

        pen.left(180)

screen = Screen()
screen.setup(575, 575)

pen = Turtle()
pen.hideturtle()
pen.speed('fastest')
pen.pensize(2)

screen.onscreenclick(draw_art_cube)
screen.mainloop()

这个绘图代码效率低下,因为它绘制了 12 条(有点多余)线,而我们可以避免一半。但它应该为您提供一个工作起点,让您思考绘制此图的最佳方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    相关资源
    最近更新 更多