繁体   English   中英

Turtle Graphics 显示像素化图形

[英]Turtle Graphics displaying pixelated graphics

作为我正在学习的课程的一部分,我创建了一个随机点画生成器程序。 我的代码涉及使用turtle.dot()函数在乌龟turtle.dot()创建点。 实际的逻辑似乎工作正常,但它正在创建像素化的点,如模糊图像。

课程视频具有完美的输出 - 圆应该是怎样的。

我从 VSCode 切换到 PyCharm,但这没有帮助。 我还创建了许多其他 Turtle Graphics 程序 - Spirograph 生成器、随机游走,但它们都不会在屏幕上产生锐利的物体,正如您对 21 世纪机器所期望的那样。

我无法弄清楚问题是什么。 是代码吗? 显示驱动程序? 或一些错误?

这是代码:

import turtle
turtle.colormode(255)

t = turtle.Turtle()
s = turtle.Screen()
t.penup()
t.speed(0)
t.setpos(-200, -200)

for m in range(10):
    for n in range(10):
        t.dot(20, 'red')
        t.forward(50)
    t.setx(-200)
    t.sety(t.ycor()+50)

s.exitonclick()

注意斑点看起来像多边形而不是圆形:

注意这些点看起来像多边形而不是圆形。

如果你想要 RTX 级别的图形,我很确定你应该使用 python 海龟以外的东西。 乌龟就是这样,它就像有史以来发明的第一个机器人一样。 名为乌龟。 http://cyberneticzoo.com/cyberneticanimals/1969-the-logo-turtle-seymour-papert-marvin-minsky-et-al-american/

你可以尝试的一件事是像这样的turtle.shape()和turtle.stamp():

import turtle
turtle.colormode(255)

t = turtle.Turtle()
s = turtle.Screen()
t.penup()
t.speed(0)
t.setpos(-200, -200)

for m in range(10):
    for n in range(10):
        t.shape("circle")
        t.stamp()
        t.forward(50)
    t.setx(-200)
    t.sety(t.ycor()+50)


s.exitonclick()

它并不完美,但你可以弄清楚。

当问题实际上是您的环境时,您可能会责怪您的代码 您的基于dot()的代码在我的系统上生成了大圆圈:

在此处输入图片说明

如果我们仔细观察,它们会很好地反锯齿:

在此处输入图片说明

您的老师可能只是拥有更好的图形子系统和/或显示器。 我们可以试试乌龟的circle()方法:

turtle.begin_fill()
turtle.circle(10)
turtle.end_fill()

但这看起来并不比dot()

在此处输入图片说明

特写证实了这一点:

在此处输入图片说明

但是circle()并不会非常努力地使用小半径,我们可以使用steps参数覆盖它:

turtle.circle(10, steps=180)

在此处输入图片说明

再次特写:

在此处输入图片说明

@RobertMcNeil 的stamp()建议在我的系统上产生了更糟糕的结果:

在此处输入图片说明

最后附上一张特写:

在此处输入图片说明

我会说坚持你的原始设计并在不同的系统上测试它。

from turtle import Screen, Turtle
from random import random

screen = Screen()

turtle = Turtle()
turtle.hideturtle()
turtle.speed('fastest')

turtle.penup()
turtle.setposition(-200, -200)

for _ in range(10):
    for _ in range(10):
        turtle.dot(20, (random(), random(), random()))
        turtle.forward(50)
    turtle.setx(-200)
    turtle.sety(turtle.ycor() + 50)

screen.exitonclick()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM