我怎样才能使花瓣呈菱形而不是椭圆形
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()
我正在尝试使用图案来制作一朵带有菱形花瓣的花,但这些椭圆形花瓣是我能得到的最接近的花瓣。我想知道是否有人可以对此提供帮助或提供任何反馈。
我正在努力创造的花
代码:
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()