📜  科赫曲线或科赫雪花

📅  最后修改于: 2022-05-13 01:54:21.100000             🧑  作者: Mango

科赫曲线或科赫雪花

什么是科赫曲线?

科赫雪花(也称为科赫曲线、科赫星或科赫岛)是一种数学曲线,也是最早被描述的分形曲线之一。它基于 Koch 曲线,该曲线出现在 1904 年瑞典数学家 Helge von Koch 题为“在没有切线的连续曲线上,可从初等几何构造”的论文中。

雪花面积的级数收敛到原始三角形面积的 8/5 倍,而雪花周长的级数发散到无穷大。因此,雪花具有由无限长的线界定的有限区域。


建造

第1步:

画一个等边三角形。你可以用指南针或量角器画它,或者如果你不想花太多时间画雪花,你可以直接用眼睛画。

  • 由于这种分形的性质,边长最好能被 3 整除。这将在接下来的几个步骤中变得清晰。

    第2步:

    将每一边分成三个相等的部分。这就是为什么边可以被三整除的原因。

    第三步:

    在每个中间部分画一个等边三角形。测量中间三分之一的长度以了解这些新三角形的边长。

    第4步:

    将每个外侧分成三份。你可以看到第二代三角形覆盖了第一代。这三个线段不应一分为三。

    第五步:

    在每个中间部分画一个等边三角形。

  • 请注意您是如何绘制每个桅杆三分之一的下一代部件的。


    表示为 Lindenmayer 系统


    Koch 曲线可以用以下重写系统(Lindenmayer 系统)表示:

    字母:F
    常数:+,?
    公理:F
    制作规则:F? F+F–F+F

    这里,F 表示“向前拉”,- 表示“右转 60°”,+ 表示“左转 60°”。
    要创建科赫雪花,可以使用 F++F++F(等边三角形)作为公理。

    创建科赫曲线:

    # Python program to print partial Koch Curve.
    # importing the libraries : turtle standard 
    # graphics library for python
    from turtle import *
      
    #function to create koch snowflake or koch curve
    def snowflake(lengthSide, levels):
        if levels == 0:
            forward(lengthSide)
            return
        lengthSide /= 3.0
        snowflake(lengthSide, levels-1)
        left(60)
        snowflake(lengthSide, levels-1)
        right(120)
        snowflake(lengthSide, levels-1)
        left(60)
        snowflake(lengthSide, levels-1)
      
    # main function
    if __name__ == "__main__":
      
        # defining the speed of the turtle
        speed(0)                   
        length = 300.0              
      
        # Pull the pen up – no drawing when moving.
        penup()                     
          
        # Move the turtle backward by distance, 
        # opposite to the direction the turtle 
        # is headed.
        # Do not change the turtle’s heading.
        backward(length/2.0)        
      
        # Pull the pen down – drawing when moving.
        pendown()         
      
        snowflake(length, 4)
      
        # To control the closing windows of the turtle
        mainloop() 
    

    输出:

    要创建具有科赫曲线的完整雪花,我们需要重复相同的图案 3 次。所以让我们尝试一下。

    # Python program to print complete Koch Curve.
    from turtle import *
      
    # function to create koch snowflake or koch curve
    def snowflake(lengthSide, levels):
        if levels == 0:
            forward(lengthSide)
            return
        lengthSide /= 3.0
        snowflake(lengthSide, levels-1)
        left(60)
        snowflake(lengthSide, levels-1)
        right(120)
        snowflake(lengthSide, levels-1)
        left(60)
        snowflake(lengthSide, levels-1)
      
    # main function
    if __name__ == "__main__":
        # defining the speed of the turtle
        speed(0)                   
        length = 300.0   
      
        # Pull the pen up – no drawing when moving.
        # Move the turtle backward by distance, opposite
        # to the direction the turtle is headed.
        # Do not change the turtle’s heading.           
        penup()                     
      
        backward(length/2.0)
      
        # Pull the pen down – drawing when moving.        
        pendown()           
        for i in range(3):    
            snowflake(length, 4)
            right(120)
      
         # To control the closing windows of the turtle
        mainloop()       
    

    输出:

    https://media.geeksforgeeks.org/wp-content/uploads/output_2.mp4