xxxxxxxxxx
157
let visibilityTable =
// [
// 0b00000000,
// 0b10000000,
// 0b10001000,
// 0b10101000,
// 0b10101010,
// 0b11101010,
// 0b11101110,
// 0b11111110,
// 0b11111111,
// ];
// [
// 0b00000000,
// 0b10000000,
// 0b11000000,
// 0b11100000,
// 0b11110000,
// 0b11111000,
// 0b11111100,
// 0b11111110,
// 0b11111111,
// ];
[
0b0000000000000000,
0b1000000000000000,
0b1000000010000000,
0b1000100010000000,
0b1000100010001000,
0b1010100010001000,
0b1010100010101000,
0b1010101010101000,
0b1010101010101010,
0b1110101010101010,
0b1110101011101010,
0b1110111011101010,
0b1110111011101110,
0b1111111011101110,
0b1111111011111110,
0b1111111111111110,
0b1111111111111111,
];
// [
// 0b0000000000000000,
// 0b1000000000000000,
// 0b1100000000000000,
// 0b1110000000000000,
// 0b1111000000000000,
// 0b1111100000000000,
// 0b1111110000000000,
// 0b1111111000000000,
// 0b1111111100000000,
// 0b1111111110000000,
// 0b1111111111000000,
// 0b1111111111100000,
// 0b1111111111110000,
// 0b1111111111111000,
// 0b1111111111111100,
// 0b1111111111111110,
// 0b1111111111111111,
// // ];
// [
// 0b0000000000000000,
// 0b1000000000000000,
// 0b1000000000000000,
// 0b1100000000000000,
// 0b1100000000000000,
// 0b1110000000000000,
// 0b1111000000000000,
// 0b1111100000000000,
// 0b1111111000000000,
// 0b1111111111000000,
// 0b1111111111110000,
// 0b1111111111111000,
// 0b1111111111111100,
// 0b1111111111111110,
// 0b1111111111111110,
// 0b1111111111111111,
// 0b1111111111111111,
// ];
let visibilityIndex = 0;
let bitIndex = 0;
let dir = 0;
let radius = 40;
let bitCount;
function setup()
{
createCanvas(400, 400);
strokeWeight(3);
stroke(230, 220, 20);
fill(230, 220, 20, 150);
let fullVisibility = visibilityTable[visibilityTable.length - 1];
bitCount = ceil(Math.log2(fullVisibility));
}
function draw()
{
background(80, 100, 220);
if (IsVisible()) DrawShape();
IncrementBit();
}
function keyPressed()
{
if (keyCode === RIGHT_ARROW) dir = 1;
else if (keyCode === LEFT_ARROW) dir = -1;
}
function DrawShape()
{
circle(width / 2, height / 2, 2 * radius);
}
function IncrementBit()
{
++bitIndex;
if (bitIndex >= bitCount)
{
bitIndex = 0;
if (dir > 0) IncrementVisibility();
else if (dir < 0) DecrementVisibility();
}
}
function IncrementVisibility()
{
++visibilityIndex;
if (visibilityIndex < visibilityTable.length - 1) return;
visibilityIndex = visibilityTable.length - 1;
dir = 0;
}
function DecrementVisibility()
{
--visibilityIndex;
if (visibilityIndex > 0) return;
visibilityIndex = 0;
dir = 0;
}
function IsVisible()
{
return visibilityTable[visibilityIndex] & (1 << bitIndex);
}