我试图更好地理解raphael.js,但我发现raphael.js文档有时会让人感到困惑,有时候会有点模糊。
任何人都可以向我解释什么是矩阵以及如何使用它?
答案 0 :(得分:26)
在拉斐尔的任何地方几乎没有关于Matrix的好的,清晰的信息。然而,好消息是,它几乎与SVG中的Matrix转换以及CSS3完全相同。
SVG中有一些矩阵变换的指南,但它们通常假设您已经理解了矩阵数学。如果你不这样做,那就不多了。
然而,有one good guide on matrix maths in CSS3。它还带有Matrix Construction Set(截至2013年2月,它在Chrome中不起作用,但在Firefox中有效)。由于CSS3和Raphael矩阵变换背后的数学原理基本相同,你可以使用这个工具生成一组矩阵变换数,然后在Raphael中应用它们,它应该或多或少是相同的结果。
Matrix变换的超快速概述:
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
和f
喜欢x和y移动。但它们以数学上复杂的方式相互作用。这并不简单。答案 1 :(得分:4)
不知道Raphaël,但是看看文档并了解其他绘图API,我会做一个半教育的猜测。
在图形(Raphaël和其他任何地方)中,矩阵用于转换(移动,旋转等)图稿。您将找到HTML5 canvas
元素本身的类似API。
使用Element.transform
方法移动和旋转绘图表面时。就像在你开始画画之前在你的笔下移动一张纸一样。在内部,这种变换是使用变换矩阵完成的。如果一开始有点神秘,它是非常有用的功能。事实上,这也是3D图形的工作方式。
此外,矩阵可以相互添加,因此您可以有一个水平平移的矩阵,一个垂直平移的矩阵,一个旋转的矩阵(依此类推等),并将它们加在一起以获得组合效果
再次,我在这里推断;我不知道Raphaël。但这是图形中矩阵的基本用法。
答案 2 :(得分:1)
另外,除了上述内容之外,Raphael曾被限制为只旋转刻度翻译,但作者将Matrix曝光到语法中,任何变换都可能用于2D图形
转到http://www.irunmywebsite.com/raphael/additionalhelp.php 对于交互式示例您可以通过在下拉列表中选择“矩阵”并完成这些示例来进行过滤。 您也可以通过Matrix搜索以获得不同的示例子集。
例如,有一种称为'skew'的变换 如果您在页面上搜索此内容,则会看到另一个显示此内容的示例。
不要害羞的Matrix,这是一个有趣的主题
在iPod上无法超链接