zoukankan      html  css  js  c++  java
  • 毕达哥拉斯树实现代码

    毕达哥拉斯树实现代码(带颜色单击变化)递归加勾股实现(canvas作图)

    <!DOCTYPE html>
    <html lang="en" style="height: 99%">
    <head>
        <meta charset="UTF-8">
        <title>ТаЉ</title>
        <style>
    		body,
    		html {
    			position: absolute;
    			margin: 0;
    			padding: 0;
    			 100%;
    			height: 100%;
    			overflow: hidden;
    			background: #fff;
    			user-select: none;
    		}
    		canvas {
    			position: absolute;
    			 100%;
    			height: 100%;
    			user-select: none;
    			touch-action: none;
    			content-zooming: none;
    			background: hsla(60, 100%, 97%, 1);
    			cursor: pointer;
    		}
        </style>
    </head>
    <body style="height: 100%">
    	<canvas></canvas>
    </body>
    <script>
    	"use strict";
    	const canvas = document.querySelector("canvas");
    	const ctx = canvas.getContext("2d");
    	const branch = (size, angle) => {
    		//size < 10 ? ctx.strokeRect(0, 0, size, size) : ctx.fillRect(0, 0, size, size);
    		size < 5 ? ctx.fillStyle = "#208527" : ctx.fillStyle = "#6d4929";
    		ctx.fillRect(0, 0, size, size);
    		if (size < 1) return;
    		const v1 = size * Math.cos(angle * Math.PI / 180);
    		ctx.save();
    		ctx.translate(size, 0);
    		ctx.rotate(angle * Math.PI / 180);
    		ctx.translate(-v1, -v1);
    		branch(v1, 15 + Math.random() * 60);
    		ctx.restore();
    		const v2 = size * Math.sin(angle * Math.PI / 180);
    		ctx.save();
    		ctx.rotate((angle - 90) * Math.PI / 180);
    		ctx.translate(0, -v2);
    		branch(v2, 15 + Math.random() * 60);
    		ctx.restore();
    	};
    	const tree = () => {
    		const width = canvas.width = canvas.offsetWidth;
    		const height = canvas.height = canvas.offsetHeight;
    		ctx.clearRect(0, 0, width, height);
    		ctx.globalCompositeOperation = "xor";
    		const size = Math.min(width, height) / 7;
    		ctx.save();
    		ctx.translate(0.5 * width - size * 0.5, height - size);
    		branch(size, 15 + Math.random() * 60);
    		ctx.restore();
    	};
    	window.addEventListener("resize", tree, false);
    	["resize", "click", "touchdown"].forEach(event => {
    		document.addEventListener(event, tree, false);
    	});
    	tree();
    </script>
    </html>
    

      

  • 相关阅读:
    C++对象数组与对象指针
    C++析构函数
    centos7下安装mysql
    Java杂知识汇总(自己积累的)
    利用json模块解析dict报错找不到attribute 'dumps'[python2.7]
    Linux删除除了今天以外的文件
    docker简单介绍(资料收集总结)
    python不可以打印.doc文件
    python安装模块的时候报错error: command 'gcc' failed with exit status 1
    yum和head一起用,报错“由于管道被破坏而退出”
  • 原文地址:https://www.cnblogs.com/zhaozhou/p/9894511.html
Copyright © 2011-2022 走看看