SVGリニアグラデーションスケールと翻訳質問
-
12-09-2019 - |
質問
私は、次の放射状の勾配を有します:
<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" />
私は(x位置は402.2となる、Y位置など、545.1となる)が90%のサイズでこの勾配を低減し、適切にこの新しいスケールに基づいてそれを翻訳したいと思います。
当然、0.1により、CX、CY、FX、FY、およびRを乗算することは私が道の一部を取得します。しかし、どのように私はプログラム的に道の残りの部分を取得するためにgradientTransformを手直ししますか?
解決
Iはそのままパラメータ(CX、FX、Rなど)を残すであろう。ただ、スケーリングのための新しい行列を持つ既存の変換行列を掛けます。結果の行列は、あなたの勾配のための新たな変換行列である。
あなたが中心の周りに拡張したい場合は、そして、あなたはまた、スケーリング行列に翻訳を追加しました。
これはファクタs = 0.1をスケーリングするであろう:
newGradientTansform =
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))
所属していません StackOverflow