Python – 使用海龟的希尔伯特曲线
分形是重复自身的曲线或图形。它包含一个递归模式,该模式重复到所需的嵌套级别。海龟图形在海龟模块中提供,用于在Python中绘制各种形状和图案。
希尔伯特曲线是由一系列沿不同方向排列和定向的 U 形曲线连接而成的曲线。这些 U 形曲线相隔一定的步长距离。
Let us examine a Level-1 Hilbert Curve. The following steps will draw a simple U curve.
Let y = 90 degree
- Rotate y degree towards the right
- Move step size
- Rotate y degree towards the left
- Move step size
- Rotate y degree towards the left
- Move step size
- Rotate y degree towards the right
Let us examine and try to understand the level-2 Hilbert Curve.
Again, we assume that the turtle pointer points towards right initially. The following steps may be used to draw the curve:
- Rotate 90 degrees towards the right
- Create a hilbert curve at level 1 rotated by -y degrees (ie, y degrees in anticlockwise direction)
- Move step size
- Rotate y degrees towards the right
- Create a level 1 hilbert curve rotated by y degrees (ie, y degrees in clockwise direction)
- Rotate y degrees towards the left.
- Move step size
- Create a level 1 hilbert curve rotated by -y degrees
- Rotate y degrees towards the right
本节中使用的turtle
方法如下:
- forward() :用于将乌龟向前移动一个给定的距离在乌龟的方向。
- backward() :用于将海龟沿海龟方向向后移动给定距离。
- left() :用于将海龟向左旋转指定角度。
- right() :用于将海龟向右旋转指定角度。
- goto() :用于将海龟移动到指定的位置((x,y)坐标)。
- penup() :用于指定在移动时不会进行绘图。
- pendown() :用于指定将在移动时进行绘图。
- done() :用于指定海龟工作完成。
希尔伯特曲线的代码如下:
from turtle import *
def hilbert(level, angle, step):
# Input Parameters are numeric
# Return Value: None
if level == 0:
return
right(angle)
hilbert(level-1, -angle, step)
forward(step)
left(angle)
hilbert(level-1, angle, step)
forward(step)
hilbert(level-1, angle, step)
left(angle)
forward(step)
hilbert(level-1, -angle, step)
right(angle)
def main():
level = int(input())
size = 200
penup()
goto(-size / 2.0, size / 2.0)
pendown()
# For positioning turtle
hilbert(level, 90, size/(2**level-1))
done()
if __name__=='__main__':
main()
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。