SVG Lineal Escala de degradado y Traducción pregunta
-
12-09-2019 - |
Pregunta
Tengo el siguiente gradiente radial:
<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" />
Me gustaría reducir este gradiente de tamaño en un 90% y traducirlo adecuadamente basada en esta nueva escala (posición x se convierte en 402.2, y se hace cargo 545.1, etc).
Obviamente, multiplicando cx, cy, fx, fy, yr por 0.1 me va a obtener una parte del camino allí. Sin embargo, ¿cómo puedo programáticamente reelaborar el gradientTransform para obtener el resto del camino?
Solución
Me gustaría dejar los parámetros (cx, fx, R, etc.) sin tocar. Sólo multiplica la matriz de transformación existente con una nueva matriz para el escalamiento. La matriz resultante es la matriz de transformación nuevo para su gradiente.
Si desea escalar alrededor del centro, entonces también tiene añadir una traducción en la matriz de escalamiento.
Así que esto sería para el factor de escala s = 0.1:
newGradientTansform =
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))