• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 利用HTML5绘制点线面组成的3D图形的示例

利用HTML5绘制点线面组成的3D图形的示例

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-08-06

本文主要包含HTML5等相关知识,佚名 希望在学习及工作中可以帮助到您

玩Canvas玩了有两三个礼拜了,平面的东西玩来玩去也就那样,所以就开始折腾3D了。

  因为Canvas画布终究还是平面的,所以要有3D就得抽象出一个Z轴。然后再把3D坐标转换成2D坐标,画到画布上,再通过旋转等变换效果来产生3D感。做3D一般就是由点到线,然后由线到面。

  【点】

  点的话,之前我有写过关于3D的博文 解析3D标签云,其实很简单 ,这篇博文虽然讲的是用div实现的3D标签云,但是追根到底产生的3D原理是一样的,就是最简单的由点构成的3D了。每一个标签就是一个点。也可以直接看这个DEMO:
2015512164236104.png (344×329)

3DBall
里面的总共有五百个点对象,每个点对象相应的根据他们的Z轴来改变他们的大小和透明度,再平均分布在球面上,就构成了点球体了。

  【线】

  如果知道怎么做点之后,线也就容易了,只要把点连起来就行了。这个没做DEMO,不过也确实不难。就循环moveTo,然后lineTo,线就出来了。

  【面】

  这篇博文主要讲面滴。
二话不说,先上个DEMO吧 :
2015512164305697.png (170×168)

3D立方体

做一个立方体,我用了三个对象:点对象,面对象,以及立方体本身一个对象:

  下面这个是点对象,x,y,z是点的三维坐标,_get2d方法是把三维坐标转换到二维层面来。fallLength是焦距。

  1. var Vector = function(x,y,z){   
  2.             this.x = x;   
  3.             this.y = y;   
  4.             this.z = z;   
  5.             this._get2d = function(){   
  6.                 var scale = fallLength/(fallLength+this.z);   
  7.                 var x = centerX + this.x*scale;   
  8.                 var y = centerY + this.y*scale;   
  9.                 return {x:x , y:y};   
  10.             }   
  11.         }  


  然后是面对象:

  面对象的属性页很容易理解,一个面就是一个正方形 , v1v2v3v4是面的四个顶点,zIndex这个属性很重要,是代表这个面的层级,是在最外面还是在里面,这个必须要有,这样当用canvas画的时候才能让这个面画在最前面,才不会被其他的面遮盖。zIndex的值也很容易理解,就是顶点z轴坐标的平均值,其实也就是中心点的z轴坐标。颜色就是这个面的颜色啦。

  1. var Face = function(vector1,vector2,vector3,vector4,color){   
  2.             this.v1 = vector1;   
  3.             this.v2 = vector2;   
  4.             this.v3 = vector3;   
  5.             this.v4 = vector4;   
  6.             this.color = color;   
  7.             this.zIndex = (this.v1.z + this.v2.z + this.v3.z + this.v4.z)/4;   
  8.             this.draw = function(){   
  9.                 ctx.save();   
  10.                 ctx.beginPath();   
  11.                 ctx.moveTo(this.v1._get2d().x , this.v1._get2d().y);   
  12.                 ctx.lineTo(this.v2._get2d().x , this.v2._get2d().y);   
  13.                 ctx.lineTo(this.v3._get2d().x , this.v3._get2d().y);   
  14.                 ctx.lineTo(this.v4._get2d().x , this.v4._get2d().y);   
  15.                 ctx.closePath();   
  16.           &n

您可能想查找下面的文章:

相关文章

  • 2018-12-03HTML5应用-实现简单播放器的示例代码分享
  • 2017-08-06解决canvas转base64/jpeg时透明区域变成黑色背景的方法
  • 2018-12-03html5使用canvas绘制文字特效_html5教程技巧
  • 2018-12-03HTML5实战与剖析之自定义数据属性(dataset)
  • 2017-08-06HTML5 window/iframe跨域传递消息 API介绍
  • 2018-12-03用HTML5来开发一款android本地化App游戏-宝石碰碰
  • 2018-12-03仿CSDN Blog返回页面顶部功能实现原理及代码_html5教程技巧
  • 2018-12-03如何适配不同分辨率和不同屏幕尺寸的手机
  • 2018-12-03IIS的MIME未注册MP4类型,导致无法识别vidoe标签的解决办法
  • 2018-12-03HTML5 WebG 的3D网络拓扑结构图

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5/CSS3 3D立方体旋转动画经典案例
    • 关于wxcanvas的内容推荐
    • HTML5 实战PHP之Web页面表单设计
    • span设为inline-block之后,为什么未包含文字时下面会多出一条空白?
    • 使用HTML5 Notication API实现一个定时提醒工具
    • jQuery & Canvas 制作相机快门效果
    • ProcessOn 一款HTML5在线作图工具怎么样?
    • HTML5通过调用canvas对象的getContext()方法来获取绘图环境_html5教程技巧
    • 配置H5的滚动条样式
    • 突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)_html5教程技巧

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有