使用lufylegend引擎实现图片变形
来源:互联网 发布:c语言源代码及注解 编辑:程序博客网 时间:2024/06/13 10:07
/** * Created by syl on 2016/7/27 0027. */var BitmapDataBezierMeshAlgorithm = (function(){ function BitmapDataBezierMeshAlgorithm($colCount, $rowCount) { var s = this; LExtends(s, LObject, []); s.colCount = $colCount || 1; s.rowCount = $rowCount || 1; s.tr = new TransformTrianglesResult(); s.cr2point = {}; s.buildMesh(); s.subdivisionU = 4; s.subdivisionV = 4; s.bze = new Bez(); } var p = { result:function() { var s = this; var ut,vt,col,row,local_ut,local_vt; var mesh_tl,mesh_tr,mesh_bl,mesh_br; var lp = new LPoint(0,0); var rp = new LPoint(0,0); var mp = new LPoint(0,0); s.tr.uvt = []; s.tr.vectices = []; s.tr.indices = []; for(i=0;i<= s.subdivisionV;i++){ ut = i/s.subdivisionV; for(j=0;j<= s.subdivisionU;j++){ vt = j/s.subdivisionU; col = parseInt(ut / (1 / s.colCount)); row = parseInt(vt / (1 / s.rowCount)); col = col == s.colCount ? col - 1 : col; row = row == s.rowCount ? row - 1 : row; local_ut = (ut - col / s.colCount) / (1 / s.colCount); local_vt = (vt - row / s.rowCount) / (1 / s.rowCount); mesh_tl = s.pointAt(col, row); mesh_tr = s.pointAt(col + 1, row); mesh_bl = s.pointAt(col, row + 1); mesh_br = s.pointAt(col + 1, row + 1); lp.x = s.bze.cubicTo(mesh_tl.x,mesh_tl.bottomControl.x, mesh_bl.topControl.x, mesh_bl.x,local_vt); lp.y = s.bze.cubicTo(mesh_tl.y,mesh_tl.bottomControl.y, mesh_bl.topControl.y, mesh_bl.y,local_vt); rp.x = s.bze.cubicTo(mesh_tr.x,mesh_tr.bottomControl.x, mesh_br.topControl.x, mesh_br.x,local_vt); rp.y = s.bze.cubicTo(mesh_tr.y,mesh_tr.bottomControl.y, mesh_br.topControl.y, mesh_br.y,local_vt); mp.x = s.bze.cubicTo(lp.x,(1 - local_vt) * mesh_tl.rightControl.x + local_vt * mesh_bl.rightControl.x, (1 - local_vt) * mesh_tr.leftControl.x + local_vt * mesh_br.leftControl.x, rp.x,local_ut); mp.y = s.bze.cubicTo(lp.y,(1 - local_vt) * mesh_tl.rightControl.y + local_vt * mesh_bl.rightControl.y, (1 - local_vt) * mesh_tr.leftControl.y + local_vt * mesh_br.leftControl.y, rp.y,local_ut); s.tr.vectices.push(mp.x,mp.y); s.tr.uvt.push(ut,vt); } } for(i = 0; i < s.subdivisionV; i++) { for(j = 0; j < s.subdivisionU; j++) { s.tr.indices.push(i*(s.subdivisionU+1)+j,(i+1)*(s.subdivisionU+1)+j,i*(s.subdivisionU+1)+j+1); s.tr.indices.push((i+1)*(s.subdivisionU+1)+j,i*(s.subdivisionU+1)+j+1,(i+1)*(s.subdivisionU+1)+j+1); } } }, buildMesh:function() { var s = this; var i; var j; var cr; var uva; var ilen = s.colCount; var jlen = s.rowCount; for(i = 0; i <= ilen; i++) { for(j = 0; j <= jlen; j++) { cr = s.toCR(i, j); uva = new UVAnchorPoint(); uva.col = i; uva.row = j; uva.leftControl.enabled = i > 0; uva.rightControl.enabled = i < ilen; uva.topControl.enabled = j > 0; uva.bottomControl.enabled = j < jlen; s.cr2point[cr] = uva; } } }, toCR:function(col, row) { var s = this; return col+","+row; }, pointAt:function(col, row) { var s = this; if(col < 0 || col > s.colCount || row < 0 || row > s.rowCount) return null; var cr = s.toCR(col, row); return s.cr2point[cr]; }, applyResult:function(target, container) { var s = this; container.graphics.clear(); container.graphics.beginBitmapFill(target); container.graphics.drawTriangles(s.tr.vectices, s.tr.indices, s.tr.uvt,.5); } } for (var k in p) { BitmapDataBezierMeshAlgorithm.prototype[k] = p[k]; } return BitmapDataBezierMeshAlgorithm;})();
0 0
- 使用lufylegend引擎实现图片变形
- lufylegend引擎俄罗斯方块的实现
- lufylegend引擎 实现2D RPG地图的切换
- lufylegend HTML5游戏引擎
- lufylegend引擎俄罗斯方块js代码!
- 利用开源HTML5引擎lufylegend.js结合javascript实现的五子棋人机对弈
- lufylegend.js开源游戏引擎
- HTML5游戏引擎lufylegend深入浅出 - 引擎介绍&原理
- HTML5游戏引擎lufylegend深入浅出 - 引擎介绍&原理
- 【HTML5】利用lufylegend实现游戏中的卷轴
- 使用lufylegend编写手游-jungle man
- 使用Lufylegend开发HTML5 Canvas游戏
- Html5+Lufylegend.js游戏开发(一)引擎介绍及原理
- C#实现图片的任意四边形变形
- Glide使用和图片变形问题
- 图片变形
- iOS 实现gif 图片效果 以及 图片不变形处理
- 超级病毒变形引擎
- mybatis foreach里用bind只获取集合的最后一个元素问题
- 从菜鸟到高手,R语言书单都在这!
- mysqldump导入导出mysql数据库
- Jekyll + Github Pages构建个人技术博客
- Ipython
- 使用lufylegend引擎实现图片变形
- VS2015在共享 DLL 中使用 MFC 发布细节 同时支持XP
- I2C之知(一)--I2C的简介和特性
- 你那些想让用户买买买的邮件里,有品牌概念么?
- No urls, filenames, or requirements specified
- Android的硬件加速
- 微信公众号开发
- Leetcode 413. Arithmetic Slices
- Centos获取内核源码