squares and circles with skewed squares
Log in to post a comment.
Canvas.setpenopacity(1); const turtle = new Turtle(); turtle.penup(); // Adjustable variables const gridSize = 3; // min=1 max=10 step=1, Number of rows and columns const cellSize = 50; // min=10 max=200 step=10, Size of each cell in the grid const circleSteps = 10; // min=1 max=20 step=1, Number of concentric steps for circles const squareSteps = 18; // min=1 max=20 step=1, Number of concentric steps for squares const shapeType = 2; // min=0 max=2 step=1, (Circles, Squares, Both), Type of shapes to draw const randomness = 0.5; // min=0 max=1 step=0.01, Randomness factor for skewing const skewAmount = 2; // min=1 max=10 step=1, Amount of skew in pixels const circleStepSize = cellSize / (2 * circleSteps); // Size of each step for circles const squareStepSize = cellSize / (2 * squareSteps); // Size of each step for squares // Function to draw concentric circles function drawConcentricCircles(x, y, steps, stepSize) { for (let i = 0; i < steps; i++) { turtle.penup(); turtle.goto(x, y - stepSize * i); turtle.pendown(); turtle.circle(stepSize * i); } } // Function to draw concentric squares with skew function drawConcentricSquares(x, y, steps, stepSize, randomness, skewAmount) { for (let i = 0; i < steps; i++) { turtle.penup(); const skewX = (Math.random() * 2 - 1) * randomness * skewAmount; const skewY = (Math.random() * 2 - 1) * randomness * skewAmount; turtle.goto(x - stepSize * i + skewX, y - stepSize * i + skewY); turtle.pendown(); for (let j = 0; j < 4; j++) { turtle.forward(2 * stepSize * i); turtle.right(90); } } } // Function to draw concentric shapes based on selected type function drawConcentricShapes(x, y, circleSteps, circleStepSize, squareSteps, squareStepSize, shapeType, randomness, skewAmount) { if (shapeType === 0 || shapeType === 2) { drawConcentricCircles(x, y, circleSteps, circleStepSize); } if (shapeType === 1 || shapeType === 2) { drawConcentricSquares(x, y, squareSteps, squareStepSize, randomness, skewAmount); } } // Draw the grid for (let row = 0; row < gridSize; row++) { for (let col = 0; col < gridSize; col++) { const x = -gridSize * cellSize / 2 + col * cellSize + cellSize / 2; const y = gridSize * cellSize / 2 - row * cellSize - cellSize / 2; drawConcentricShapes(x, y, circleSteps, circleStepSize, squareSteps, squareStepSize, shapeType, randomness, skewAmount); } }