带预旋转变换的SVG元素按比例缩放功能异常问题求助
带预旋转变换的SVG元素按比例缩放功能异常问题求助
问题场景
我自己写了个小SVG插件,想实现拖拽每个矩形、圆形右上角的小方块,来按比例缩放对应的元素。红色元素的缩放效果都正常,但蓝色元素就出问题了。
我想要的理想效果是:以元素的左下角为原点,按比例缩放元素,但蓝色元素在缩放时还会额外发生旋转偏移。
蓝色元素本身已经带有旋转变换:matrix(1 -0.5 0.5 1 0 0)
而红色元素都是默认的无变换状态:matrix(1 0 0 1 0 0)
我目前用的缩放计算公式如下:
- 新的
m(a)= 旧的m(a)× dx或dy中变化量更大的那个值作为比例因子 - 新的
m(d)= 新的m(a)// 保持宽高比例一致 - 新的
m(e)= (旧的m(a)- 新的m(a)) × 元素旧的x坐标 + 旧的m(e)// 调整垂直位置 - 新的
m(f)= (旧的m(d)- 新的m(d)) × (元素旧的y坐标 + 旧的高度) + 旧的m(f)// 调整水平位置
疑问
我猜测是蓝色元素自带的预旋转变换导致了这个问题,但实在搞不懂背后的原因——毕竟我只是调整了变换矩阵里的平移参数(m(e)和m(f))而已啊...
备注:内容来源于stack exchange,提问作者Lain
相关产品推荐
相关产品推荐

