n = 6;
A = (rand(n,n,n) > 0.5);
# the following function can be in a standalone file too. the bug still happens.
function voxel2 (pos, sz = [1 1 1], color = [0.8 0.8 0.8], alpha = 0.2)
verts = (dec2bin(0:7)=='1') .* sz + pos;
faces = [1 2 4 3; 5 6 8 7; 1 3 7 5; 2 4 8 6; 1 2 7 5; 3 4 8 7]; # the 6 faces of the cube in cyclic order
patch ("Faces",faces, "Vertices",verts, "facecolor",color, "facealpha",alpha);
endfunction
for i = 1:10
# the bug does not happen if this loop executes 7 times or fewer. 8 times or more it is repeatable.
# in production code, matrix A changes for each iteration but for showing this bug it's been frozen
figure(i, 'position', [i*200, 100, 150, 150]); hold on; axis equal; axis off; view(135, atan(1/sqrt(2))*180/pi);
for p = 1:n
for q = 1:n
for r = 1:n
if (A(p,q,r))
voxel2 ([p q r]);
endif
endfor
endfor
endfor
# saveas (gcf, sprintf ("test%02d.png", i)); # this has been commented out for speeding up bug test execution
endfor