mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-05 06:17:32 +02:00
optimization
This commit is contained in:
@@ -86,14 +86,15 @@ function _replaceStatesAt(wf, x, y, states) =
|
|||||||
];
|
];
|
||||||
|
|
||||||
function wf_not_collapsed_coords(wf, notCollaspedCoords) =
|
function wf_not_collapsed_coords(wf, notCollaspedCoords) =
|
||||||
|
let(eigenstates = wf_eigenstates(wf), we = wf_width(wf) - 1, he = wf_height(wf) - 1, rx = [0:we])
|
||||||
is_undef(notCollaspedCoords) ?
|
is_undef(notCollaspedCoords) ?
|
||||||
[
|
[
|
||||||
for(y = [0:wf_height(wf) - 1], x = [0:wf_width(wf) - 1])
|
for(y = [0:he], x = rx)
|
||||||
if(len(wf_eigenstates(wf)[y][x]) != 1) [x, y]
|
if(len(eigenstates[y][x]) != 1) [x, y]
|
||||||
] :
|
] :
|
||||||
[
|
[
|
||||||
for(coord = notCollaspedCoords)
|
for(coord = notCollaspedCoords)
|
||||||
if(len(wf_eigenstates(wf)[coord.y][coord.x]) != 1) coord
|
if(len(eigenstates[coord.y][coord.x]) != 1) coord
|
||||||
];
|
];
|
||||||
|
|
||||||
function wf_coord_weights_min_entropy(wf, notCollaspedCoords) =
|
function wf_coord_weights_min_entropy(wf, notCollaspedCoords) =
|
||||||
@@ -198,10 +199,6 @@ function neighbor_dirs(x, y, width, height) = [
|
|||||||
if(y < height - 1) [ 0, 1] // bottom
|
if(y < height - 1) [ 0, 1] // bottom
|
||||||
];
|
];
|
||||||
|
|
||||||
function neighbor_compatibilities(sample, x, y, width, height) =
|
|
||||||
let(me = sample[y][x])
|
|
||||||
[for(dir = neighbor_dirs(x, y, width, height)) [me, sample[y + dir.y][x + dir.x], dir]];
|
|
||||||
|
|
||||||
function compatibilities_of_tiles(sample) =
|
function compatibilities_of_tiles(sample) =
|
||||||
let(
|
let(
|
||||||
width = len(sample[0]),
|
width = len(sample[0]),
|
||||||
@@ -209,19 +206,20 @@ function compatibilities_of_tiles(sample) =
|
|||||||
rx = [0:width - 1]
|
rx = [0:width - 1]
|
||||||
)
|
)
|
||||||
hashset_elems(hashset([
|
hashset_elems(hashset([
|
||||||
for(y = [0:height - 1], x = rx)
|
for(y = [0:height - 1], x = rx, dir = neighbor_dirs(x, y, width, height))
|
||||||
each neighbor_compatibilities(sample, x, y, width, height)
|
[sample[y][x], sample[y + dir.y][x + dir.x], dir] // neighbor_compatibilities
|
||||||
], number_of_buckets = width * height));
|
], number_of_buckets = width * height));
|
||||||
|
|
||||||
function collapsed_tiles(wf) =
|
function collapsed_tiles(wf) =
|
||||||
let(
|
let(
|
||||||
wf_h = wf_height(wf),
|
wf_h = wf_height(wf),
|
||||||
wf_w = wf_width(wf),
|
wf_w = wf_width(wf),
|
||||||
rx = [0:wf_w - 1]
|
rx = [0:wf_w - 1],
|
||||||
|
eigenstates = wf_eigenstates(wf)
|
||||||
)
|
)
|
||||||
[
|
[
|
||||||
for(y = [0:wf_h - 1])
|
for(y = [0:wf_h - 1])
|
||||||
let(wfy = wf_eigenstates(wf)[y])
|
let(wfy = eigenstates[y])
|
||||||
[for(x = rx) wfy[x][0]]
|
[for(x = rx) wfy[x][0]]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user