摘要:接上一篇,基于rotate的方式模拟三维空间。一开始定一个旋转原点,让物体随着这个原点旋转。(一般定为画布中心)vpx = canvas.width/2;vpy = canvas.height/2;然后为了让旋转效果和用户有交互,让旋转速度和角度和鼠标位置挂上关系stage.addEventListener('mousemove', function (x, y) { angleY = (x - vpx) * .001; angleX = (y - vpy) * .001;});接下来,如果我们有个三维空间里的小球ball,它有三向坐标(xpos, ypos, zpos)。下面
阅读全文
摘要:随着前端技术发展,尤其是html5中canvas和svg的应用,开始让web也可以轻易的渲染出各种绚丽的效果。本篇讨论的是基于rotate(旋转)的3d效果的初识。在canvas的getContext('2d')下利用一些变换来模拟。webGL是后话,本篇暂不讨论。【简要原理】由于仍是在2d下模拟,所以所谓的3d最终还是要降到2d的层面来。在坐标上的表现就是,3d的界面应该是有x,y,z三向坐标,2d的就只有x,y二向。那么怎么把3d的z向坐标降到和2d的x,y相关联起来,就是关键。要在2d的界面上展现3d的z方向的层次感,需要一个视井。相信学过绘画的同学应该很清楚,要画透视或
阅读全文
摘要:随手而记...在某些有规律的对特定形式的元素或者对象操作时。wrap对于api的调用有很意想不到的作用。简易包装:/** * $wrap {给一对象打包装} * @author horizon(岑安) */var $wrap = function (obj) { //private temp object var _obj = obj, toString = Object.prototype.toString, slice = Array.prototype.slice, unshift = Array.prototype.unshift, // defin...
阅读全文