如何在2D矩阵中处理​​无穷大

时间:2014-01-13 15:24:51

标签: css matrix svg transform

我正在编写一种算法,用于解析和乘以SVG或CSS中的2D变换命令,例如: translate(30px, 40px) rotate(45deg) scale(2) skewX(-45deg)

每个命令单独及其产品等同于[a, b, c, d, tx, ty]形式的二维矩阵。它运行得相当好,直到我尝试使用命令skewX(∓90deg),这相当于[1, 0, Infinity, 1, 0, 0]。当我尝试将其与另一个变换相乘时,矩阵乘积通常包含0 * Infinity运算,这会在JS中生成NaN,并且此NaN值随着以下数学运算和渲染而逐渐增加。

到目前为止,我采用的解决方案是用0 * Infinity包含潜在的( 0 * Infinity || 0 )操作,结果为0.我知道这在数学上是错误的,但到目前为止似乎有效。

是否有更清晰,更系统的方法来处理二维矩阵中的Infinity,甚至只是处理恼人的skewX(∓90deg)

提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果您在DOM上下文中解析它,则应该抛出RANGE_ERR。如果你正在分析标记,那么stop parsing the transform就是这样。