巴恩斯利·弗恩(Python)

Barnsley Fern in Python

在本教程中,我们将学习由Michael Barnsley创建的Barnsley Fern。巴恩斯利蕨的特征类似于蕨的形状。它是通过迭代称为迭代函数系统(IFS)的四个数学方程创建的。转换具有以下公式。

f(x,y)= $$ egin {bmatrix} a&b \ c&d end {bmatrix} egin {bmatrix} x \ y end {bmatrix} + egin {bmatrix} e \ f end {bmatrix} $$

资源 ?维基百科

变量的值是-

资源 ?维基百科

Barnsley Fern提出的四个方程是-

资源 ?维基百科

现在,我们将看到在Python中创建蕨形的代码。

<!-

现场演示

->

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# importing matplotlib module for the plot
import matplotlib.pyplot as plot
# importing random module to generate random integers for the plot
import random
# initialising the lists
x = [0]
y = [0]
# initialising a variable to zero to track position
current = 0
for i in range(1, 1000):
 # generating a random integer between 1 and 100
 z = random.randint(1, 100)
 # checking the z range and appending corresponding values to x and y
 # appending values to the x and y
 if z == 1:
   x.append(0)
   y.append(0.16 * y[current])
 if z >= 2 and z <= 86:
   x.append(0.85 * x[current] + 0.04 * y[current])
   y.append(-0.04 * x[current] + 0.85 * y[current] +1.6)
 if z>= 87 and z<= 93:
   x.append(0.2 * x[current] - 0.26 * y[current])
   y.append(0.23 * x[current] + 0.22*(y[current])+1.6)
 if z >= 94 and z <= 100:
   x.append(-0.15 * x[current] + 0.28 * y[current])
   y.append(0.26 * x[current] + 0.24 * y[current] + 0.44)
 # incrementing the current value
 current += 1
# plotting the graph using x and y
plot.scatter(x, y, s = 0.2, edgecolor = 'green')
plot.show()

输出量

如果运行上面的代码,您将得到以下结果。

结论

如果您对本教程有任何疑问,请在评论部分中提及。
参考?维基百科