Среда программирования:
JavaScript
Статья по теме:
Код программы:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Вложенные квадраты</title> </head> <body> <canvas id="canvas" width="1200" height="1800"></canvas> <script> var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var size = 350; //размер квадратов var angle = 0; //угол поворота квадрата function drawSquare (p0, p1, p2, p3) { //функция для отрисовки квадрата ctx.beginPath(); ctx.moveTo(p0.x, p0.y); ctx.lineTo(p1.x, p1.y); ctx.lineTo(p2.x, p2.y); ctx.lineTo(p3.x, p3.y); ctx.lineTo(p0.x, p0.y); ctx.stroke(); } function drawPyramid (){ //функция для отрисовки вложенных квадратов var pA = { //координаты вершин квадрата x: (250 + size * Math.cos(Math.PI / 4)), y: (250 + size * Math.sin(Math.PI / 4)), }, pB = { x: (250 + size * Math.cos(3 * Math.PI / 4)), y: (250 + size * Math.sin(3 * Math.PI / 4)) }, pC = { x: (250 + size * Math.cos(5 * Math.PI / 4)), y: (250 + size * Math.sin(5 * Math.PI / 4)) }, pD = { x: (250 + size * Math.cos(7 * Math.PI / 4)), y: (250 + size * Math.sin(7 * Math.PI / 4)) } drawSquare(pA, pB, pC, pD); } function drawSpiralSquare (){ ////функция для отрисовки вложенных спиральных квадратов var pA = { x: (800 + size * Math.cos(angle + Math.PI / 4)), y: (250 + size * Math.sin(angle + Math.PI / 4)), }, pB = { x: (800 + size * Math.cos(angle + 3 * Math.PI / 4)), y: (250 + size * Math.sin(angle + 3 * Math.PI / 4)) }, pC = { x: (800 + size * Math.cos(angle + 5 * Math.PI / 4)), y: (250 + size * Math.sin(angle + 5 * Math.PI / 4)) }, pD = { x: (800 + size * Math.cos(angle + 7 * Math.PI / 4)), y: (250 + size * Math.sin(angle + 7 * Math.PI / 4)) } drawSquare(pA, pB, pC, pD); } for (let i = 0; i < 30; i++) { //цикл для построения вложенных квадратов и вложенных спиральных квадратов drawPyramid(); drawSpiralSquare(); size = size * Math.sin(Math.PI / 3); //с каждым шагом цикла меняется размер квадратов angle = angle + Math.PI / 19; //изменяется угол поворота квадрата } </script> </body> </html>
Прикрепленный файл | Размер |
---|---|
shevchuk_spyral.rar | 926 байтов |