SVG Sfumatura lineare Scala e traduzione Domanda
-
12-09-2019 - |
Domanda
ho il seguente gradiente radiale:
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2454"
id="radialGradient2460"
cx="4022.8572"
cy="5451.2656"
fx="4022.8572"
fy="5451.2656"
r="3559.865"
gradientTransform="matrix(-0.1071067,-0.1166362,0.1377765,-7.0459663e-2,276.61943,1452.439)"
gradientUnits="userSpaceOnUse" />
Vorrei ridurre questo gradiente dimensioni del 90% e tradurlo adeguatamente basa su questa nuova scala (posizione x diventa 402,2, posizione y diventa 545.1, ecc).
Ovviamente, moltiplicando cx, cy, fx, fy, e r da 0,1 me sarà ottenere una parte della strada. Tuttavia, come faccio a programatically rielaborare il gradientTransform per ottenere il resto della strada?
Soluzione
vorrei lasciare i parametri (cx, fx, r ecc) intatto. Basta moltiplicare la matrice di trasformazione esistente con una nuova matrice per la scalatura. La matrice risultante è la nuova matrice di trasformazione per il gradiente.
Se si desidera ridimensionare attorno al centro, allora hai anche una traduzione nella matrice di scala.
Quindi questo sarebbe per fattore di scala s = 0.1:
newGradientTansform =
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))