このコードはコード内にあります。私が共有しようとしているのはちょっと複雑で密度が高いので、実際はコードを求めずアドバイスを求めています。回転した四角形をスケーリングして新しいコントロールポイントと中心を見つけよう
https://codepen.io/anon/pen/LLEedg?editors=0010
それは回転四角形を拡大縮小して、新しいスケールの矩形の頂点座標を見つけることについてです。
矩形を回転させると、その中心をビューポートの0,0に変換して回転します。その後私は元の場所に翻訳します。できます。
次に、transform-origin
を矩形の右下に移動するスケールを行います。ジャンプを避けるために、スケールの量と、回転動作がコントロールポイントに適用した平行移動を補正します。最後に、transform origin
を回転した矩形の左下に移動すると、私はジャンプを見ません。私は、新しいコントロールポイント(回転された座標ではなくスケーリングされたバージョン)で新しい境界ボックスを計算します。
その後、私は同じ方法で新しいtransform-origin
のスケールを行います。今回私は、新しいスケーリングされた回転していない新しいバウンディングボックスを取り、新しいスケーリングされたコントロールポイント座標を見つけるために同じメソッドを使って回転を行います。
私はそれらが画像の頂点に正確にあると思っていますが、ちょっと離れています。
おそらく、回転されたコントロールポイントの原点からのスケーリングであり、適切に補正されていない可能性があります。
コードペンのリンクで問題を再現するには、私は共有します。
最初に任意の量を左に回転します。
次に左上のハンドルを左にドラッグしてスケールします。
小さな黒い点は、緑色のハンドルの中央に正確に着く必要があります。
小さな黒いドットは、赤色の四角形が0,0で回転して、新しい制御点を計算するために、バック変換されます新しい境界ボックスであるストローク 、新しい制御点は、私は計算座標です。赤い塗りつぶしの青色のターゲットは、画像のtransform-origin
です。緑色の塗りつぶしの黄色のターゲットは、混乱しないように意図的に更新しないハンドルのtransform-origin
です。不透明度が大きい半径の大きい青い塗りつぶし円は、小さな黒い点から新しい計算中心です。