# python利用《深奥的简洁》一书中的方法画Sierpinski三角形

## 代码

#encoding=utf-8
import random
import matplotlib.pyplot as plt
import numpy as np
'''
spot_1, spot_2, spot_3是三个点的坐标，它们构成一个三角形
zeroSpot是平面上再找的一个点的坐标
'''
spot_1 = (0, 0)
spot_2 = (80, 0)
spot_3 = (50, 50)
zeroSpot = (20, 20)

# 这个方法是输入两个点，返回这两个点的中心点的坐标
def centerSpot(spotOne, spotTwo):
x = (spotOne[0] + spotTwo[0]) / 2
y = (spotOne[1] + spotTwo[1]) / 2
return (x, y)

# 初始化现有点的x轴坐标
# 初始化现有点的y轴坐标
x_label = [spot_1[0], spot_2[0], spot_3[0], zeroSpot[0]]
y_label = [spot_1[1], spot_2[1], spot_3[1], zeroSpot[1]]

cspot = zeroSpot
# 将随机抽数→取中心点→令中心点为新的点c→随机抽数→......这一步重复10000次
for i in range(10000):
ran = random.choice([1, 2, 3])
if ran == 1:
cspot = centerSpot(spot_1, cspot)
elif ran == 2:
cspot = centerSpot(spot_2, cspot)
else:
cspot = centerSpot(spot_3, cspot)
x_label.append(cspot[0])
y_label.append(cspot[1])

x_label = np.array(x_label)
y_label = np.array(y_label)

# 绘图
plt.plot(x_label, y_label, '.', linewidth='1')
plt.show()



09-20

10-31 3538
10-16 115
08-08 804
12-28
04-17