canvas实现三维空间点线旋转动画效果代码
代码语言:html
所属分类:动画
代码描述:canvas实现三维空间点线旋转动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
body {
margin: 0;
overflow: hidden;
background: #111;
}
canvas {
display: block;
filter: brightness(1.1) contrast(1.1);
}
</style>
</head>
<body translate="no">
<canvas id="canvas"></canvas>
<script>
// Enhanced Point Class
function Point(pos) {
this.x = pos.x - canvas.width / 2 || 0;
this.y = pos.y - canvas.height / 2 || 0;
this.z = pos.z || 0;
this.cX = 0;
this.cY = 0;
this.cZ = 0;
this.xPos = 0;
this.yPos = 0;
this.map2D();
}
Point.prototype.rotateX = function (angleX) {
var cosX = Math.cos(angleX),
sinX = Math.sin(angleX),
y1 = this.y * cosX - this.z * sinX,
z1 = this.z * cosX + this.y * sinX;
this.y = y1;
this.z = z1;
};
Point.prototype.rotateY = function (angleY) {
var cosY = Math.cos(angleY),
sinY = Math.sin(angleY),
x1 = this.x * cosY - this.z * sinY,
z1 = this.z * cosY + this.x * sinY;
this.x = x1;
this.z = z1;
};
Point.prototype.map2D = function () {
var scale = focal / (focal + this.z + this.cZ);
this.xPos = vpx + (this.cX + this.x) * scale;
this.yPos = vpy + (this.cY + this.y) * scale;
};
function Line(points, color) {
this.points = points || [];
this.dist = 0;
this.visiblePoints = 0;
this.growthRate = 0.03 + Math.random() * 0.05;
th.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0