这里有人知道如何玩乌龟,并知道如何使用乌龟?
我无法按照下图所示的方式工作。 [忽略颜色]
from turtle import *
from math import *
def formulaX(R, r, p, t):
x = (R-r)*cos(t) - (r+p)*cos((R-r)/r*t)
def formulaY(R, r, p, t):
y = (R-r)*sin(t) - (r+p)*sin((R-r)/r*t)
def t_iterating(R, r, p):
t = 2*pi
up()
goto(formulaX, formulaY)
down()
while (True):
t = t+0.01
formulaX(R, r, p, t)
formulaY(R, r, p, t)
def main():
R = int(input("The radius of the fixed circle: "))
r = int(input("The radius of the moving circle: "))
p = int(input("The offset of the pen point, between <10 - 100>: "))
if p < 10 or p > 100:
input("Incorrect value for p!")
t_iterating(R, r, p)
input("Hit enter to close...")
main()'
我正在努力做出那种形状。这是我到目前为止所做的编码。我对python不好。
谢谢。我需要帮助。谢谢!
答案 0 :(得分:2)
没有!你错过了乌龟的观点!您应该尝试使用乌龟的相对运动来完成所有操作。想想你如何你是乌龟,在大地板上爬行,从你的屁股拖动画笔。
在每个小片段的时间里,乌龟将执行微分方程的一个小迭代,该微分方程控制整个行为。预先计算x y坐标并使用龟的GOTO函数通常不明智。
龟本身应该只对周围环境有相关了解。它有一个方向和一个位置。并且通过转动和移动来修改这两个状态。
所以,想想你将如何绘制螺旋线。特别是,考虑绘制第一个圆圈。当圆圈似乎关闭时,会发生一些有趣的事情:它错过了。它错过了一小部分,结果只是一个圆圈的一小部分。正是这个缺失的曲率关闭了圆圈中的大圆圈图案,因为它们累加了一整圈。
当绘制整个人物时,乌龟回到原来的位置和方向。
对这个答案的基调道歉。我是一个80多岁的孩子。我和Apple IIE一起去了学习中心。多年后,我实际上读了 Mindstorms 。很容易传播关于乌龟的错误想法,这会损害其教学价值,IMO。
答案 1 :(得分:2)
尝试将t_iterating
功能更改为:
def t_iterating(R, r, p):
t = 2*pi # It seems odd to me to start from 2*pi rather than 0.
down()
while t < 20*pi: # This loops while t goes from 2*pi to 20*pi.
t = t+0.01
goto(formulaX(R, r, p, t), formulaY(R, r, p, t))
up()
答案 2 :(得分:0)
这是我的代码。颜色可能不准确,但是这里是:
from turtle import *
from random import randint
speed(10000)
for i in range(20):
col = randint(1, 5)
if col == 1:
pencolor("orange")
elif col == 2:
pencolor("blue")
elif col == 3:
pencolor("green")
elif col == 4:
pencolor("purple")
elif col == 5:
pencolor("dark blue")
circle(50)
left(20)
这是输出:
希望这会有所帮助!
答案 3 :(得分:0)
我仍在学习,因此代码不简洁,但它有效,希望对那些寻求帮助的人有意义。
您基本上可以让海龟在 360 度之间循环,并且您可以选择两种笔颜色。
from turtle import Turtle, Screen
tim = Turtle()
tim.shape("turtle")
tim.color("green")
### total degrees in circle = 360
### turn left must be a divisor of 360 (1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 18, 20, 24, 30, 36, 40, 45, 60, 72, 90) NOTE: some divisors do not work as well
degrees = 360
turn_left = 12
total_circles = int(degrees / turn_left)
tim.pensize(3)
tim.speed(0)
def circle_colour1():
### choose your colour here:
tim.pencolor("pink")
tim.circle(-100)
tim.left(turn_left)
def circle_colour2():
### choose your colour here:
tim.pencolor("grey")
tim.circle(-100)
tim.left(turn_left)
for _ in range(0, int(total_circles / 2)):
circle_colour1()
circle_colour2()
screen = Screen()
screen.exitonclick()
真正的基本 (360°/10) 是:
from turtle import Turtle as d
draw = d()
draw.speed(0)
draw.pensize(3)
for _ in range(0, 36):
draw.circle(-100)
draw.left(10)
答案 4 :(得分:0)
我的代码在这里,该函数是为自动选择随机颜色而构建的。
from turtle import Turtle, Screen
import random
timmy = Turtle()
screen = Screen()
screen.colormode(255)
timmy.shape("turtle")
timmy.speed("fastest")
angle = [0, 90, 180, 270]
def random_color():
red = random.randint(0, 255)
green = random.randint(0, 255)
blue = random.randint(0, 255)
colour = (red, green, blue)
return colour
def draw_circles(num_of_gap):
for _ in range(int(360 / num_of_gap)):
timmy.color(random_color())
timmy.circle(100)
timmy.right(num_of_gap)
draw_circles(20)
screen.exitonclick()