【发布时间】:2012-06-11 22:38:22
【问题描述】:
我试图更好地理解 raphael.js,但我发现 raphael.js 文档有时会令人困惑,有时会有点含糊。
谁能向我解释一下矩阵的用途和用途?
【问题讨论】:
标签: javascript svg raphael
我试图更好地理解 raphael.js,但我发现 raphael.js 文档有时会令人困惑,有时会有点含糊。
谁能向我解释一下矩阵的用途和用途?
【问题讨论】:
标签: javascript svg raphael
在任何地方,几乎没有关于 Raphael 中关于 Matrix 的好的、清晰的信息。不过,好消息是,它与 SVG 和 CSS3 中的矩阵转换几乎完全相同。
有一些关于 SVG 中矩阵变换的指南,但它们通常假设您已经了解矩阵数学。如果你不这样做也没多大用处。
不过,有one good guide on matrix maths in CSS3。它还带有Matrix Construction Set(截至 2013 年 2 月,它在 Chrome 中不起作用,但在 Firefox 中起作用)。由于 CSS3 和 Raphael 矩阵变换背后的数学原理本质上是相同的,因此您可以使用此工具生成一组矩阵变换数,然后将它们应用到 Raphael 中,结果应该或多或少相同。
什么是矩阵变换的超级快速概览:
someElement.matrix 是一个对象,每个数字由字母给出(例如{a:1,b:0,c:0,d:1,e:0,f:0}。直接设置这些不会改变对象(所以你不能这样做someElement.matrix.b = 3;) someElement.matrix.split() 将当前矩阵反向转换为包含转换属性的更易读的对象
someElement.matrix.toTransformString(); 将矩阵反向转换为转换字符串
someElement.animate({transform: ['m',0.5, -0.5, 0.5, 0.5, -0.5, 0.5]}, 1000);
someElement.transform(['m',0.5, -0.5, 0.5, 0.5, -0.5, 0.5]);
someElement.animate({transform: 'm0.5 -0.5 0.5 0.5 -0.5 0.5'}, 1000);
someElement.transform('m0.5 -0.5 0.5 0.5 -0.5 0.5');
1 0 0 1 0 0。应用此选项会将转换重置为其默认状态。a 像 x-scale 一样工作,b 像 y-shear,c 像 x-shear,d 像 y-scale 一样,e 和 @987654340 @ 喜欢 x 和 y 移动。但它们以数学上复杂的方式相互作用。不简单。【讨论】:
不认识 Raphaël,但查看文档并了解其他绘图 API,我会做出一个有根据的猜测。
在图形(Raphaël 和其他任何地方)中,矩阵用于变换(移动、旋转等)艺术品。您会发现 HTML5 canvas 元素本身的类似 API。
当您使用Element.transform 方法移动和旋转绘图表面时。就像在重新开始绘画之前将一张纸移到笔下一样。在内部,此类转换是使用转换矩阵完成的。这是一个非常有用的功能,虽然一开始有点神秘。事实上,这也是 3D 图形的工作原理。
此外,矩阵可以相互添加,因此您可以拥有一个水平平移的矩阵,一个垂直平移的矩阵,一个旋转的矩阵(依此类推),然后将它们加在一起以获得组合效果.
再次,我在这里推断;我不认识拉斐尔。但这是图形中矩阵的基本用法。
【讨论】:
除此之外,Raphael 曾经仅限于旋转缩放平移,但随着作者将 Matrix 暴露在语法中,任何 2d 图形的变换都是可能的
转到http://www.irunmywebsite.com/raphael/additionalhelp.php 对于交互式示例您可以通过在下拉列表中选择“矩阵”并处理这些示例来进行过滤。 您还可以按矩阵搜索以获取不同的示例子集。
例如,有一种称为“倾斜”的变换 如果您在页面上搜索此内容,您将看到另一个显示此内容的示例。
不要害怕 Matrix,这是一个有趣的话题
在 iPod 上,所以无法超链接
【讨论】: