- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最近研究魔方的玩法,就突然想用HMTL5写一个魔方的模型,由于魔方是一个3D的立方体,这次就试着用HTML5写了一个简单的3D模型。下面是测试链接和预览画面。/demo/Rubik/index.html制作流程首先你需要下载html5开源库件lufylegend-1.4.0/lufy_legend/article/details/魔方分为6个面,每个面由9个小矩形组成,现在我把每个小矩形当做一个类封装起来,因为现在建立的是一个3D魔方,所以要画出每个小矩形,需要知道小矩形的4个定点,而这4个定点会根据空间的旋转角度而变换,所以为了计算出这4个定点坐标,需要知道魔方绕x轴和z轴旋转的角度。所以,建立矩形类如下[javascript]?view plain?copyfunction?Rect(pointA,pointB,pointC,pointD,angleX,angleZ,color){???base(this,LSprite,[]);???this.pointZ=[(pointA[0]+pointB[0]+pointC[0]+pointD[0])/4,(pointA[1]+pointB[1]+pointC[1]+pointD[1])/4,(pointA[2]+pointB[2]+pointC[2]+pointD[2])/4];???this.z?=?this.pointZ[2];???this.pointA=pointA,this.pointB=pointB,this.pointC=pointC,this.pointD=pointD,this.angleX=angleX,this.angleZ=angleZ,this.color=color;??}???Rtotype.setAngle?=?function(a,b){???this.angleX?=?a;???this.angleZ?=?b;???this.z=this.getPoint(this.pointZ)[2];??};??pointA,pointB,pointC,pointD是小矩形的四个顶点,angleX,angleZ分别是x轴和z轴旋转的角度,color是小矩形的颜色。魔方分为6个面,先看一下最前面的一面,如果以立方体的中心作为3D坐标系的中心,那么9个小矩形的各个定点所对应的坐标如下图所示所以,前面这个面的9个小矩形可以由下面的代码来建立[javascript]?view plain?copyfor(var?x=0;x3;x++){???for(var?y=0;y3;y++){???z?=?3;???var?rect?=?new?Rect([-3*step?+?x*2*step,-3*step?+?y*2*step,-3*step?+?z*2*step],[-step?+?x*2*step,-3*step?+?y*2*step,-3*step?+?z*2*step],[-step?+?x*2*step,-step?+?y*2*step,-3*step?+?z*2*step],[-3*step?+?x*2*step,-step?+?y*2*step,-3*step?+?z*2*step],0,0,#FF0000);???backLayer.addChild(rect);???}??}??其中backLayer是一个LSprite类,step是半个小矩形的长,同样的道理,可以也得到其他5个面。6个面都建立了,在绘制这6个面之前,首先要根据旋转的角度来计算各个定点的坐标,看下面的图根据上面的图,用下面的公式即可得到变换后的定点坐标[javascript]?view plain?copyRtotype.getPoint?=?function(p){???var?u2,v2,w2,u=p[0],v=p[1],w=p[2];???u2?=?u?*?Math.cos(this.angleX)?-?v?*?Math.sin(this.angleX);???v2?=?u?*?Math.sin(this.angleX)?+?v?*?Math.cos(this.angleX);???w2?=?w;???u?=?u2;?v?=?v2;?w?=?w2;???u2?=?u;???v2?=?v?*?Math.cos(this.angleZ)?-?w?*?Math.sin(this.angleZ);???w2?=?v?*?Math.sin(this.angleZ)?+?w?*?Math.cos(this.angleZ);???u?=?u2;?v?=?v2;?w?=?w2;???return?[u2,v2,w2];??};??最后根据小矩形的四个定点坐标,来绘制这个矩形,[javascript
您可能关注的文档
- T梁张拉压浆封锚技术交底卡.doc
- TSMOracle11gR2数据库异机完全恢复手册.docx
- unit8LectureNotes.doc
- QTP学习与实践经验总结.doc
- unix系统下的回车.doc
- U型钢支护措施.doc
- vf编程试题集.doc
- VBA回归分析.doc
- Parasoft-C++Test操作手册.doc
- UG90制图模板替换方法.docx
- 5.3.1函数的单调性(教学课件)--高中数学人教A版(2019)选择性必修第二册.pptx
- 部编版道德与法治2024三年级上册 《科技提升国力》PPT课件.pptx
- 2.7.2 抛物线的几何性质(教学课件)-高中数学人教B版(2019)选择性必修第一册.pptx
- 人教部编统编版小学六年级上册道德与法治9 知法守法 依法维权(第一课时)课件.pptx
- 三年级上册品德道德与法治《学习伴我成长》.pptx
- 部编版小学道德与法治六年级上册6 人大代表为人民 课件.pptx
- 部编版小学道德与法治六年级上册1感受生活中的法律第一课时课件.pptx
- 2.5.2圆与圆的位置关系(教学课件)-高中数学人教A版(2019)选择性必修第一册.pptx
- 2.5.1直线与圆的位置关系-(教学课件)--高中数学人教A版(2019)选择性必修第一册.pptx
- 14.1.1 同底数幂的乘法(教学课件)-初中数学人教版八年级上册.pptx
文档评论(0)