HTML5画布树分形
2014-01-18 20:11
459 查看
说明:刷新页面来查看不同的随机树
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="578" height="500"></canvas>
<script>
function drawBranches(startX, startY, trunkWidth, level) {
canvas = document.getElementById('myCanvas');
context = canvas.getContext('2d');
if(level < 12) {
var changeX = 100 / (level + 1);
var changeY = 200 / (level + 1);
var topRightX = startX + Math.random() * changeX;
var topRightY = startY - Math.random() * changeY;
var topLeftX = startX - Math.random() * changeX;
var topLeftY = startY - Math.random() * changeY;
// draw right branch
context.beginPath();
context.moveTo(startX + trunkWidth / 4, startY);
context.quadraticCurveTo(startX + trunkWidth / 4, startY - trunkWidth, topRightX, topRightY);
context.lineWidth = trunkWidth;
context.lineCap = 'round';
context.stroke();
// draw left branch
context.beginPath();
context.moveTo(startX - trunkWidth / 4, startY);
context.quadraticCurveTo(startX - trunkWidth / 4, startY - trunkWidth, topLeftX, topLeftY);
context.lineWidth = trunkWidth;
context.lineCap = 'round';
context.stroke();
drawBranches(topRightX, topRightY, trunkWidth * 0.7, level + 1);
drawBranches(topLeftX, topLeftY, trunkWidth * 0.7, level + 1);
}
}
canvas = document.getElementById('myCanvas');
context = canvas.getContext('2d');
drawBranches(canvas.width / 2, canvas.height, 50, 0);
</script>
</body>
</html>
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="578" height="500"></canvas>
<script>
function drawBranches(startX, startY, trunkWidth, level) {
canvas = document.getElementById('myCanvas');
context = canvas.getContext('2d');
if(level < 12) {
var changeX = 100 / (level + 1);
var changeY = 200 / (level + 1);
var topRightX = startX + Math.random() * changeX;
var topRightY = startY - Math.random() * changeY;
var topLeftX = startX - Math.random() * changeX;
var topLeftY = startY - Math.random() * changeY;
// draw right branch
context.beginPath();
context.moveTo(startX + trunkWidth / 4, startY);
context.quadraticCurveTo(startX + trunkWidth / 4, startY - trunkWidth, topRightX, topRightY);
context.lineWidth = trunkWidth;
context.lineCap = 'round';
context.stroke();
// draw left branch
context.beginPath();
context.moveTo(startX - trunkWidth / 4, startY);
context.quadraticCurveTo(startX - trunkWidth / 4, startY - trunkWidth, topLeftX, topLeftY);
context.lineWidth = trunkWidth;
context.lineCap = 'round';
context.stroke();
drawBranches(topRightX, topRightY, trunkWidth * 0.7, level + 1);
drawBranches(topLeftX, topLeftY, trunkWidth * 0.7, level + 1);
}
}
canvas = document.getElementById('myCanvas');
context = canvas.getContext('2d');
drawBranches(canvas.width / 2, canvas.height, 50, 0);
</script>
</body>
</html>
相关文章推荐
- HTML5画布转化图像颜色教程
- Html5新标签注解
- 黄聪:WordPress实现HTML5预加载
- HTML5演示碰撞及基本弹幕的实现
- HTML5画布模式教程
- HTML5画布像素图像的焦点
- Web 开发中应用 HTML5 技术的10个实例教程
- 谷歌图形化HTML5网页编辑器Google Web Designer
- HTML5画布旋转平面
- HTML5画布镜像变换教程
- HTML5 LocalStorage 本地存储
- [Mugeda HTML5技术教程之9]使用元件
- HTML5 canvas画图并保存成图片的jcanvas插件
- [Mugeda HTML5技术教程之9]使用元件
- 小强的HTML5移动开发之路(33)—— jqMobi基础
- 小强的HTML5移动开发之路(33)—— jqMobi基础
- chrome浏览器使用HTML5预览图片
- HTML5表单及其验证
- HTML5 跨文档消息传输
- html5和c++开源 K线图工具