mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-17 20:11:50 +02:00
refactor
This commit is contained in:
@@ -67,31 +67,11 @@ function wf_isAllCollapsed(wf) = every(
|
|||||||
function(row) every(row, function(states) len(states) == 1)
|
function(row) every(row, function(states) len(states) == 1)
|
||||||
);
|
);
|
||||||
|
|
||||||
function wf_remove(wf, x, y, removedStates) =
|
function wf_remove(wf, x, y, removedStates) = _replaceStatesAt(wf, x, y, [
|
||||||
let(
|
for(state = wf_eigenstates_at(wf, x, y))
|
||||||
eigenstates = wf_eigenstates(wf),
|
if(!has(removedStates, state))
|
||||||
rowsBeforeY = slice(eigenstates, 0, y),
|
state
|
||||||
rowY = eigenstates[y],
|
]);
|
||||||
rowsAfterY = slice(eigenstates, y + 1),
|
|
||||||
statesBeforeX = slice(rowY, 0, x),
|
|
||||||
states = rowY[x],
|
|
||||||
statesAfterX = slice(rowY, x + 1),
|
|
||||||
newRowY = concat(
|
|
||||||
statesBeforeX,
|
|
||||||
[[for(state = states) if(!has(removedStates, state)) state]],
|
|
||||||
statesAfterX
|
|
||||||
)
|
|
||||||
)
|
|
||||||
[
|
|
||||||
wf_width(wf),
|
|
||||||
wf_height(wf),
|
|
||||||
wf_weights(wf),
|
|
||||||
concat(
|
|
||||||
rowsBeforeY,
|
|
||||||
[newRowY],
|
|
||||||
rowsAfterY
|
|
||||||
)
|
|
||||||
];
|
|
||||||
|
|
||||||
function wf_collapse(wf, x, y) =
|
function wf_collapse(wf, x, y) =
|
||||||
let(
|
let(
|
||||||
@@ -117,18 +97,19 @@ function _wf_collapse(wf, x, y, states_weights, leng, threshold, i = 0) =
|
|||||||
)
|
)
|
||||||
t < 0 ? _oneStateAt(wf, x, y, state) : _wf_collapse(wf, x, y, states_weights, leng, t, i + 1);
|
t < 0 ? _oneStateAt(wf, x, y, state) : _wf_collapse(wf, x, y, states_weights, leng, t, i + 1);
|
||||||
|
|
||||||
function _oneStateAt(wf, x, y, state) =
|
function _oneStateAt(wf, x, y, state) = _replaceStatesAt(wf, x, y, [state]);
|
||||||
|
|
||||||
|
function _replaceStatesAt(wf, x, y, states) =
|
||||||
let(
|
let(
|
||||||
eigenstates = wf_eigenstates(wf),
|
eigenstates = wf_eigenstates(wf),
|
||||||
rowsBeforeY = slice(eigenstates, 0, y),
|
rowsBeforeY = slice(eigenstates, 0, y),
|
||||||
rowY = eigenstates[y],
|
rowY = eigenstates[y],
|
||||||
rowsAfterY = slice(eigenstates, y + 1),
|
rowsAfterY = slice(eigenstates, y + 1),
|
||||||
statesBeforeX = slice(rowY, 0, x),
|
statesBeforeX = slice(rowY, 0, x),
|
||||||
states = [state],
|
|
||||||
statesAfterX = slice(rowY, x + 1),
|
statesAfterX = slice(rowY, x + 1),
|
||||||
newRowY = concat(
|
newRowY = concat(
|
||||||
statesBeforeX,
|
statesBeforeX,
|
||||||
[[state]],
|
[states],
|
||||||
statesAfterX
|
statesAfterX
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user