
Среда программирования:
JavaScript
Статья по теме:
Код программы:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Треугольник Серпинского</title> </head> <body> <canvas id="canvas" width="500" height="500"></canvas> <script> var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var p0 = { //координаты вершин начального треугольника x: 0, y: 500 }, p1 = { x: 250, y: 0 }, p2 = { x: 500, y: 500 }; function drawTriangle (p0, p1, p2) { //функция для отрисовки треугольника ctx.beginPath(); ctx.moveTo(p0.x, p0.y); ctx.lineTo(p1.x, p1.y); ctx.lineTo(p2.x, p2.y); ctx.lineTo(p0.x, p0.y); ctx.stroke(); } function drawFract (p0, p1, p2, limit){ //лимит - до какого момента будет выполняться рекурсия if( limit > 0 ){ var pA = { // середины каждой пары вершин x: (p0.x + p1.x) / 2, y: (p0.y + p1.y) / 2 }, pB = { x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 }, pC = { x: (p2.x + p0.x) / 2, y: (p2.y + p2.y) / 2 }; drawFract(p0, pA, pC, limit-1); //рекурсивный вызов функции drawFract(pA, p1, pB, limit-1); drawFract(pC, pB, p2, limit-1); } else { drawTriangle(p0,p1,p2); } } drawFract(p0, p1, p2, 6) </script> </body> </html>
Прикрепленный файл | Размер |
---|---|
shevchuk_fract.rar | 854 байта |