我正在通过 ThinkPython 一书学习 Python(为了好玩)。到目前为止,我真的很享受这个新爱好。最近的练习之一是制作阿基米德螺旋线。为了测试我的技能,我一直在制作双曲螺旋线,但被难住了!
根据方程r=a+b*theta^(1/c)
- 当c=1时,我们看到一个阿基米德螺旋
- 当c=-1我们应该看到一个双曲螺旋
我正在使用以下代码,并希望对正确方向的任何帮助。
- 谁能在不直接给出答案的情况下帮助我朝着正确的方向发展。除非它只是一个格式问题。
- 如果建议的答案涉及使用 (x,y) 坐标进行绘制,则没有积分。
import turtle
import math
def draw_spiral(t, n, length=3, a=0.1, b=0.0002):
"""Draws an Archimedian spiral starting at the origin.
Args:
n: how many line segments to draw
length: how long each segment is
a: how loose the initial spiral starts out (larger is looser)
b: how loosly coiled the spiral is (larger is looser)
http://en.wikipedia.org/wiki/Spiral
"""
theta = 0.1
for i in range(n):
t.fd(length)
dtheta = 1/((a + b * (theta**(1/-1))))
t.lt(dtheta)
theta += dtheta
# create the world and bob
bob = turtle.Turtle()
draw_spiral(bob, n=1000)
turtle.mainloop()
"""Source code from ThinkPython @ http://greenteapress.com/thinkpython2/code/spiral.py
edited to attempt a hyperbolic spiral"""
非常感谢!