Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   T-фрактал на JS в canvas (https://javascript.ru/forum/misc/70875-t-fraktal-na-js-v-canvas.html)

NewOne135 09.10.2017 10:49

T-фрактал на JS в canvas
 
Доброго дня. Дали на паре задание нарисовать T-фрактал в canvas JS. И у меня возникла проблема, ибо JS никогда прежде не изучала, а преподавательница мягко говоря не соизволила ничего объяснить. Нашла исходник, подогнала, но на мониторе сугубо черный экран. Подскажите в чем проблема и как исправить?

var canva = document.getElementById('canvas');
canva.width = window.innerWidth;
canva.height = window.innerHeight;
var ctx = canva.getContext('2d');



function clear() {
ctx.clearRect(0, 0, canva.width, canva.height);
ctx.fillStyle = 'rgba(0,0,0,1)';
ctx.fillRect(0, 0, canva.width, canva.height);
}

function PrintFigure(x, y, size, style) {
var sizeElem = Math.floor(size / N);
for (var i = 0; i < N; i++)
for (var k = 0; k < N; k++)
if (figure[i][k] == 1) {
ctx.fillStyle = style;
ctx.fillRect(x + i * sizeElem, y + k * sizeElem, sizeElem, sizeElem);
}
}

function CreateTFractal() {
var MAX_X = canva.width,
MAX_Y = canva.height;

clear();
var size = N;
var countByX = Math.floor(MAX_X / size),
countByY = Math.floor(MAX_Y / size);

while ((countByX > 0) && (countByY > 0)) { // пока рисунок помещается в область
for (var i = 0; i <= countByX; i++) {
for (var k = 0; k <= countByY; k++) {
PrintFigure(i * size, k * size, size, 'rgba(255, 255, 255, 0.3)');
} // k
} // i

size *= 2; // новый размер для следующей итерации
countByX = Math.floor(MAX_X / size),
countByY = Math.floor(MAX_Y / size);
}
}


<html lang="en">
<head>
<meta charset="utf-8">
<title>Draw (canvas version)</title>
</head>

<body onload="CreateTFractal()">
<canvas id="canvas"></canvas>
Please use a browser that supports "canvas"
<script src="new1.js"></script>
</body>
</html>

рони 09.10.2017 10:52

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Dilettante_Pro 09.10.2017 16:41

NewOne135,
В вашем скрипте используются переменная N и массив figure[i][k], которые нигде не определяются


Часовой пояс GMT +3, время: 01:34.