var elem = document.getElementById('canvas');
var context = elem.getContext('2d');
context.fillStyle = '#000';
context.lineWidth = 1;
var depth = 9;
function drawLine(x1, y1, x2, y2, brightness){
context.moveTo(x1, y1);
context.lineTo(x2, y2);
}
function drawTree(x1, y1, angle, depth){
if (depth !== 0){
\t var thisAngle = angle*(Math.random()-0.5)
var x2 = x1 + (Math.cos(thisAngle) * depth * 10.0);
var y2 = y1 + (Math.sin(thisAngle) * depth * 10.0);
drawLine(x1, y1, x2, y2, depth);
drawTree(x2, y2, angle - 0.34906585, depth - 1);
drawTree(x2, y2, angle + 0.34906585, depth - 1);
}
}
context.beginPath();
drawTree(300, 500, -1.57, depth);
context.closePath();
context.stroke();
<html>
<body>
<canvas id="canvas" width="1000" height="700"></canvas>
</body>
</html>
Tôi có một chức năng vẽ hình một cây fractal trong một canvas:
function drawTree(x1, y1, angle, depth){
if (depth !== 0){
var x2 = x1 + (Math.cos(angle) * depth * 10.0);
var y2 = y1 + (Math.sin(angle) * depth * 10.0);
drawLine(x1, y1, x2, y2, depth);
drawTree(x2, y2, angle - 0.34906585, depth - 1);
drawTree(x2, y2, angle + 0.34906585, depth - 1);
}
}
Tôi đang cố gắng để ngẫu nhiên hoá fractal một chút để làm cho nó trông hữu cơ hơn . Tôi cố gắng này:
function drawTree(x1, y1, angle, depth){
if (depth !== 0){
var thisAngle = angle*(Math.random()-0.5)
var x2 = x1 + (Math.cos(thisAngle) * depth * 10.0);
var y2 = y1 + (Math.sin(thisAngle) * depth * 10.0);
drawLine(x1, y1, x2, y2, depth);
drawTree(x2, y2, angle - 0.34906585, depth - 1);
drawTree(x2, y2, angle + 0.34906585, depth - 1);
}
}
Đối với một số lý do này dường như được thiên vị torwards giá trị 0. Cây nghiêng torwards bên phải. Tôi không hiểu tại sao.
bạn có thể cung cấp fiddle/codepen không? – Pixelomo
Ở đây bạn đi !!!!! – Himmators
Sự khác biệt quá lớn: p như khoai tây và chip –