千家信息网

怎么用HTML5 Canvas控制图形矩阵变换

发表于:2024-12-04 作者:千家信息网编辑
千家信息网最后更新 2024年12月04日,小编给大家分享一下怎么用HTML5 Canvas控制图形矩阵变换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!当我们把对应
千家信息网最后更新 2024年12月04日怎么用HTML5 Canvas控制图形矩阵变换

小编给大家分享一下怎么用HTML5 Canvas控制图形矩阵变换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

当我们把对应的0或1代入进矩阵,可以发现这是一个单位矩阵(水平和垂直缩放默认值是1,代表缩放1倍,即不缩放)。该方法使用一个新的变化矩阵与当前变换矩阵进行乘法运算,然后得到各种变化的效果。

这里简单说一下,当我们想对一个图形进行变换的时候,只要对变换矩阵相应的参数进行操作,操作之后,对图形的各个定点的坐标分别乘以这个矩阵,就能得到新的定点的坐标。

transform()方法

而Canvas绘图中,就给咱们提供了一个方法来改变这个变换矩阵,那就是transform()。

默认坐标系是以画布最左上角为坐标原点(0,0)。越往右X轴数值越大,越往下Y轴的数值越大。在默认坐标系中,每一个点的坐标都是直接映射到一个CSS像素上。画布上一些特定的操作和属性的设置都使用默认坐标系。然而除了默认坐标系之外,每个画布还有一个还有一个"当前变换距阵",作为图形状态的一部分。该矩阵定义了画布的当前坐标系。当指定了一个点的坐标后,画布的大部分操作都将该点映射到当前的坐标系中,而不是默认的坐标系。当前变换矩阵是用来指定的坐标转换成为默认坐标系中的等价坐标。坐标的变换还影响了文本和线段的绘制。

调用translate()方法只是简单地将坐标原点进行上、下、左、右移动。

rotate()方法会将坐标轴根据指定角度里进行顺时针旋转。

scale()方法实现对x轴或由y轴上的距离进行延长和缩短。传递负值会实现

scale以坐标原点做参照点将坐标轴进行翻转。就好像镜子中的镜像。

translate用来将坐标原点移动到画布最左下角,然后scale方法用于实现将y轴进行翻转,这样的就变成了越往上y轴越大。

从数学角度来理解坐标系变换:

translate、rotate和scale方法想象成对坐标轴的变换,就很容易理解了。从代数角度很容易理解坐标变换,就是把变换想像成一个变换后坐标系中的点(x,y),到原来的坐标系统变成了(x`,y`)。

调用 c.translate(dx,dy)。的方法等效如下表达式

复制代码

代码如下:

x` = x+dx; //新系统中的x轴的0,在原系统中就是dx

y` = y+dy;

c.scale(sx,sy);

x` = sx*x;

y` = sy*y;

c.rotate()

x` =x*cos(a)-y*sin(a);

y` = y*cos(a)+x*sin(a);

建议使用transform()的时候,可以在如下几个情况下使用:

1.使用context.transform (1,0,0,1,dx,dy)代替context.translate(dx,dy)

2.使用context.transform(sx,0,0,sy,0,0)代替context.scale(sx, sy)

3.使用context.transform(0,b,c,0,0,0)来实现倾斜效果(最实用)。

不用再使用它去实现旋转了,另外也没有也不用全记这些结论,直接记下abcdef六个参数的意义,效果是一样的。

下面我们看一个代码,熟悉一下:

JavaScript Code复制内容到剪贴板

矩阵变换

你的浏览器居然不支持Canvas?!赶快换一个吧!!

运行结果:

setTransform()方法

transform()方法的行为相对于由 rotate(),scale(), translate(), or transform() 完成的其他变换。例如:如果我们已经将绘图设置为放到两倍,则 transform() 方法会把绘图放大两倍,那么我们的绘图最终将放大四倍。这一点和之前的变换是一样的。

但是setTransform()不会相对于其他变换来发生行为。它的参数也是六个,context.setTransform(a,b,c,d,e,f),与transform()一样。

这里我们通过一个例子来说明:

绘制一个矩形,通过 setTransform() 重置并创建新的变换矩阵,再次绘制矩形,重置并创建新的变换矩阵,然后再次绘制矩形。

JavaScript Code复制内容到剪贴板

矩阵变换

你的浏览器居然不支持Canvas?!赶快换一个吧!!

以上是"怎么用HTML5 Canvas控制图形矩阵变换"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

坐标 变换 矩阵 方法 坐标系 画布 图形 内容 原点 方向 绘图 代码 参数 坐标轴 就是 效果 水平 矩形 篇文章 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全专业毕业论文怎么写 网络安全和信息化面试试题 服务器断电导致服务器系统进不去 网络安全包括的两大方面 科技局关于软件开发补贴政策 抗病毒广告数据库5秒 js 能够操作数据库么 电脑服务器怎么识别名称 企业微信服务器异常20110 数据库 列的数目不固定 唐雄燕联通网络技术大会 我的世界魂师生存服务器如何换区 江夏哪里有软件开发方案 个人学习网络安全的心得 服务器闪的不明显 中华人民网络安全法的时间 计算机网络技术管理专业 泛微服务器地址怎么查看 网络安全直播劫持 怎么同时在数据库创建几个表 网络安全校园安全演讲稿 玉溪新华互联网科技贵不贵 web是基于什么架构的软件开发 黄梅挑花的图案与软件开发 金蝶软件开发费用 独奏骑士服务器连接不上 安装数据库一般多少钱 局域网内多台服务器怎么管理 数据库hang 用c#数据库的连接数据库
0