- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试更改屏幕上显示的颜色和圆圈数量。到目前为止,我已经弄清楚如何以递归模式使所有颜色都不同,但我需要帮助找出如何添加更多颜色。附件是我所拥有的与我需要实现的目标。
我的代码
import turtle
import colorsys
def draw_circle(x,y,r,color):
turtle.seth(0)
turtle.up()
turtle.goto(x,y-r)
turtle.down()
turtle.fillcolor(color)
turtle.begin_fill()
turtle.circle(r)
turtle.end_fill()
def draw_recursive_circles(x,y,r,color,n):
if n == 0:
return
draw_circle(x,y,r,color)
colors = ['red','orange','yellow','green','blue','purple']
i = 0
for angle in range(30,360,60):
turtle.up()
turtle.goto(x,y)
turtle.seth(angle)
turtle.fd(r*2)
draw_recursive_circles(turtle.xcor(),turtle.ycor(),r/3,colors[i],n-1)
i += 1
turtle.tracer(0)
turtle.hideturtle()
turtle.speed(0)
draw_recursive_circles(0,0,100,'red',5)
turtle.update()
最佳答案
您导入 colorsys
但从未使用它 - 这是您应该根据角度而不是固定颜色列表生成颜色的线索。导入的原因是 turtle 基于 RGB 的颜色对于我们的需求来说是错误的模型,因此我们需要一个更合适的模型,例如 HSV (我们只关心关于H/色调),并将这些值转换为RGB。
卫星数量由您的范围
调用决定:
for angle in range(30,360,60):
这张图应该更像:
for angle in range(0, 360, 30):
由于有 12 颗卫星,360/30
为 12。最后,我们需要进行适当的计算,以便每当我们更改位置或航向时,为了进行递归绘图,我们需要退出时恢复原始值。下面是我针对此问题的简化示例解决方案:
from turtle import Screen, Turtle
from colorsys import hsv_to_rgb
def draw_circle(radius):
y = turtle.ycor() # save position & heading
heading = turtle.heading()
turtle.fillcolor(hsv_to_rgb(heading / 360, 1.0, 1.0))
turtle.sety(y - radius)
turtle.setheading(0)
turtle.begin_fill()
turtle.circle(radius)
turtle.end_fill()
turtle.sety(y) # restore position & heading
turtle.setheading(heading)
def draw_recursive_circles(radius, n):
if n == 0:
return
draw_circle(radius)
if n > 1:
heading = turtle.heading() # save heading
for angle in range(0, 360, 30):
turtle.setheading(angle)
turtle.forward(radius * 2)
draw_recursive_circles(radius / 5, n - 1)
turtle.backward(radius * 2)
turtle.setheading(heading) # restore heading
screen = Screen()
screen.tracer(False)
turtle = Turtle(visible=False)
turtle.penup()
draw_recursive_circles(150, 4)
screen.update()
screen.tracer(True)
screen.exitonclick()
我故意保持 Nib 以简化我的示例,因此仅显示圆圈的填充部分。将周围的轮廓放回原处,作为练习留给您。
中心圆的颜色不正确。解决这个问题很简单,只需在首次调用 draw_recursive_circles()
关于python - 相互围绕的递归彩虹色圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55310414/
我有以下问题:写一个网页,上面有一个使用渐变颜色构建的彩虹。彩虹应倾斜一定 Angular (不应完全水平),左侧彩虹的宽度应小于右侧彩虹的宽度。 我不知道如何做宽度的部分。谁能帮帮我? #grad1
我只想使用 CSS 来创建彩虹。以下是所需内容的图片。 这是我的代码(到目前为止): * { margin: 0; padding: 0; } #r { height: 80vw; w
伴随每年 LGBT 骄傲月的到来,各大品牌都会纷纷站出来为他们推出 “Pride” 系列产品,以此表示支持。 IT之家昨日报道,苹果watchOS 6.2.5 Beta5新增4款彩虹表盘。而就
与这个问题相关 css rainbow built using gradient colors 有没有办法通过使用多个 div 而不是一个来做到这一点? 您可能会问,为什么只用一个就可以做到这一点,出
有没有一种方法可以在 rainbows/unicorn 中同时启动 faye 和 rails 应用程序。 现在我正在使用 rainbows 启动 faye/private_pub 应用程序,但也想用它
我尝试使用 matplotlib 库绘制梁的应力。 我已经使用公式计算并绘制了它作为示例: 如图 1 所示,您会看到绿色光束在元素 3 和元素 8 处具有更大的应力,因此如果我用彩虹渐变填充颜色,蓝色
我是一名优秀的程序员,十分优秀!