计算画布上下文.基于4x4矩阵的setTransform矩阵
calculate canvas context.setTransform matrix based on a 4x4 matrix
我正在尝试使用javascript和html5画布(没有webGL)模拟位图的3d旋转。我认为我们要做的是计算画布上下文的二维矩阵的项。setTransform方法,但我无法弄清楚如何从代表所需变换的一般4x4矩阵或像素中位图的所需最终位置理想地获得该矩阵(我可以计算所需的最终坐标,以像素投影4x4矩阵和项目视图矩阵的角)。
在这个小提琴中,我一直在摆弄操纵几个角度(代表具有两个自由度的3d相机的旋转)来计算setTransform矩阵的剪切项,但我真的无法清楚地了解要遵循的理想程序。http://jsfiddle.net/cesarpachon/GQvp2/
context.save();
/*alpha affects the scaley with sin
*/
var skew = Math.sin(alpha);
var scalex = 1;//(1-skew) +0.01;//Math.sin(alpha);
var scaley = 1;//Math.abs(Math.sin(alpha))+0.01;
var offx = 0;
var offy = 0;
var skewx = Math.sin(alpha);
var skewy = Math.sin(beta);
context.setTransform(scalex,skewx,skewy,scaley,offx,offy);
context.drawImage(image, 0, 0, height, width);
context.restore();
将3d投影到2d时的一个严重限制是2d变换仅使用仿射矩阵。
这意味着任何二维变换都会产生一个平行四边形。
3d透视图通常至少需要一个梯形结果(在仿射变换中无法实现)。
底线:你不能始终从2d转换中获得3d视角。
一种解决方法是使用图像切片将图像放入3d坐标
http://www.subshell.com/en/subshell/blog/image-manipulation-html5-canvas102.html另一个更具数学强度的解决方法是将图像映射到透视三角形上:
http://mathworld.wolfram.com/PerspectiveTriangles.html祝你项目顺利!: -)
相关文章:
- 区分JSON中的矩阵和列表列表
- 表中矩阵的每一行使用ng重复
- 使用JavaScript从平方矩阵
- 使用SVG api的矩阵数学
- 创建多维数组&Javascript中的矩阵
- Javascript 如何在使用转换矩阵数据时考虑转换源
- Javascript:将文本文件读入矩阵
- 矩阵,距离,JavaScript
- 谷歌距离矩阵 API 没有输出
- 是否存在用于解析 URL 路径段(矩阵)参数的 JavaScript 库
- Dojo日历矩阵VIew
- 给每个谷歌距离矩阵结果一个id
- 如何在不创建数组的情况下使用NgFor来生成矩阵UI模式
- Qualtrics(Javascript)-矩阵表-用下拉列表替换文本输入字段
- 将路点添加到谷歌距离矩阵中以确定里程
- 如何计算骨骼动画中的最终骨骼矩阵
- 谷歌地图距离矩阵和融合表
- 正在分析JSON消息中的矩阵
- 在Javascript中执行矩阵矩阵乘法
- 计算画布上下文.基于4x4矩阵的setTransform矩阵