victor实现六边形窝峰激光线条运动动画效果代码
代码语言:html
所属分类:动画
代码描述:victor实现六边形窝峰激光线条运动动画效果代码
代码标签: victor 六边形 窝峰 激光 线条 运动 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/normalize.css">
<style>
html, body {
overflow: hidden;
}
canvas {
background: radial-gradient(#2A2A2A, #111);
}
</style>
</head>
<body>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/victor.1.1.0.js"></script>
<script >
/**
* JS for Hexocet
*
* @author Alexandre Andrieux
* @since 2017-01-05
*/
var Hexocet = {
seeds: [],
stepCount: 0,
birthPeriod: 1,
hexSize: 25,
targetBounceChance: 0.15,
springStiffness: 0.1,
viscosity: 0.7,
particleOpacity: 0.8,
fade: true,
fadeLayerOpacity: 0.15
};
Hexocet.setupCanvas = function() {
// Initialize own canvas
var canvas = document.createElement('canvas');
canvas.id = 'hexocet';
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
document.body.appendChild(canvas);
// Get and store canvas context
this.canvas = document.getElementById(canvas.id);
this.ctx = this.canvas.getContext('2d');
// Scale parameter
this.canvasBase = Math.min(this.canvas.width, this.canvas.height);
// Central point coordinates
this.xC = this.canvas.width / 2;
this.yC = this.canvas.height / 2;
};
Hexocet.hexCoordsToXY = function(Hx, Hy) {
// Hx and Hy are integers corresponding to vertices coordinates in Hex space
var xPrime, yPrime, XYprime, X, Y, XY;
var isSumEven = ( (parseInt(Hx) + parseInt(Hy)) % 2 == 0 ? 1 : 0);
xPrime = 1 * Hx;
yPrime = 1 /Math.sqrt(3) * (3*Hy + 1 + isSumEven);
XYprime = new Victor(xPrime * this.hexSize, yPrime * this.hexSize);
XY = XYprime.clone().rotateDeg(30);
return { x: XY.x, y: XY.y };
};
Hexocet.XYtoHexCoords = function(x, y) {
// Approximate
var XYprime = new Victor(x / this.hexSize, y / this.hexSize).rotateDeg(-30);
var Hx = XYprime.x,
Hy = Math.sqrt(3) * XYprime.y/3;
return { Hx: Math.floor(Hx), Hy: Math.floor(Hy) };
};
Hexocet.update = function() {
this.stepCount++;
// Birthrate management
if (this.stepCount % this.birthPeriod == 0 && this.stepCount < 60000) {
this.birth();
}
this.move();
this.draw();
};
Hexocet.birth = function(xBirth, yBirth, seed) {
// Give.........完整代码请登录后点击上方下载按钮下载查看
网友评论0