我正在编写一种算法,用于解析和乘以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)
?
提前谢谢。