Python – 使用Turtle的希尔伯特曲线

Python – 使用Turtle的希尔伯特曲线

分形是一种重复的曲线或图形。它由一个递归模式组成,其重复程度达到所需的嵌套程度。Turtle模块中提供了Turtle图形,用于在Python中绘制各种形状和图案。

希尔伯特曲线是由一连串按不同方向排列的U形曲线连接而成的曲线。这些U形曲线以一定的步长距离排列。

让我们来研究一个一级希尔伯特曲线。下面的步骤将画出一条简单的U型曲线。

让y=90度

1.向右旋转y度
2.移动步数大小
3.向左旋转y度
4.移动步数大小
5.向左旋转y度
6.移动步数大小
7.向右旋转y度

Python - 使用Turtle的希尔伯特曲线

让我们研究并尝试理解2级希尔伯特曲线。

同样,我们假设Turtle的指针最初指向右边。下面的步骤可以用来绘制曲线。

1.向右旋转90度
2.在1级创建一条旋转为-y度(即逆时针方向的y度)的希尔伯特曲线。
3.移动步数大小
4.向右旋转y度
5.创建一条旋转了y度的1级希尔伯特曲线(即顺时针方向的y度)。
6.向左旋转y度。
7.移动步长
8.创建一条旋转了-y度的1级希尔伯特曲线
9.向右旋转y度

Python - 使用Turtle的希尔伯特曲线

本节中使用的Turtle方法如下 :

  • forward() :用于在Turtle的方向上向前移动一个给定的距离。
  • backward() :用于在Turtle的方向上向后移动一定的距离。
  • left() :用于将Turtle向左旋转一个指定的角度。
  • right() :用于将Turtle向右旋转一个指定的角度。
  • goto() :用于将Turtle移动到指定的位置((x,y)坐标)。
  • penup() :用于指定在移动时不作画。
  • pendown() :用于指定在移动时进行绘图。
  • done() :用于指定Turtle的工作已经完成。

希尔伯特曲线的代码如下。

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()

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python Turtle