【问题标题】:How can I make the petals diamond shaped rather than an oval我怎样才能使花瓣呈菱形而不是椭圆形
【发布时间】:2021-09-05 18:54:27
【问题描述】:

我正在尝试使用图案来制作一朵带有菱形花瓣的花朵,但这些椭圆形的花瓣是我能得到的最接近的。我想知道是否有人可以对此提供帮助或提供任何反馈。

我正在尝试制作的花

代码:

import turtle
def petal(t, r, angle):
    for i in range(2):
        t.circle(r,angle)
        t.left(180-angle)

def flower(t, n, r, angle):
    for i in range(n):
        petal(t,r,angle)
        t.left(360.0/n)

def move(t, length):
    window = turtle.Screen()
    window.bgcolor("Yellow")
    t.pu()
    t.fd(length)
    t.pd()

sam = turtle.Turtle()

sam.speed(99)

move(sam, -150)

sam.color("red")
move(sam, 150)
flower(sam, 10, 40.0, 100.0)

【问题讨论】:

    标签: python turtle-graphics python-turtle


    【解决方案1】:

    在花瓣函数中使用直线运动:

    def petal(t,d,a):
        for _ in range(2):
          t.fd(d)
          t.left(a)
          t.fd(d)
          t.left(180-a)
    

    注意:花朵在 60 度而不是 100 度时看起来更接近您的目标

    【讨论】:

      【解决方案2】:

      我同意@AlainT。关于使用较小的 60 度角,但我相信如果我们将 OP 的 petal(t, r, angle) 调用中的 r 解释为 radius,则该解决方案会失败。如果是这样,为花瓣绘制的菱形应该由该半径约束:

      这样做需要一点数学来计算在花瓣的每个边缘上向前移动多远,而不是使用传递的半径作为距离:

      from math import radians, sin
      from turtle import Screen, Turtle
      
      def petal(turtle, radius, angle):
          side = (radius / 2) / sin(radians(90 - angle/2))
      
          for _ in range(2):
              turtle.forward(side)
              turtle.left(angle)
              turtle.forward(side)
              turtle.left(180 - angle)
      
      def flower(turtle, petals, radius, angle):
      
          for _ in range(petals):
              petal(turtle, radius, angle)
              turtle.left(360 / petals)
      
      screen = Screen()
      screen.bgcolor('yellow')
      
      sam = Turtle()
      sam.hideturtle()
      sam.speed('fastest')
      sam.color('red')
      
      flower(sam, 10, 80, 60)
      
      screen.exitonclick()
      

      【讨论】:

        猜你喜欢
        • 2012-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多