xxxxxxxxxx
const gridSize = 5;
const cellSize = 600 / gridSize;
function setup() {
createCanvas(600, 600);
noLoop(); // Only draw once since the content is static
}
function draw() {
background(255); // White background
noStroke();
fill(0); // Black fill for shapes
//Draw rectangles
rect(0 * cellSize, 4 * cellSize, cellSize, cellSize); // Rectangle at (0, 4)
rect(cellSize, cellSize, cellSize, cellSize); // Rectangle at (1, 1)
rect(cellSize, 2 * cellSize, cellSize, cellSize); // Rectangle at (1, 2)
rect(cellSize, 3 * cellSize, cellSize, cellSize); // Rectangle at (1, 3)
rect(2 * cellSize, 3 * cellSize, cellSize, cellSize); // Rectangle at (2, 3)
//Draw triangle
triangle(cellSize * 2, cellSize, cellSize * 2, cellSize * 2, cellSize * 3, cellSize); // Triangle at (2, 1)
// Draw ellipse
ellipse(4.5 * cellSize, 3.5 * cellSize, cellSize, cellSize); // Ellipse at (4, 3)
// Draw arcs (optimized for readability)
drawArc(3, 4, 0, 90); // Top-right corner at (3, 4)
drawArc(2, 0, 180, 270); // Bottom-left corner at (2, 0)
drawArc(0, 2, 180, 270); // Bottom-left corner at (0, 2)
drawArc(3, 3, 270, 0); // Top-left corner at (3, 3)
drawArc(2, 4, 90, 180); // Top-right corner at (2, 4)
drawArc(0, 3, 90, 180); // Top-right corner at (0, 3)
drawArc(1, 4, 0, 90); // Top-right corner at (1, 4)
fill(255); // White fill
ellipse(1.5 * cellSize, 2.5 * cellSize, cellSize, cellSize); // Erase center at (1, 2)
drawArc(1, 1, 0, 90); // Erase corner at (1, 1)
drawArc(0, 4, 0, 90); // Erase corner at (0, 4)
// Draw grid
stroke(200); // Light gray grid
for (let i = 1; i < gridSize; i++) {
line(i * cellSize, 0, i * cellSize, height); // Vertical lines
line(0, i * cellSize, width, i * cellSize); // Horizontal lines
}
}
// Helper function to draw arcs with coordinates
function drawArc(x, y, startAngle, endAngle) {
let arcX = x * cellSize;
let arcY = y * cellSize;
// Adjust arc position based on the angle range
if (startAngle >= 0 && startAngle < 90) {
} else if (startAngle >= 90 && startAngle < 180) {
arcX += cellSize;
} else if (startAngle >= 180 && startAngle < 270) {
arcX += cellSize;
arcY += cellSize;
} else if (startAngle >= 270 && startAngle < 360) {
arcY += cellSize;
}
arc(arcX, arcY, 2 * cellSize, 2 * cellSize, radians(startAngle), radians(endAngle));
}