図形の変形(アフィン変換)

●図形の
図形の変形(
変形(アフィン変換
アフィン変換)
変換)
図形の
図形の『傾斜、
傾斜、拡大・
拡大・縮小、
縮小、任意角回転、
任意角回転、鏡像』
鏡像』を得る方法(
方法(座標変換式)
座標変換式)を紹介します
紹介します。
します。
また、
また、写像変換例として
写像変換例として、
として、円を写像して
写像して楕円弧
して楕円弧を
楕円弧を描く方法を
方法を紹介します
紹介します。
します。
『座標変換
座標変換』
変換』の実用例で
実用例です。
1. アフィン変換
アフィン変換の
変換の一般式
y
a
B
Y=Fq(x)
b
aq = AQ ・ AB
-1
・ ab
AC
ac
Q
・・・ (式 1)
q
A
c
C
0
x
点 A、B、C、a、b、c と Y=Fq(x) の曲線が
曲線が与えられ、
えられ、点(A,B,C) を点(a,b,c) に対応させて
対応させて、
させて、曲線 BC 上
の点 Q の対応点 q を求める計算式
める計算式は
計算式は『式 3』で求めることができます。
めることができます。
式1の座標成分式を
座標成分式を以下に
以下に示します。
します。
-1
[q(x)q(x)-a(x) , q(y)q(y)-a(y)]
a(y)] = [Q(x)Q(x)-A(x) , Q(y)Q(y)-A(y)]
A(y)] * | B(x)B(x)-A(x) , B(y)B(y)-A(y) | * | b(x)b(x)-a(x) , b(y)b(y)-a(y) |
| C(x)C(y)-A(y) |
c(y)-a(y) |
C(x)-A(x) , C(y)
| c(x)c(x)-a(x) , c(y)
-1
-1
ここで、
ここで、 | p00 , p01 | = (p00*
p00*p11p11-p01*
p01*p10)
p10) * | p11 , -p01 |
| p10 , p11 |
| -p10 , p00 |
です。
です。
結局、
結局、次式となります
次式となります。
となります。
[q(x) ,q(y)] =
[Q(x)[Q(x)-A(x) , Q(y)Q(y)-A(y)]
(B(x)(B(x)-A(x))・
A(x))・(C(y)(C(y)-A(y))A(y))-(B(y)(B(y)-A(y))・
A(y))・(C(x)(C(x)-A(x))
* | C(y)
C(y)-A(y) , A(y)
A(y)-B(y) |*| b(x)b(x)-a(x) , b(y)b(y)-a(y) | + |a(x) ,a(y)| ・・・ (式 2)
| A(x)B(x)-A(x) | | c(x)
c(x)-a(x) , c(y)
c(y)-a(y) |
A(x)-C(x) , B(x)
(式 2)を
2)を斉次座標表現で
斉次座標表現で表すと次式
すと次式となります
次式となります。
となります。
| q(x) , q(y) , 1 | = | Q(x) - A(x) , Q(y) - A(y) , 1 |
| αδ - βγ αδ - βγ
|
| δ・(b(x)(b(x)-a(x))a(x))-β(c(x)(c(x)-a(x)) , δ・(b(y)(b(y)-a(y))a(y))-β(c(y)(c(y)-a(y)) , 0 |
* | -γ・(b(x)(b(x)-a(x))+α
a(x))+α(c(x)(c(x)-a(x)) , -γ・(b(y)(b(y)-a(y))+α
a(y))+α(c(y)(c(y)-a(y)) , 0 |
|
a(x)
,
a(y)
, 1 |
但し、 α
β
γ
δ
=
=
=
=
B(x)B(x)-A(x)
B(y)B(y)-A(y)
C(x)C(x)-A(x)
C(y)C(y)-A(y)
・・・ (式 3)
です。
です。
更に、点 A が原点 (0,0) に一致している
一致している場合
している場合は
場合は次式となります
次式となります。
となります。
| q(x) , q(y) , 1 | = |
Q(x)
Q(y)
, 1 |
,
| B(x)・
B(x)・
・C(y)B(x)・C(y)C(y)-B(y)・
B(y)・C(x)
B(x)
C(y)-B(y)・
B(y)・C(x)
|
| C(y)・
C(y)・(b(x)(b(x)-a(x))a(x))-B(y)・
B(y)・(c(x)(c(x)-a(x)) , C(y)・
C(y)・(b(y)(b(y)-a(y))a(y))-B(y)・
B(y)・(c(y)(c(y)-a(y)) , 0 |
* | -C(x)・
C(x)・(b(x)(b(x)-a(x))+B(x)・
a(x))+B(x)・(c(x)(c(x)-a(x)) , -C(x)・
C(x)・(b(y)(b(y)-a(y))a(y))-B(x)・
B(x)・(c(y)(c(y)-a(y)) , 0 | ・・・ (式 4)
|
a(x)
,
a(y)
, 1 |
- 1 -
2. 斉次座標(
斉次座標(せいじざひょう)
せいじざひょう)
『斉次』
『同次
斉次』とは『
とは『次数が
次数が斉(ひと)
ひと)しい』
しい』ということで、
ということで、式の要素の
要素の次数が
次数が全て等しいことを示
しいことを示し、
『同次』
同次』(=同じ次数)
次数)と
も言います。
います。
例) x・
では、
x・y^2 + x^2・
x^2・y +x^3
では、各要素の
各要素の次数は
次数は全て同じで『斉次』
斉次』です。
です。
例) x・
x・y^2 + x^2・
x^2・y +x^3 + 1 では、
では、4項目が
項目が0次で各要素の
各要素の次数は
次数は全て同じでないので
じでないので『
ので『斉次』
斉次』ではありません。
ではありません。
斉次座標表現とは
斉次座標表現とは、
とは、二次元座標
二次元座標 (x,y) に、w という仮想
という仮想座標
仮想座標を
座標を追加し
追加し (w・
(w・x, w・
w・y, w) と表すことで、
ことで、いろ
いろな
いろな表現が
表現ができるようにしたものです
できるようにしたものです(
です(詳細は
詳細は専門書を
専門書を見て下さい)
さい)。
ここでは、
ここでは、これを使
これを使って図形
って図形を
図形を変形させる
変形させる式
させる式を紹介します
紹介します。
します。
点(w・
(w・x1, w・
w・y1, w)の
w)の変換後の
変換後の点(w'・
(w'・x2, w'・
w'・y2, w') は次式で
次式で求めることができます。
めることができます。
(w'・
(w'・x2, w'・
w'・y2, w') = (w・
(w・x1, w・
w・y1, w) * | a , b , p |
| c , d , q |
| m , n , s |
・『 a、b、c、d 』は、①拡大縮小、
拡大縮小、②回転、
回転、③せん断
せん断 に、
・『 m、n
』は、④平行移動
に、
・『 p、q
』は、⑩投影
に、
・『 s
』は、⑪全体のスケーリング
全体のスケーリング
に、関与します
関与します。
します。
二次元平面
二次元平面内
平面内での変換
での変換は
変換は『 w = w' = 1 』(p = q = 0、
0、s = 1)とする
1)とすることで
とすることで得
ことで得られます
られます。
ます。
(x2, y2, 1) = (x1, y1, 1) * | a , b , 0 | -->
-->
| c , d , 0 |
| m , n , 1 |
x2 = a・
a・x1 + c・
c・y1 + m
b・
・x1 + d
d・
・y1 + n
y2 = b
【 変換例 】
y
P2
① 回転
(x2, y2, 1) = (x1, y1, 1) * | cos θ , sin θ , 0 |
| -sin θ , cos θ , 0 |
|
0 ,
0 , 1 |
結局、
結局、
x2 = x1・
x1・cosθ
cosθ - y1・
y1・sinθ
sinθ
y2 = x1・
x1・sinθ
sinθ + y1・
y1・cosθ
cosθ
② 拡大
(x2, y2, 1) = (x1, y1, 1) * | Sx , 0 , 0 | ・・・ Sx : x 方向拡大率
| 0 , Sy , 0 |
Sy : y 方向拡大率
| 0 , 0 , 1 |
結局、
結局、
x2 = x1・
x1・Sx
y2 = y1・
y1・Sy
③ せん断
せん断
(x2, y2, 1) = (x1, y1, 1) * | 1 , Dy , 0 | ・・・ Dx : x 方向せん
方向せん断量
せん断量
| Dx , 1 , 0 |
Dy : y 方向せん
方向せん断量
せん断量
| 0 , 0 , 1 |
結局、
結局、
x2 = x1
+ y1・
y1・Dx
y2 = x1・
x1・Dy + y1
θ
P1
x
y
P2
P1
x
y
Dy
Dx
x
y
P2
④ 移動
P1
x
⑤ x 軸対称
| 1, 0, 0
| 0,0,-1, 0
| 0, 0, 1
|
|
|
(x2, y2, 1) = (x1, y1, 1) * | 1 , 0 , 0 | ・・・ Tx : x 方向移動量
| 0 , 1 , 0 |
Ty : y 方向移動量
| Tx , Ty , 1 |
結局、
結局、
x2 = x1 + Tx
y2 = y1 + Ty
⑥ y 軸対称
||-1, 0, 0 |
| 0, 1, 0 |
| 0, 0, 1 |
⑦ 原点対称
|-1, 0, 0 |
| 0,0,-1, 0 |
| 0, 0, 1 |
- 2 -
⑧
|
|
|
y=x 対称
0, 1, 0 |
1, 0, 0 |
0, 0, 1 |
⑨ y=y=-x 対称
| 0, -1, 0 |
||-1, 0, 0 |
| 0, 0, 1 |
3. 円を写像して
写像して楕円孤
して楕円孤を
楕円孤を描画する
描画する
『B を b に写像、
写像、C を c に写像』
写像』 する場合
する場合を
場合を示します。
します。
y
アフィン変換
アフィン変換の
変換の(式 4)で
4)で
① A(x,y)=(0,0)、
A(x,y)=(0,0)、B(x,y)=(1,0)、
B(x,y)=(1,0)、C(x,y)=(0,1)
C(x,y)=(0,1)
② a(x,y)=(0,0)
とすることで次式
とすることで次式が
次式が得られる。
られる。
P1
(=P0
P0)b
P0 b
{q(x),q(y),1} = {Q(x),Q(y),1}・
{Q(x),Q(y),1}・
b(x), b(y), 0
c(x), c(y), 0
q
0 , 0 , 1
結局、
結局、下式となる
下式となる。
となる。
q(x) = b(x)・
b(x)・Q(x) + c(x)・
c(x)・Q(y) ・・・ (式 2)
1 C
q(y) = b(y)・
b(y)・Q(x)
Q(x) + c(y)・
c(y)・Q(y)
Q
0
(=A,a)
c(=m1
m1)
m1
B
1
x
【作図例】
作図例】
(式_2)より
_2)より
q(x)= b(x)・
b(x)・Q(x)+c(x)・
Q(x)+c(x)・Q(y)=
5・
5・Q(x)+16・
Q(x)+16・Q(y)
y
q(y)= b(y)・
b(y)・Q(x)+c(y)・
Q(x)+c(y)・Q(y)= 13.5・
13.5・Q(x)+ 2・
2・Q(y)
20
y
15
(=C)
1 Q6 Q5
q1
qs
(b)
Q4
q3
10
Q3
P1
q2
q4
Q2
5
Q1
Q0(=B)
Q0
1
0
(=A)
( x
Q0=(1.000
=(1.000
Q0
Q1=(0.966
Q1=(0.966
Q2=(0.866
Q2=(0.866
Q3=(0.707
Q3=(0.707
Q4=(0.500
Q4=(0.500
Q5=(0.259
Q5=(0.259
Q6=(0.000
Q6=(0.000
,
,
,
,
,
,
,
,
y )
0.000)
0.259)
0.500)
0.707)
0.866)
0.966)
1.000)
q5
x
qe
(c)
0
(=a)
5
( x
qs=(
=( 5.000
qs
5.000
q1=(
q1=( 8.974
q2=(12.330
q2=(12.330
q3=(14.847
q3=(14.847
q4=(16.356
q4=(16.356
q5=(16.751
q5=(16.751
qe=(16.000
qe=(16.000
- 3 -
10
,
,
,
,
,
,
,
,
15
20
y )
13.500) -- 始点として
始点として与
として与えられる
13.559)
12.691)
10.959)
8.482)
5.429)
1.000) -- 終点
終点として
として与
として与えられる
x