- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 javascript 和 html5 canvas(没有 webGL)来模拟位图的 3d 旋转。我认为要走的路是计算 Canvas context.setTransform 方法的 2D 矩阵的项,但我无法弄清楚如何从表示所需变换或所需最终位置的通用 4x4 矩阵理想地获取该矩阵位图的像素(我可以计算所需的最终像素坐标,用 4x4 矩阵和项目 View 矩阵投影 Angular )。
在这个 fiddle 中,我一直在操纵几个 Angular (表示具有两个自由度的 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
另一个数学上更密集的解决方法是将图像映射到透视三 Angular 形上:
http://mathworld.wolfram.com/PerspectiveTriangles.html
祝您的项目顺利! :-)
关于javascript - 基于4x4矩阵计算canvas context.setTransform矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24554526/
通过TextureView录制到屏幕时不镜像使用setTransform()方法: Matrix txform = new Matrix(); mTextureView.getTransform(tx
什么可能会阻止 IDirect3DDevice9::SetTransform 工作?我看过很多在 Direct3D9 中使用变换矩阵的教程,包括 this one here .据我所知,他们都以同样的
在j2me中有一个方法叫做settransform()同样在android中我需要使用什么方法来获取 Sprite 的镜像? 最佳答案 我相信您正在寻找 Sprite.setFlippedHorizo
主 Activity public class MainActivity extends Activity implements TextureView.SurfaceTextureListener
我使用 D3DXSprite 绘制纹理。 我想转换它们(旋转、缩放等),所以我使用 SetTransfrom 方法。 我应该存储旧转换 -> 设置新转换 -> 绘制 -> 设置旧转换吗?我有一个 sp
我正在为 CameraPreview 使用 TextureView。由于显示比例和预览比例之间的差异,我在 onSurfaceTextureAvailable() 中使用 textureView.se
我正在使用处理和 box2d 制作 2d 游戏。在我的游戏中,我有一个对象 targetBox,它是 Box 的实例。游戏开始时,targetBox 出现并放置在跷跷板上。游戏的目标是使用弹弓发射跷跷
我在 obj - c 中有一个数组代码 NSArray *buttonViews = @[_aboutMeView , _educationView , _appsView , _skillsView
我有一个 HTML5 Canvas ,我在其中画一条线并围绕中心旋转它。我想在每次绘制时重置 Canvas 的变换,然后重新平移/旋转 Canvas ,但它似乎没有旋转。我有一个工作示例,其中存储了先
我在 Canvas 上有一张图像。渲染图像后,我将 Canvas 顺时针旋转 90 度,然后必须缩放以适合 Canvas 。 Scaling an image to fit on canvas Res
http://www.w3schools.com/tags/canvas_settransform.asp context.setTransform(a,b,c,d,e,f); W3C 学校说 “水平
我正在使用 HTML5 Canvas 制作 2D 平台游戏。我有一张使用二维数组制作的 map 。例如: var map = [ [0,0,0], [0,0,0], [0,0,
我试图在与传送接触时移动玩家 body ,但未执行 setTransform。这是我的接触监听器 mPhysicsWorld.setContactListener(new ContactListene
在使用 setFrame 重新绘制框架后,我的转换不绘制。 我在使用 setFrame 更改方向时缩放 View 。但此 View 还需要根据 BOOL 参数更改位置:On = 在 View 中向上,
我正在玩弄 HTML5 Canvas ,我正在尝试实现一种使用平移、缩放和旋转在 Canvas 上四处移动图像的方法。 我已经使用 setTransform 进行了转换和缩放: canvas.getC
我是一名优秀的程序员,十分优秀!