1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-06 00:23:49 +02:00
ComfyFactorio/utils/one_dimensional_noise.lua
2021-03-24 20:14:55 +01:00

564 lines
5.7 KiB
Lua

--mewmew one dimensional noise
local math_floor = math.floor
local heights = {
-57,
-189,
-128,
49,
-1,
44,
201,
-75,
-223,
159,
-51,
88,
-61,
-206,
-58,
246,
154,
233,
53,
-89,
-41,
253,
-253,
33,
-160,
140,
-83,
164,
-129,
-67,
-238,
6,
238,
145,
85,
89,
-207,
126,
112,
175,
-73,
-211,
-76,
137,
59,
151,
167,
-81,
-13,
225,
-197,
-25,
139,
-202,
196,
199,
104,
-50,
-133,
-199,
-233,
-162,
-193,
-117,
79,
72,
39,
-68,
-48,
-108,
-234,
-98,
161,
0,
-78,
37,
-33,
-95,
182,
-114,
144,
-110,
-243,
-137,
-105,
-217,
-224,
125,
97,
-190,
-204,
173,
-28,
186,
168,
60,
152,
91,
-47,
-27,
-107,
-10,
-21,
-142,
-181,
-201,
-183,
160,
-209,
90,
-135,
142,
-123,
-185,
65,
-30,
-26,
242,
-157,
177,
-141,
-44,
-138,
113,
-92,
17,
-192,
245,
-215,
45,
208,
111,
248,
235,
134,
211,
-96,
-19,
68,
108,
84,
114,
-94,
-251,
-195,
29,
129,
-102,
181,
-70,
119,
-125,
-221,
86,
80,
-118,
179,
-255,
-170,
176,
106,
192,
209,
221,
-145,
-3,
130,
247,
-194,
34,
77,
-228,
188,
75,
-11,
25,
-147,
-69,
71,
-46,
-136,
-130,
227,
-198,
95,
82,
178,
-101,
249,
-79,
-8,
131,
241,
-208,
153,
-131,
117,
166,
-212,
78,
-168,
223,
-32,
98,
-164,
162,
-100,
-163,
-148,
-177,
-9,
-55,
-240,
-52,
-5,
61,
-161,
237,
-120,
-236,
21,
10,
42,
243,
170,
-246,
-2,
18,
128,
-40,
-31,
92,
3,
194,
-167,
105,
-150,
-65,
148,
156,
-225,
138,
-126,
-82,
23,
-169,
28,
-200,
133,
236,
-242,
-250,
-77,
180,
-7,
43,
-182,
121,
-172,
-106,
205,
-66,
-205,
174,
40,
-38,
200,
210,
-247,
48,
76,
-90,
226,
-72,
55,
24,
-140,
-93,
244,
189,
-60,
-159,
-122,
-191,
47,
185,
-15,
-121,
204,
240,
-84,
229,
100,
38,
74,
-186,
-144,
20,
127,
31,
27,
213,
-146,
183,
150,
8,
-116,
-174,
157,
73,
96,
-104,
-248,
63,
-91,
-99,
203,
122,
-153,
217,
-23,
-166,
1,
132,
-171,
116,
163,
-86,
-188,
-87,
-112,
158,
-39,
-214,
-63,
141,
-103,
-49,
202,
-241,
70,
16,
218,
2,
67,
-53,
66,
-254,
206,
212,
-24,
-18,
-109,
93,
50,
-62,
-12,
-203,
-244,
-127,
155,
-165,
219,
-119,
-179,
-37,
169,
51,
-143,
-226,
215,
32,
250,
191,
171,
-249,
-230,
146,
-20,
228,
207,
-178,
184,
-173,
143,
239,
-152,
-59,
26,
-14,
-139,
30,
-235,
-184,
195,
118,
19,
-115,
-176,
11,
-34,
56,
-132,
-220,
197,
165,
-17,
172,
220,
-187,
-232,
-22,
187,
-35,
-134,
254,
-216,
52,
36,
252,
46,
-245,
14,
5,
123,
57,
-158,
224,
83,
-149,
-111,
-45,
69,
-210,
54,
-156,
4,
7,
149,
-175,
102,
216,
-29,
-227,
22,
-85,
-252,
-239,
-180,
-231,
136,
193,
99,
198,
-219,
214,
64,
-80,
110,
41,
230,
87,
15,
-97,
-4,
58,
231,
-71,
12,
-154,
62,
109,
135,
-6,
124,
35,
-218,
101,
115,
94,
190,
-124,
-229,
222,
-16,
-74,
-222,
147,
255,
-213,
13,
-237,
-42,
120,
234,
9,
-36,
-155,
-54,
-113,
-56,
-88,
251,
-196,
81,
107,
-64,
-43,
-151,
232,
103
}
local function get_noise(x, seed)
x = x + seed
local index = math_floor(x % 255) + 1
local h1 = heights[index]
local h2 = heights[index + 1]
if not h2 then
h2 = heights[1]
end
local floaty = (x - math_floor(x))
if not floaty then
return h1
end
local vector = h2 - h1
local vector_pos = vector * floaty
vector_pos = vector_pos * (vector_pos / vector)
local n = h1 + vector_pos
n = n / 255
return n
end
local function testnoise()
local surface = game.surfaces[1]
local seed = math.random(1, 1000000)
for x = -256, 256, 1 do
local noise = get_noise(x / 64, seed)
local entity = surface.create_entity({name = 'stone-wall', position = {x, noise * 32}, force = 'player'})
rendering.draw_text {
text = math.round(noise, 4),
surface = surface,
target = entity,
target_offset = {0, 0},
color = {0, 255, 0},
scale = 0.88,
-- font = default,
orientation = 0.75
}
end
end
return get_noise, testnoise