六角形的不同颜色的线

问题描述

我只是想知道如何在六边形的每一行上获得不同的颜色。下面是所需的输出和输入。

立即输出-Link to output right now

我想要的输出-Link to output I want

import turtle as trtl

colors = ["#9c2921","#cf8e04","#f5d905",]

#--------------------
num_sides = int(input("Enter the number of sides(Enter 6 to get the output of the real image): "))

if num_sides == 6:
  print("Desired artwork is displayed")

side_length = 25
circumradius = side_length


angle = 360/len(colors)
trtl.width(10)



for color in colors:
    trtl.color(color)
    trtl.pensize(10)
    for move_turtle in range(1):
      trtl.penup()
      trtl.sety(-circumradius)
      trtl.pendown()
      trtl.circle(circumradius,steps = num_sides)

      circumradius *= 2

trtl.hideturtle()


解决方法

奇怪的是,您的程序看起来像是我为回答先前的问题而编写的代码,但既未被接受也未被支持。继续:

鉴于这种circle()以及基于胖笔的六边形绘制方法,我相信这是您可以做的最好的事情:

import turtle
from itertools import cycle

COLORS = ["#9c2921","#f5d905","#cf8e04",]
NUM_SIDES = 6
SIDE_LENGTH = 50
PEN_WIDTH = 25

circumradius = SIDE_LENGTH

turtle.width(PEN_WIDTH)

color = cycle(COLORS)

for _ in range(4):

    turtle.penup()
    turtle.sety(-circumradius)
    turtle.pendown()

    for _ in range(NUM_SIDES):
        turtle.color(next(color))
        turtle.circle(circumradius,extent=360/NUM_SIDES,steps=1)

    circumradius += PEN_WIDTH*2

turtle.hideturtle()
turtle.done()

enter image description here

要接近目标图像,您需要将六边形(圆形)的各个部分绘制为梯形。

import turtle
from itertools import cycle

COLORS = ["#9c2921",]
NUM_SIDES = 6
SIDE_LENGTH = 50
PEN_WIDTH = 30

circumradius = SIDE_LENGTH

turtle.width(1)
turtle.speed('fastest')  # because I have no patience

color = cycle(COLORS)

for _ in range(4):

    turtle.penup()
    turtle.sety(-circumradius)
    turtle.pendown()

    for _ in range(NUM_SIDES):
        turtle.color(next(color))
        turtle.circle(circumradius,steps=1)
        turtle.right(90)

        turtle.begin_fill()
        turtle.forward(PEN_WIDTH/2)
        turtle.right(120)
        turtle.forward(circumradius + PEN_WIDTH/2)
        turtle.right(120)
        turtle.forward(PEN_WIDTH/2)
        turtle.end_fill()

        turtle.begin_fill()
        turtle.forward(PEN_WIDTH/2)
        turtle.right(60)
        turtle.forward(circumradius - PEN_WIDTH/2)
        turtle.right(60)
        turtle.forward(PEN_WIDTH/2)
        turtle.end_fill()

        turtle.left(90)

    circumradius += PEN_WIDTH*2

turtle.hideturtle()
turtle.done()

enter image description here