`
128kj
  • 浏览: 600096 次
  • 来自: ...
社区版块
存档分类
最新评论

HTML5 Canvas 旋转的“金字塔”

阅读更多
效果图:


效果链接:http://www.108js.com/article/article3/zip4/31095/demo.html
代码:
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  <style>
    body{margin: 0;padding:0;}
    #cas{margin:100px auto;display: block;}
  </style>
  <title>Pyramid </title>
</head>
<body>
   <canvas id="cas" width="400" height="400">您的浏览器不支持canvas</canvas>
   <script>

var canvas = document.getElementById("cas");
var ctx = canvas.getContext("2d");
var fallLength =500 , centerX = canvas.width/2 , centerY = canvas.height/2;
Array.prototype.foreach = function(callback){
for(var i=0;i< this.length;i++){
callback.apply(this[i] , [i])
}
}
var Vector = function(x,y,z){
this.x = x;
this.y = y;
this.z = z;
this._get2d = function(){
var scale = fallLength/(fallLength+this.z);
var x = centerX + this.x*scale;
var y = centerY + this.y*scale;
return {x:x , y:y};
}
}
var Pyramid  = function(length){
this.length = length;
this.faces = [];
}
Pyramid .prototype = {
  _initVector:function(){
this.vectors = [];
this.vectors.push(new Vector(-this.length/2 ,0, -this.length/2 )); //0
this.vectors.push(new Vector(-this.length/2 ,0, this.length/2 )); //1
this.vectors.push(new Vector(this.length/2 , 0,-this.length/2)); //2
this.vectors.push(new Vector(this.length/2 , 0,this.length/2 )); //3
this.vectors.push(new Vector(0,-2*this.length,0)); //4
  },

  _draw:function(){
this.faces[0]=new Face(this.vectors[0],this.vectors[1],this.vectors[3],this.vectors[2],"#6c6");
this.faces[1]=new Face(this.vectors[0],this.vectors[1],this.vectors[4],this.vectors[4],"#6cc");
this.faces[2]=new Face(this.vectors[0],this.vectors[2],this.vectors[4],this.vectors[4],"#cc6");
this.faces[3]=new Face(this.vectors[2],this.vectors[3],this.vectors[4],this.vectors[4],"#c6c");
this.faces[4]=new Face(this.vectors[1],this.vectors[3],this.vectors[4],this.vectors[4],"#666");

this.faces.sort(function(a , b){
return b.zIndex - a.zIndex;
});
this.faces.foreach(function(){
this.draw();
   })
  }
}
var Face = function(vector1,vector2,vector3,vector4,color){
this.v1 = vector1;
this.v2 = vector2;
this.v3 = vector3;
this.v4 = vector4;
this.color = color;
this.zIndex = this.v1.z + this.v2.z + this.v3.z + this.v4.z;
this.draw = function(){
ctx.save();
ctx.beginPath();
ctx.moveTo(this.v1._get2d().x , this.v1._get2d().y);
ctx.lineTo(this.v2._get2d().x , this.v2._get2d().y);
ctx.lineTo(this.v3._get2d().x , this.v3._get2d().y);
ctx.lineTo(this.v4._get2d().x , this.v4._get2d().y);
ctx.closePath();
ctx.fillStyle = this.color;
ctx.fill();
            ctx.fillStyle = "#229";
}
}
var angleY = 0.05;
function rotateY(vectors){
  var cos = Math.cos(angleY);
  var sin = Math.sin(angleY);
      vectors.foreach(function(){
    var x1 = this.x * cos - this.z * sin;
    var z1 = this.z * cos + this.x * sin;
    this.x = x1;
    this.z = z1;
   })
     }
Pyramid  = new Pyramid (80);
Pyramid ._initVector();
function initAnimate(){
Pyramid ._draw();
animate();
}
function animate(){
ctx.clearRect(0,0,canvas.width,canvas.height)
rotateY(Pyramid .vectors);
Pyramid ._draw();
requestAnimationFrame(animate);
}
initAnimate();

</script>
</body>
</html>

欢迎访问:http://www.108js.com
  • 大小: 1.5 KB
1
2
分享到:
评论

相关推荐

    html5 canvas炫酷旋转银河系星空背景特效

    这个特效是利用Canvas API实现的“html5 canvas炫酷旋转银河系星空背景特效”,它为网站添加了一个动态且引人入胜的视觉元素。 首先,让我们深入了解一下HTML5 Canvas的基本概念。Canvas是一个基于矢量图形的画布,...

    html5 canvas页面滚动背景图片旋转动画特效

    HTML5 Canvas是Web开发中的一个强大工具,它允许...总的来说,HTML5 Canvas结合滚动事件和旋转动画,能够创建出富有创意的网页效果,提高用户的浏览体验。熟练掌握这些技术,对于提升网页设计和开发能力非常有帮助。

    使用HTML5 canvas 标签进行图片裁剪、旋转、缩放示例代码

    HTML5的canvas元素是网页开发中的一个强大工具,它提供了在浏览器端动态绘制图形的能力,包括图片处理。在这个示例中,我们将深入探讨如何利用canvas进行图片的裁剪、旋转和缩放操作。 首先,我们需要在HTML文件中...

    HTML5 Canvas 旋转的3D立方体动画.rar

    HTML5 Canvas 旋转的3D立方体动画,有纵深感的旋转立方体,渲染的很不错,旋转的动画效果流畅,十分不错,是研究HTML5 Canvas技术的好范例。经测试,IE11兼容,火狐或Chrome、Opera等都有完美表现。

    HTML5 Canvas模拟3D地球旋转动画特效

    在这个特定的案例中,“HTML5 Canvas模拟3D地球旋转动画特效”利用了Canvas的强大功能来创建一个逼真的3D地球模型,并在浏览器中实现动态旋转的效果。 首先,Canvas元素是HTML5新增的特性,它是一个矩形区域,通过...

    超炫酷HTML5 Canvas 3D旋转地球动画DEMO演示

    1、html5 2、地球旋转 3、canvas

    HTML5 Canvas旋转文本动画

    在本篇文章中,我们将深入探讨如何使用HTML5 Canvas实现文本的旋转动画。 首先,我们需要创建一个HTML文件并在其中引入Canvas元素。Canvas元素通过JavaScript来控制,所以我们需要在JavaScript中获取Canvas的2D渲染...

    html5 canvas绘制3D地球旋转动画特效

    在这个“html5 canvas绘制3D地球旋转动画特效”中,我们将深入探讨如何利用HTML5 Canvas API来创建一个逼真的3D地球模型,并实现其旋转的动画效果。 首先,我们需要理解Canvas的基本用法。Canvas是一个矩形区域,在...

    HTML5 canvas纸片3D旋转动画.zip

    "HTML5 canvas纸片3D旋转动画"是一个利用canvas实现的交互式3D效果,通常用于创建引人入胜的网页视觉体验。在本示例中,我们将会探讨如何使用HTML5的canvas API来创建3D旋转和卷曲噪音动画。 首先,要理解HTML5 ...

    html5 canvas文字标签云3D旋转动画特效.rar

    html5 canvas文字标签云3D旋转动画特效.rar html5 canvas文字标签云3D旋转动画特效.rar html5 canvas文字标签云3D旋转动画特效.rar html5 canvas文字标签云3D旋转动画特效.rar html5 canvas文字标签云3D旋转动画特效...

    HTML5 Canvas三维立体的旋转物体动画

    "HTML5 Canvas三维立体的旋转物体动画"这个主题涉及到的是利用Canvas API来实现三维空间中的物体旋转效果,这在游戏、数据可视化、用户界面设计等领域有广泛应用。 Canvas API提供了基础的绘图命令,如画线、填充...

    html5 canvas实现旋转的心

    "html5 canvas实现旋转的心"这个主题,显然是关于如何使用Canvas API来绘制并动态旋转一个心形图案。这篇博客文章(博文链接:https://wjlgryx.iteye.com/blog/972463)可能会详细讲解这个过程。 首先,我们需要...

    HTML5 Canvas 旋转的心形文字动画.rar

    在这个“HTML5 Canvas 旋转的心形文字动画”项目中,开发者利用Canvas API来构建了一个3D风格的心形图案,这个图案由文字组成,并且能够进行360度旋转,非常适合用来制作浪漫的表白网页。 首先,我们要理解Canvas的...

    HTML5 Canvas核心技术源码技术代码

    HTML5 Canvas核心技术源码技术代码、图形、动画与游戏开发。 Canvas开发、入门学习Canvas技术代码。 HTML5 Canvas核心技术源码技术代码、图形、动画与游戏开发。 Canvas开发、入门学习Canvas技术代码。 HTML5 Canvas...

    HTML5 Canvas实现3D旋转物体动画及模糊发光特效源码

    在这个项目中,我们看到HTML5 Canvas被用来创建一个3D旋转物体的动画,同时结合CSS3的技术,实现了物体的模糊发光特效。 首先,让我们深入了解一下HTML5 Canvas的基本概念。Canvas是一个基于矢量图形的画布,通过...

    html5 canvas飘洒的星星特效

    html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的...

    html5 canvas 三维旋转的水晶球特效.rar

    html5 canvas 三维旋转的水晶球特效,除了使用CSS3技术外,还引用了一个regl.min.js特效库,类似jquery的插件库。其实这个球看上去更像是一个光棱球,能看到反射出的光线,另外背景的渲染也很到位,使整体的三维效果...

    HTML 5 Canvas基础教程 源码+PDF

    《HTML 5 Canvas基础教程》从HTML5和JavaScript(以及jQuery)的基础知识讲起,全面介绍了HTML5Canvas的各种特性,包括渲染上下文、坐标系统、绘制图形、保存和恢复画布状态,以及变形、合成、处理图像和视频等,让...

    简单HTML5 Canvas Arrow旋转动画

    本篇文章将深入探讨如何使用HTML5 Canvas实现一个简单的箭头旋转动画。 首先,我们需要在HTML文件中创建一个`&lt;canvas&gt;`元素,这是Canvas的基本画布。例如: ```html &lt;!DOCTYPE html&gt; &lt;html lang="zh"&gt; &lt;title&gt;...

    canvas 原位置旋转图片

    在HTML5中,Canvas是一个非常强大的绘图工具,允许开发者在网页上绘制图形、图片以及进行复杂的动画操作。本文将详细讲解如何在Canvas上实现原位置旋转图片,并通过`translate`和`rotate`两个关键方法来理解这一过程...

Global site tag (gtag.js) - Google Analytics