js实现canvas L-system植物生长绘制效果代码
代码语言:html
所属分类:其他
代码描述:js实现canvas L-system植物生长绘制效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
</head>
<body>
<div class="center">
<article>
<div class="social">
</div>
<h1 class="title">L-System</h1>
<div class="content"><div>
<p>Experimenting with Linden Meyer Systems.</p>
<style>
.post {
max-width: none;
width: 800px;
padding: 0;
}
</style>
<p><canvas id="canvas"></canvas></p>
<script>
// canvas setup
var d=document,
canvas = document.getElementById("canvas"),
c=canvas,
W=800,H=700;
c.width = W,
c.height = H,
c = c.getContext("2d");
// Math function aliases
var cos = Math.cos,
sin = Math.sin,
abs = Math.abs,
sqrt = Math.sqrt,
sgn = function(val) { return val >= 0 ? 1 : -1 },
atan2= Math.atan2,
rand = Math.random,
TAU = 2*Math.PI;
// logging
dolog = true;
function logCreate(mod){
var i = 0;
return function(){
if( !dolog ) return;
if( i % mod == 0 )
console.log(arguments);
i = (i + 1) % mod;
}
}
log = logCreate(1);
logS = logCreate(60);
// Mouse
$M = {
loc : V2(W/2, H/2),
dloc : V2(0,0),
uloc : V2(0,0),
down : false,
action : 0,
pressed : false
};
function V2(x,y){
return {x : x || 0.0, y:y || 0.0};
}
V2c = function( v ){
return { x : v.x, y : v.y };
}
V2add = function( a, b, r ){
r.x = a.x + b.x;
r.y = a.y + b.y;
}
V2sub = function( a, b, r ){
r.x = a.x - b.x;
r.y = a.y - b.y;
}
V2scale = function( a, s, r ){
c.x = a.x * s;
c.y = a.y * s;
}
V2dot = function( a, b, r ){
r.x = a.x * b.x;
r.y = a.y * b.y;
}
V2rot = function( a, angle, r ){
r.x = a.x * cos( angle ) - a.y * sin( angle );
r.y = a.y * sin( angle ) + a.y * cos( angle );
}
RotM2 = function( angle ){
return {
x11 : cos( angle ), x12 : -sin( angle ),
x21 : sin( angle ), x22 : cos( angle )
};
}
M2xV2 = function( m, v, r ){
r.x = v.x * m.x11 + v.y * m.x12;
r.y = v.x * m.x21 + v.y * m.x22;
}
MAX = 1000000;
leaf = {
axiom : "X",
rules : {
"F" : "FF",
"X" : "F-[[X]+X]+F[+FX]-X"
}
}
raceme = {
axiom : "X",
rules : {
"F" : "FF",
"X" : "F-[[F]+F]+F-FX"
},
commands : {
.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0