attempt using layered additive colors
This commit is contained in:
parent
a22acc2220
commit
0839b30015
@ -1,9 +1,6 @@
|
|||||||
size = 500
|
size = 500
|
||||||
debug = false
|
debug = false
|
||||||
|
|
||||||
love.load = ->
|
|
||||||
love.window.setMode size, size
|
|
||||||
|
|
||||||
biomes = {
|
biomes = {
|
||||||
"frozen desert": { 1/3, 0.75, 0.76, 1, h: 0.5, p: 0.12, t: 0 }
|
"frozen desert": { 1/3, 0.75, 0.76, 1, h: 0.5, p: 0.12, t: 0 }
|
||||||
swamp: { 65/255, 104/255, 37/255, 1, h: 0.1, p: 1, t: 0.8 }
|
swamp: { 65/255, 104/255, 37/255, 1, h: 0.1, p: 1, t: 0.8 }
|
||||||
@ -33,17 +30,85 @@ d2 = (A, B) ->
|
|||||||
|
|
||||||
colors = {}
|
colors = {}
|
||||||
|
|
||||||
for h = 0, size
|
merge = (A, B, d) ->
|
||||||
|
A[4] = A[4] or 1
|
||||||
|
B[4] = B[4] or 1
|
||||||
|
c = 1
|
||||||
|
f = 1 - d
|
||||||
|
r = math.sqrt ((A[1]*c)^2 + (B[1]*d)^2) / (2 - f)
|
||||||
|
g = math.sqrt ((A[2]*c)^2 + (B[2]*d)^2) / (2 - f)
|
||||||
|
b = math.sqrt ((A[3]*c)^2 + (B[3]*d)^2) / (2 - f)
|
||||||
|
a = math.sqrt ((A[4]*c)^2 + (B[4]*d)^2) / (2 - f)
|
||||||
|
-- r = math.abs (A[1] + B[1]*d) / (2 - f)
|
||||||
|
-- g = math.abs (A[2] + B[2]*d) / (2 - f)
|
||||||
|
-- b = math.abs (A[3] + B[3]*d) / (2 - f)
|
||||||
|
-- a = math.abs (A[4] + B[4]*d) / (2 - f)
|
||||||
|
-- r = math.sqrt math.abs(A[1]^2 - B[1]^2)*d + A[1]^2
|
||||||
|
-- g = math.sqrt math.abs(A[2]^2 - B[2]^2)*d + A[2]^2
|
||||||
|
-- b = math.sqrt math.abs(A[3]^2 - B[3]^2)*d + A[3]^2
|
||||||
|
-- a = math.sqrt math.abs(A[4]^2 - B[4]^2)*d + A[4]^2
|
||||||
|
-- r = math.sqrt (A[1]^2 + B[1]^2) / 2
|
||||||
|
-- g = math.sqrt (A[2]^2 + B[2]^2) / 2
|
||||||
|
-- b = math.sqrt (A[3]^2 + B[3]^2) / 2
|
||||||
|
-- a = math.sqrt (A[4]^2 + B[4]^2) / 2
|
||||||
|
return { r, g, b, a }
|
||||||
|
|
||||||
|
love.load = ->
|
||||||
|
love.window.setMode size, size
|
||||||
|
|
||||||
|
for h = 0, size
|
||||||
colors[h] = {}
|
colors[h] = {}
|
||||||
for t = 0, size
|
for t = 0, size
|
||||||
distances = {}
|
colors[h][t] = { 0, 0, 0, 1 }
|
||||||
|
|
||||||
|
max = 0
|
||||||
|
for name, biome in pairs biomes
|
||||||
|
for h = 0, size
|
||||||
|
for t = 0, size
|
||||||
|
v = 1 - math.sqrt d2({biome.h, biome.t}, {h/size, t/size})
|
||||||
|
color = colors[h][t]
|
||||||
|
color[1] += biome[1] * v
|
||||||
|
color[2] += biome[2] * v
|
||||||
|
color[3] += biome[3] * v
|
||||||
|
max = color[1] if color[1] > max
|
||||||
|
max = color[2] if color[2] > max
|
||||||
|
max = color[3] if color[3] > max
|
||||||
|
-- print color[1], color[2], color[3], color[4]
|
||||||
|
|
||||||
|
for h = 0, size
|
||||||
|
for t = 0, size
|
||||||
|
color = colors[h][t]
|
||||||
|
color[1] /= max
|
||||||
|
color[2] /= max
|
||||||
|
color[3] /= max
|
||||||
|
|
||||||
|
if true return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for h = 0, size
|
||||||
|
colors[h] = {}
|
||||||
|
for t = 0, size
|
||||||
|
distances = {} -- format: distance, biome name, biome colors
|
||||||
for name, biome in pairs biomes
|
for name, biome in pairs biomes
|
||||||
table.insert distances, { d2({biome.h, biome.t}, {h/size, t/size}), name, biome }
|
table.insert distances, { d2({biome.h, biome.t}, {h/size, t/size}), name, biome }
|
||||||
table.sort distances, (A, B) -> return A[1] < B[1]
|
table.sort distances, (A, B) -> return A[1] < B[1]
|
||||||
colors[h][t] = distances[1][3]
|
-- colors[h][t] = distances[1][3]
|
||||||
|
|
||||||
|
-- distanceA, distanceB = 28, 99
|
||||||
|
-- relative distance is B - A (71)
|
||||||
|
-- ratio = 28/99 = 0.28 mix of B
|
||||||
|
-- another example, w 30 and 31... 0.91 (way to high..either divide it in half OR...smaller/difference?)
|
||||||
|
|
||||||
|
d = distances[1][1] / distances[2][1] --/ 2
|
||||||
|
colors[h][t] = merge(distances[1][3], distances[2][3], d)
|
||||||
|
|
||||||
love.draw = ->
|
love.draw = ->
|
||||||
for x = 1, size
|
for x = 1, size
|
||||||
|
-- green = size / x
|
||||||
|
-- yellow = 1 - green
|
||||||
|
-- yg = math.min green, yellow
|
||||||
|
-- love.graphics.setColor yellow, yg, 0, 1
|
||||||
for y = 1, size
|
for y = 1, size
|
||||||
love.graphics.setColor colors[x][y]
|
love.graphics.setColor colors[x][y]
|
||||||
love.graphics.points x, y
|
love.graphics.points x, y
|
||||||
|
Loading…
Reference in New Issue
Block a user