-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplotperlin.py
executable file
·92 lines (70 loc) · 2.71 KB
/
plotperlin.py
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/python
import matplotlib.pyplot as plt
import random
from math import pi, radians
from perlin import *
def perlin3x3(fn):
grid_size = 6
cell_size3x3 = cell_size / grid_size
rows = []
for grid_i in range(grid_size):
row = []
for grid_j in range(grid_size):
random.seed((grid_i, grid_j))
a_ll = random.uniform(0, 2 * pi)
random.seed((grid_i + 1, grid_j))
a_lr = random.uniform(0, 2 * pi)
random.seed((grid_i, grid_j + 1))
a_ul = random.uniform(0, 2 * pi)
random.seed((grid_i + 1, grid_j + 1))
a_ur = random.uniform(0, 2 * pi)
print grid_i, grid_j, a_ll, a_lr, a_ul, a_ur
def img_gen(i, j):
return fn(
a_ll, a_lr, a_ul, a_ur,
(i % cell_size3x3) / cell_size3x3,
(j % cell_size3x3) / cell_size3x3)
cell = np.fromfunction(np.vectorize(img_gen),
(cell_size3x3, cell_size3x3))
row.append(cell)
rows.append(np.concatenate(row, axis=1))
img = np.concatenate(rows, axis=0)
return img
def plot_perlin_2d(fig, easing, a_ll, a_lr, a_ul, a_ur):
def img_gen(i, j):
return perlin2D(easing)(a_ll, a_lr, a_ul, a_ur, i / cell_size, j / cell_size)
def grad_gen(i, j):
return perlin2D_gradient_magnitude(easing)([a_ll, a_lr, a_ul, a_ur, i / cell_size, j / cell_size])
img = np.fromfunction(np.vectorize(img_gen), (cell_size, cell_size))
fig.add_subplot(1, 2, 1)
plt.imshow(img)
plt.colorbar()
img = np.fromfunction(np.vectorize(grad_gen), (cell_size, cell_size))
fig.add_subplot(1, 2, 2)
plt.imshow(img)
plt.colorbar()
fig = plt.figure(1, figsize=(15,6))
fig.add_subplot(1, 2, 1)
plt.imshow(perlin3x3(perlin2D(easing5, True)), cmap='Greys', vmin = -1, vmax = 1)
plt.colorbar()
fig.add_subplot(1, 2, 2)
plt.imshow(perlin3x3(lambda *args: perlin2D_gradient_magnitude(easing5, True)(args)))
plt.colorbar()
plt.show()
fig = plt.figure(2, figsize=(15,6))
fig.add_subplot(1, 2, 1)
plt.imshow(perlin3x3(perlin2D(easing5)), cmap='Greys', vmin = -.707, vmax = 0.707)
plt.colorbar()
fig.add_subplot(1, 2, 2)
plt.imshow(perlin3x3(lambda *args: perlin2D_gradient_magnitude(easing5)(args)))
plt.colorbar()
plt.show()
fig = plt.figure(3, figsize=(15,6))
plot_perlin_2d(fig, easing5, pi / 4, 3 * pi / 4, - pi / 4, - 3 * pi / 4)
plt.show()
fig = plt.figure(4, figsize=(15,6))
plot_perlin_2d(fig, easing3, radians(141.98), radians(345.72), radians(274.1), radians(60.79))
plt.show()
fig = plt.figure(5, figsize=(15,6))
plot_perlin_2d(fig, easing5, radians(245.51), radians(114.48), radians(114.48), radians(245.51))
plt.show()