使用python绘制科赫雪花、繁花曲线、谢尔平斯基三角形、对数螺线

使用python绘制几种数学曲线,代码为AI生成。

以下是绘制科赫雪花的Python代码,使用递归算法生成分形图案,并通过`matplotlib`进行可视化:

```python
import matplotlib.pyplot as plt
import math

def koch_curve(start, end, depth):
    """递归生成科赫曲线的点"""
    if depth == 0:
        return [start, end]
    else:
        # 将线段分为三等分
        x1, y1 = start
        x2, y2 = end
        dx = x2 - x1
        dy = y2 - y1

        # 计算四个关键点
        pA = (x1 + dx/3, y1 + dy/3)
        pB = (x1 + 2*dx/3, y1 + 2*dy/3)
        
        # 计算等边三角形顶点
        length = math.hypot(dx, dy)
        theta = math.atan2(dy, dx)
        px = pA[0] + (length/3) * math.cos(theta - math.pi/3)
        py = pA[1] + (length/3) * math.sin(theta - math.pi/3)
        peak = (px, py)

        # 递归处理四个子段
        return (
            koch_curve(start, pA, depth-1)[:-1] +
            koch_curve(pA, peak, depth-1)[:-1] +
            koch_curve(peak, pB, depth-1)[:-1] +
            koch_curve(pB, end, depth-1)
        )

def draw_koch_snowflake(depth=3):
    """绘制完整的科赫雪花"""
    # 定义初始等边三角形顶点
    size = 1000
    h = size * math.sqrt(3) / 2
    vertices = [
        (0, 0),
        (size, 0),
        (size/2, h)
    ]

    # 生成三条边的点
    points = []
    for i in range(3):
        edge = koch_curve(vertices[i], vertices[(i+1)%3], depth)
        points += edge[:-1]  # 避免重复添加端点
    
    # 闭合曲线
    points.append(points[0])

    # 提取坐标并绘图
    x, y = zip(*points)
    plt.figure(figsize=(8, 8))
    plt.axis('equal')
    plt.axis('off')
    plt.plot(x, y, 'b')
    plt.show()

# 调用函数绘制科赫雪花(默认递归深度3)
draw_koch_snowflake()
```

**代码说明:**

1. **koch_curve函数**:
   - 使用递归算法生成科赫曲线的坐标点
   - 每次递归将线段分为三等分,并在中间段生成等边三角形顶点
   - 通过三角函数计算顶点位置,确保正确的几何关系

2. **draw_koch_snowflake函数**:
   - 创建初始等边三角形
   - 对每条边应用科赫曲线生成算法
   - 使用matplotlib绘制最终图形

**使用说明:**

1. 确保已安装matplotlib库:
   ```bash
   pip install matplotlib
   ```

2. 将代码保存为`D:\MyPythonProject\koch\koch_snowflake.py`

3. 运行脚本,默认生成递归深度为3的科赫雪花:
   ```bash
   python koch_snowflake.py
   ```

**效果调整:**
- 修改`draw_koch_snowflake()`参数调整递归深度(如`depth=4`更复杂)
- 修改`size`值改变雪花大小
- 修改`plt.plot()`参数调整线条颜色/粗细

该代码将生成一个对称的科赫雪花分形图案,递归深度越大细节越丰富,但计算时间也会增加。

以下是使用Python海龟绘图库绘制谢尔平斯基三角形的代码实现,包含递归算法和图形化绘制过程:

```python
import turtle

def draw_sierpinski(t, points, depth):
    """递归绘制谢尔平斯基三角形
    :param t: 海龟对象
    :param points: 三角形顶点坐标 (三元组)
    :param depth: 递归深度
    """
    # 定义三种不同颜色区分层级
    colors = ["#4B0082", "#6A5ACD", "#9370DB", "#BA55D3"]
    t.color(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值