今天接触了一个新东西,感觉很酷炫的样子。
不是我写的,拿给大家看一看,喜欢的可以直接拿走不谢。
树的形状和树枝多少都是随机的,每刷新一次就有一次的惊喜哦,无聊的亲们可以多刷几次,当动画来看哦。
2017年又一天一天的走完了,2018都已经过去三十多天了。我每天都新建一个文件夹,这个文件夹里便是这一天的时光。可能在别人看来乏味而枯燥,但我竟然觉得这感觉相当不错。
临近年关,却没有要过年的感觉。估计是因为身在异乡,身边没有亲朋友人,便总是觉得冷清了一些。
所以就敲代码吧。
html 代码
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title></title>
</head>
<body>
 <canvas id="canvas"></canvas>
 <script>
 const canvas = document.getElementById('canvas')
 const ctx = canvas.getContext('2d')
 const W = canvas.width = 900
 const H = canvas.height = 700
canvas.style.border = '8px solid #000'
 // rp([1, 3]) ==> 1 | 2 | 3
 // rp([3, 1], true) ==> 1 - 3 之间随机的小数
 const rp = function (arr, uint){
 const min = Math.min(...arr)
 const max = Math.max(...arr)
 const ret = Math.random() * (max - min) min
 return uint ? ret : Math.round(ret)
 }
const maxBranch = 3
tree(ctx, W/2, H/2 200, 70, -Math.PI/2, 14, 20)
 function tree(ctx, startX, startY, branchLen, angle, depth, branchWidth) {
 const endX = startX branchLen * Math.cos(angle)
 const endY = startY branchLen * Math.sin(angle)
const color = (depth--) < maxBranch - 1 ? `rgb(0, ${rp([128, 196])}, 0)` : 'rgb(68, 50, 25)'
 ctx.save()
 ctx.lineCap = 'round'
 ctx.lineWidth = branchWidth
 ctx.strokeStyle = color
 ctx.beginPath()
 ctx.moveTo(startX, startY)
 ctx.lineTo(endX, endY)
 ctx.stroke()
 ctx.restore()
if (!depth) return
const subBranches = rp([1, maxBranch])
 for (let i=0; i<subBranches; i ) {
 setTimeout(
 tree, 
 0, 
 ctx, 
 endX, 
 endY,
 branchLen * rp([0.7, 1], true),
 angle rp([-Math.PI/5, Math.PI/5], true),
 depth,
 branchWidth * 0.72
 )
 }
 }
 </script>
</body>
</html>