Affine Transform

22
アフィン変換の話 宇佐見 公輔

Transcript of Affine Transform

Page 1: Affine Transform

アフィン変換の話宇佐見 公輔

Page 2: Affine Transform

どこで出てくるか

Page 3: Affine Transform

ビューを変形する• iOS での例 : CGAffineTransform

• UIView の transform プロパティ:平行移動、拡大縮小、回転、など

Page 4: Affine Transform

フォントを変形する• CTFontCreate の引数に渡す : 斜体フォントを作る

Page 5: Affine Transform

アフィン変換は 図形の変形に使われている

Page 6: Affine Transform

図形の変形

Page 7: Affine Transform

図形の変形• 合同変換(ユークリッド変換)

• 相似変換

• アフィン変換

• 射影変換

Page 8: Affine Transform

合同変換• 平行移動、回転、反転

• 長さを保つ

• 角度を保つ

• → 図形の形や大きさを変えない

Page 9: Affine Transform

相似変換• 合同変換 + 拡大・縮小

• 長さの比を保つ(長さを保たない)

• 角度を保つ

• → 図形の形を変えない(大きさは変わる)

Page 10: Affine Transform

アフィン変換• 相似変換 + 剪断変形(正方形を菱形に)

• 長さの比を保つ

• 平行性を保つ(直角性を保たない)

• → 図形の形が変わる(斜めになる)

Page 11: Affine Transform

射影変換• アフィン変換 + 扇形変形

• 長さの比を保たない

• 直線性を保つ(平行性・直角性を保たない)

• → 図形の形が変わる

Page 12: Affine Transform

アフィン変換のイメージ形は変わるけど、平行なものは平行なまま

Page 13: Affine Transform

アフィン変換 = 平行移動、回転、反転、 拡大縮小、剪断

Page 14: Affine Transform

変換の数式

Page 15: Affine Transform

Lightning Talk なので軽めに

Page 16: Affine Transform

回転の数式

✓x

0

y

0

◆=

✓cos(t) � sin(t)

sin(t) cos(t)

◆✓x

y

Page 17: Affine Transform

平行移動+回転の数式

✓x

0

y

0

◆=

✓cos(t) � sin(t)

sin(t) cos(t)

◆✓x

y

◆+

✓e

f

Page 18: Affine Transform

アフィン変換の数式

✓x

0

y

0

◆=

✓a b

c d

◆✓x

y

◆+

✓e

f

Page 19: Affine Transform

変換の合成 (行列表現のメリット)

✓a1 b1c1 d1

◆✓a2 b2c2 d2

Page 20: Affine Transform

同次座標による表現 (平行移動も行列に含める)0

@x

0

y

0

1

1

A =

0

@a b e

c d f

0 0 1

1

A

0

@x

y

1

1

A

Page 21: Affine Transform

まとめ

Page 22: Affine Transform

アフィン変換は 簡単に使えて便利なので 知っておくとよい