我怎样才能使花瓣呈菱形而不是椭圆形

How can I make the petals diamond shaped rather than an oval

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

我正在努力创造的花

代码:

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)

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

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

注意:花朵看起来更接近您的 objective,角度为 60 而不是 100

我同意@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()