Pretty Fractal Trees using HTML-5 Canvas & Random Numbers

Last week I sat down to see how I can generate a fractal tree on a web page. It turned out to be a very interesting exercise using HTML5 Canvas and simple Math trigonometric functions. Using random numbers for changing the length of the tree branch, and the angle of branch split -- I was quite successful in generating very realistic looking trees!

Each time you render the HTML, the trees look quite different. I can see how Game creators can create interesting looking forests for "heroes" to travel in using such techniques.

HTML 5 Canvas with a Fractal Tree





















Here is the code (also posted on github):

<html>
<head>
<script type="text/javascript">
window.onload = draw;
function draw(){
var canvas = document.getElementById('myCanvas');
if (canvas.getContext){
var context = canvas.getContext('2d');
drawFractalTree(context);
}
else{
alert("HTML5 Canvas isn't supported by your browser!");
}
}
function drawFractalTree(context){
drawTree(context, 800, 800, -90, 11);
}
function drawTree(context, x1, y1, angle, depth){
var BRANCH_LENGTH = random(0, 20);
if (depth != 0){
var x2 = x1 + (cos(angle) * depth * BRANCH_LENGTH);
var y2 = y1 + (sin(angle) * depth * BRANCH_LENGTH);
drawLine(context, x1, y1, x2, y2, depth);
drawTree(context, x2, y2, angle - random(15,20), depth - 1);
drawTree(context, x2, y2, angle + random(15,20), depth - 1);
}
}
function drawLine(context, x1, y1, x2, y2, thickness){
context.fillStyle = '#000';
if(thickness > 6)
context.strokeStyle = 'rgb(139,126, 102)'; //Brown
else
context.strokeStyle = 'rgb(34,139,34)'; //Green
context.lineWidth = thickness * 1.5;
context.beginPath();
context.moveTo(x1,y1);
context.lineTo(x2, y2);
context.closePath();
context.stroke();
}
function cos (angle) {
return Math.cos(deg_to_rad(angle));
}
function sin (angle) {
return Math.sin(deg_to_rad(angle));
}
function deg_to_rad(angle){
return angle*(Math.PI/180.0);
}
function random(min, max){
return min + Math.floor(Math.random()*(max+1-min));
}
</script>
<style type="text/css">
canvas { border: 1px solid white; }
</style>
</head>
<body>
<canvas id="myCanvas" width="1500" height="800"></canvas>
</body>
</html>
view raw tree_html5.html hosted with ❤ by GitHub


Thanks for reading my news about Pretty Fractal Trees using HTML-5 Canvas & Random Numbers at my blog Tic Droid if you want too share this article, please put the resource, and if you think this article is very usefully dont forget to bookmark this site with CTRL + D on your keyboard to web browser.

New and Hot Article's :

  • Custom Rom Mokee Lollipop for Lenovo A7000
  • [Custom ROM] [MTK6753] MIUI 8.2 v7.1.5 Marshmallow For Lenovo K4 Note A7010a48
  • How to Charge iPhone 7 and any other iPhone device wirelessly
  • How to ROOT Almost ALL Android Phones
  • Cara Root dan Pasang TWRP di Xiaomi Redmi 3s | Prime
  • Galaxy S7 and S7 Edge Android 7.1.1 Nougat update rolling out on January of 2017
  • Make your Internet Browsing Speed more faster than ever before with the recommended apps
  • Spesifikasi Andromax B (A26C4H) 4G LTE Dengan Fitur VOWIFI
  • [ROM] MIUI V7 For Cherry Mobile Flare S3 Octa
  • How to Increase Wi-Fi Connection Time
  • More Articles :