forked from djmil/canva-tree
		
	initial commit
This commit is contained in:
		
						commit
						e2ca47f243
					
				
							
								
								
									
										33
									
								
								Tree.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								Tree.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					function stem(ctx, x1, y1, length, angle) {
 | 
				
			||||||
 | 
						// Визначити координати кіня стовбура знаючи почткову точку стовбура, його довжину та кут нахилу. Так, це тригонометрія в дії :)
 | 
				
			||||||
 | 
						var x2 = x1 + length * Math.sin(angle * (Math.PI /180));
 | 
				
			||||||
 | 
						var y2 = y1 - length * Math.cos(angle * (Math.PI /180));
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						ctx.beginPath();
 | 
				
			||||||
 | 
						ctx.moveTo(x1, y1);
 | 
				
			||||||
 | 
						ctx.lineTo(x2, y2);
 | 
				
			||||||
 | 
						ctx.lineWidth=length/10; // тощина стовбура залежить від його довжини
 | 
				
			||||||
 | 
						ctx.stroke();
 | 
				
			||||||
 | 
						ctx.closePath();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Закоментуй цей IF. Що змінилось в картинці дерева? Чому стало гірше?
 | 
				
			||||||
 | 
						if (length > 20) {
 | 
				
			||||||
 | 
							x2 = x1 + (length * 0.95) * Math.sin(angle * (Math.PI /180));
 | 
				
			||||||
 | 
							y2 = y1 - (length * 0.95) * Math.cos(angle * (Math.PI /180));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (length > 1) {
 | 
				
			||||||
 | 
							var rnd1 = Math.random() *20  -10;  // [-10.0 .. +10.0]
 | 
				
			||||||
 | 
							var rnd2 = Math.random() *0.2 +0.6; // [  0.6 ..   0.8]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Малюємо розгалудження стовбура. За початок нового стовбура використовується кінець поточного стовбура
 | 
				
			||||||
 | 
					      	stem(ctx, x2, y2, length * rnd2, angle + 35 +rnd1);
 | 
				
			||||||
 | 
					      	stem(ctx, x2, y2, length * rnd2, angle - 25 +rnd1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function tree(ctx, x, y, height) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						stem(ctx, x, y, height, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										39
									
								
								index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								index.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					    <meta charset="utf-8" />
 | 
				
			||||||
 | 
					    <title>Canvas</title>
 | 
				
			||||||
 | 
					<!--    <link rel="stylesheet" href="css/style.css"> -->
 | 
				
			||||||
 | 
						<style>
 | 
				
			||||||
 | 
							canvas {
 | 
				
			||||||
 | 
								background: #eee; 
 | 
				
			||||||
 | 
								display: block;
 | 
				
			||||||
 | 
								margin: 0 auto;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							p  { width: 800px; margin: 0 auto; }
 | 
				
			||||||
 | 
							ol { width: 800px; margin: 0 auto; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						</style>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<section>
 | 
				
			||||||
 | 
						<h1 align="center">Recursive tree</h1>
 | 
				
			||||||
 | 
						<p>Renew the page to see another tree</p>
 | 
				
			||||||
 | 
					</section>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<canvas id="tree" width="1000" height="750"></canvas>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script src="tree.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
						var canvas = document.getElementById("tree");
 | 
				
			||||||
 | 
					    ctx = canvas.getContext("2d");
 | 
				
			||||||
 | 
						tree(ctx, canvas.width/2,  canvas.height, 200);
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user