SVG要素がtransform
プロパティを取ることができます。それは次のようになります。
<circle transfrom="translate(20, 10) rotate(30)" r="10" />
「X = 20 Y = 10に円を移動し、それを30度回転させる」ことを意味します。
インターポレーターはトランジションに役立ちます。あなたは
<circle transfrom="translate(30, 20) rotate(40)" r="10" />
のように、新しい位置と回転にその円を移行するのであれば、その後補間が必要とされています。 d3トランジションは自動的にそれを行いますが、補間オブジェクトはエクスポーズされており、ユースケースの必要に応じて独自の補間を行うことができます。したがって、このようになります。そのサークルのためのインターポレータを作成:D3インターポレータが、それは3つの数字を補間する必要があることを検出します
var myInterpolator = d3.interpolateTransformSvg(
"translate(20, 10) rotate(30)",
"translate(30, 20) rotate(40)"
)
こと:それに基づいて20、10および30を、ここであなたが得るだろうかです:
myInterpolator(0); // returns "translate(20, 10) rotate(30)"
myInterpolator(1); // returns "translate(30, 20) rotate(40)"
myInterpolator(0.5); // returns "translate(25, 11) rotate(35)"
e最後の例では、同じことをするが、SVGと同じ目的を果たすCSS変換、で変換が、非SVGにstyle
を介して適用され、適切な0と1
d3.interpolateTransformCss
の中間(方法0.5)を形質転換を返しますやや異なる形式を持っています。
おかげさまで、私は '分解 '機能の使用を見ています。私の小さな数学のバックグラウンドで、blockbuilder.orgに表示されているようなこの2つの関数の使用を示す実際の例が、より大きな助けになります。 – Daniel