welcome: please sign in
location: "変換"の差分
2と3のリビジョン間の差分
2008-08-22 04:26:57時点のリビジョン2
サイズ: 171
編集者: masahiko
コメント:
2008-08-22 04:33:17時点のリビジョン3
サイズ: 4181
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 3: 行 3:
{{attachment:transform1.png}} transform属性

描画を行うときに、位置や大きさの変換をtransform属性で指定することができます。
use要素で用いた例です。
 {{{
 <use xlink:href="#名前" x="位置" y="位置" transform="変換内容" />
 }}}
のように書きます。

----
=== 移動 ===

移動は translate(移動量X, 移動量y) で指定します。
 {{{
 <use xlink:href="#名前" x="0" y="0" transform="translate(10,20)" />
 }}}
と書くと、x方向に10、y方向に20移動された位置に表示されます。 x="0" y="0" として使うのがほとんどです。
 {{{
 <use xlink:href="#名前" x="10" y="20" />
 }}}
という方法でも可能です。

拡大縮小や回転と組み合わせて使う場合には、translateを用いる方が分りやすい。

----
=== 拡大縮小 ===

大きさの変更は scale(拡大率X, 拡大率y) で指定します。
 {{{
 <use xlink:href="#名前" x="0" y="0" transform="scale(0.5, 0.5)" />
 }}}
と書くと、x方向y方向とも半分の大きさになります。
原点を基準として拡大縮小されるので x="0" y="0" として使うのがほとんどです。

上下左右で異なる拡大率を指定すると、縦長、横長の拡大縮小ができます。

拡大率に負の値を指定することもできます。
x方向の拡大率を負にすると左右反転、y方向の拡大率を負にすると上下反転になります。

----
=== 回転 ===

回転は rotate(回転角度, 中心座標X, 中心座標y) で指定します。
 {{{
 <use xlink:href="#名前" x="0" y="0" transform="rotate(45, 10, 10)" />
 }}}
と書くと、(10,10)を中心に45度回転します。
この場合も x="0" y="0" として使うのが分りやすいでしょう。

----
=== せん断 ===

長方形を左右または上下から押してずらし、平行四辺形に変えるような変換です。

次のように記述します。値は角度です。
 {{{
 transform=skewX(30)
 transform=skeyY(50)
 }}}

----
=== 変換の組み合わせ ===

translate, scale, rotate などを並べて記述することもできます。
この場合、右側のものから順に適用されます。
 {{{
 transform="translate(100,50) scale(0.5, 0.5)"
 }}}
とすると、大きさを半分にした後、移動が行われます。

属性 x="数値" y="数値" を指定した場合は、これが先に適用されます。

適用順は

   1. 属性 x, y
   2. transform内の右端の変換
   3. transform内の左にある変換

になります。

変換の順序や合成は行列演算に対応しています。

----
=== 1次変換の行列 ===

座標を縦ベクトルで表すとき、その1次変換は2×2の行列で表され
 {{attachment:transform1.png}}
により、点(x、y)が点(x’、y’)に移されます。

1次変換では、原点を中心とした拡大縮小、回転、せん断やそれらを組み合わせた変換ができました。

移動は行列を掛けるのではなく、ベクトルの加算に対応しました。


一般に図形の変換は次のように分類できます。

 . 1)形を変えないもの
 . 2)平行線を平行線に移すもの
 . 3)直線を直線に移すもの
 . 4)曲線を曲線に移すもの

1次変換と移動を組み合わせると2)の範囲の変換になります。

----
=== 1次変換と移動を同じ計算で行う方法 ===

点(x、y)を3次元のベクトル
行 5: 行 111:
で表すことにします。

1次変換は
行 6: 行 115:
になります。

移動は
行 7: 行 119:
で表せます。


transformとの対応

行列の掛け算に対応するので右から順に処理されるのが分ります。

変換行列を与えてtransformを行うこともできます。

transform=matrix(a,b,c,d,e,f)

と書くと
行 8: 行 132:
の変換行列になります。

変換

transform属性

描画を行うときに、位置や大きさの変換をtransform属性で指定することができます。 use要素で用いた例です。

  •  <use xlink:href="#名前"  x="位置" y="位置" transform="変換内容" />

のように書きます。


移動

移動は translate(移動量X, 移動量y) で指定します。

  •  <use xlink:href="#名前"  x="0" y="0" transform="translate(10,20)" />

と書くと、x方向に10、y方向に20移動された位置に表示されます。 x="0" y="0" として使うのがほとんどです。

  •  <use xlink:href="#名前"  x="10" y="20" />

という方法でも可能です。

拡大縮小や回転と組み合わせて使う場合には、translateを用いる方が分りやすい。


拡大縮小

大きさの変更は scale(拡大率X, 拡大率y) で指定します。

  •  <use xlink:href="#名前"  x="0" y="0" transform="scale(0.5, 0.5)" />

と書くと、x方向y方向とも半分の大きさになります。 原点を基準として拡大縮小されるので x="0" y="0" として使うのがほとんどです。

上下左右で異なる拡大率を指定すると、縦長、横長の拡大縮小ができます。

拡大率に負の値を指定することもできます。 x方向の拡大率を負にすると左右反転、y方向の拡大率を負にすると上下反転になります。


回転

回転は rotate(回転角度, 中心座標X, 中心座標y) で指定します。

  •  <use xlink:href="#名前"  x="0" y="0" transform="rotate(45, 10, 10)" />

と書くと、(10,10)を中心に45度回転します。 この場合も x="0" y="0" として使うのが分りやすいでしょう。


せん断

長方形を左右または上下から押してずらし、平行四辺形に変えるような変換です。

次のように記述します。値は角度です。

  •  transform=skewX(30)
     transform=skeyY(50)


変換の組み合わせ

translate, scale, rotate などを並べて記述することもできます。 この場合、右側のものから順に適用されます。

  •  transform="translate(100,50) scale(0.5, 0.5)"

とすると、大きさを半分にした後、移動が行われます。

属性 x="数値" y="数値" を指定した場合は、これが先に適用されます。

適用順は

  1. 属性 x, y
  2. transform内の右端の変換
  3. transform内の左にある変換

になります。

変換の順序や合成は行列演算に対応しています。


1次変換の行列

座標を縦ベクトルで表すとき、その1次変換は2×2の行列で表され

  • transform1.png

により、点(x、y)が点(x’、y’)に移されます。

1次変換では、原点を中心とした拡大縮小、回転、せん断やそれらを組み合わせた変換ができました。

移動は行列を掛けるのではなく、ベクトルの加算に対応しました。

一般に図形の変換は次のように分類できます。

  • 1)形を変えないもの
  • 2)平行線を平行線に移すもの
  • 3)直線を直線に移すもの
  • 4)曲線を曲線に移すもの

1次変換と移動を組み合わせると2)の範囲の変換になります。


1次変換と移動を同じ計算で行う方法

点(x、y)を3次元のベクトル transform2.png で表すことにします。

1次変換は transform3.png になります。

移動は transform4.png で表せます。

transformとの対応

行列の掛け算に対応するので右から順に処理されるのが分ります。

変換行列を与えてtransformを行うこともできます。

transform=matrix(a,b,c,d,e,f)

と書くと transform5.png の変換行列になります。

変換 (最終更新日時 2008-08-22 04:35:03 更新者 masahiko)