canvas草木树木生长动画效果代码
代码语言:html
所属分类:动画
代码描述:canvas草木树木生长动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
body { background: #111111;}#canvas_container_div { position: absolute; top: 30%; left: 50%; transform: translate(-50%,-50%);}#canvas { width: 100%; height: 100%;/* border: solid 3px #000000; */ background: #111111;}
</style>
</head>
<body>
<div id="canvas_container_div"><canvas id="canvas" width="1000" height="1000"></canvas>
</div>
<script>
///////////////////////////////////////////////////////
//////// Plant Life Game Growth Prototype //// ///////////////////////////////////////////////////////
///////////////////// VERLET.JS ////////////////////////////
////---INITIATION---////
///canvas (*canvas width & height must be equal to retain aspect ratio)
var canvasContainerDiv = document.getElementById("canvas_container_div");
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var canvRatio = 1;//0.8; // canvas ratio, as canvas size to lowest of window width or height
///trackers
var points = [], pointCount = 0;
var spans = [], spanCount = 0;
var skins = [], skinCount = 0;
var worldTime = 0; // time as frame count
///settings
var gravity = 0.01; // (rate of y-velocity increase per frame per point mass of 1)
var rigidity = 10; // global span rigidity (as iterations of position accuracy refinement)
var friction = 0.999; // (proportion of previous velocity after frame refresh)
var bounceLoss = 0.9; // (proportion of previous velocity after bouncing)
var skidLoss = 0.8; // (proportion of previous velocity if touching the ground)
var viewPoints = false; // (point visibility)
var viewSpans = false; // (span visibility)
var viewScaffolding = false; // (scaffolding visibility)
var viewSkins = true; // (skin visibility)
var breeze = 0.4; // breeziness level (applied as brief left & right gusts)
////---OBJECTS---////
///point constructor
function Point(current_x, current_y, materiality="material") { // materiality can be "material" or "immaterial"
this.cx = current_x;
this.cy = current_y;
this.px = this.cx; // previous x value
this.py = this.cy; // previous y value
this.mass = 1; // (as ratio of gravity)
this.materiality = materiality;
this.fixed = false;
this.id = pointCount;
pointCount += 1;
}
///span constructor
function Span(point_1, point_2, visibility="visible") { // visibility can be "visible" or "hidden"
this.p1 = point_1;
this.p2 = point_2;
this.l = distance(this.p1,this.p2); // length
this.strength = 1; // (as ratio of rigidity)
this.visibility = visibility;
this.id = spanCount;
spanCount += 1;
}
///skins constructor
function Skin(points_array,color) {
this.points = points_array; // an array of points for skin outline path.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0