−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
応用数学II 1995.11.16/17
14.一次変換を視覚的に理解する 飯島
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
14.1 はじめに
「幾何学IIがわかんねえ」という人が多い。そうかもしれない。でも,「越えなきゃな
らない部分」もある。それはそれで理解してください。でも,何にもしないのも可愛そう
なので,応用数学の時間では,「視覚的」あるいは「実験的」に理解する方法も考えてみ
ましょう。まずは,「一次変換」を行列を使って扱うところから始めましょうか。
14.2 変換を見る
COMMON SHARED pi
pi = ATN(1) * 4
DIM a(2, 2)
SCREEN 12
CLS
MaxOfX = 10
MaxOfY = MaxOfX * 480 / 640
Memori = MaxOfX / 40
dp = MaxOfX / 300
WINDOW (-MaxOfX, MaxOfY)-(MaxOfX, -MaxOfY)
CALL SetMatrix(a())
CALL DrawObject(a())
(以上がメイン)
SUB DrawObject (a())
FOR t = 0 TO 2 * pi STEP .01
x = COS(t)
y = SIN(t)
CALL TransForm(a(), x, y, Newx, Newy)
PSET (x, y), 7
PSET (Newx, Newy), 4
NEXT
END SUB
SUB SetMatrix (a())
a(1, 1) = 2
a(1, 2) = 1
a(2, 1) = 1
a(2, 2) = 2
END SUB
SUB TransForm (a(), x, y, Nx, Ny)
Nx = a(1, 1) * x + a(1, 2) * y
Ny = a(2, 1) * x + a(2, 2) * y
END SUB
14.3 次に何をしてみたい?
さて,見るだけだったら,サルでもできる。次に何をしてみたいか,それが重要です。
そう,最低限のこととしては,
(1) 行列の値を変えてみる。
(2) 対象を変えてみる。
ということを思いつきますよね。
ところで,どうして今回は,
InputMatrix
というようなものを使わなかったんでしょう。
というようなことも,少し疑問に思ってくれるといいんだけど。
また,
行列のある要素を少しずつ変えてみると,像はどう変わるんだろう。
なんて思ってくれると嬉しいんだけど。
さあ,自分なりに,「やりたいこと」を考えてみましょう。
+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+
| やりたいこと |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+
14.4 対象を変える
これは少しなれないとできないかもしれないんで,ちょっとヒントをあげましょうね。
次は何を描いているんでしょう。
SUB DrawObject (a())
FOR t = 0 TO 1 STEP .01
x = 0
y = t
CALL TransForm(a(), x, y, Newx, Newy)
PSET (x, y), 7
PSET (Newx, Newy), 4
NEXT
FOR t = 0 TO 1 STEP .01
x = t
y = 1
CALL TransForm(a(), x, y, Newx, Newy)
PSET (x, y), 7
PSET (Newx, Newy), 4
NEXT
FOR t = 0 TO 1 STEP .01
x = 1
y = 1 - t
CALL TransForm(a(), x, y, Newx, Newy)
PSET (x, y), 7
PSET (Newx, Newy), 4
NEXT
FOR t = 0 TO 1 STEP .01
x = 1 - t
y = 0
CALL TransForm(a(), x, y, Newx, Newy)
PSET (x, y), 7
PSET (Newx, Newy), 4
NEXT
END SUB
14.5 行列を変える
このノウハウは,自分でも思いついてほしいけど。
でも,ちょっと難しいかな。変更のある部分,追加の部分のみを以下に書きます。
COMMON SHARED pi
pi = ATN(1) * 4
DIM a(2, 2)
SCREEN 12
CLS
MaxOfX = 10
MaxOfY = MaxOfX * 480 / 640
Memori = MaxOfX / 40
dp = MaxOfX / 300
WINDOW (-MaxOfX, MaxOfY)-(MaxOfX, -MaxOfY)
CALL SetMatrix(a())
CALL DrawObjectWithChange(a(), 1, 1, .5)
SUB DispMatrix (a())
FOR i = 1 TO UBOUND(a, 1)
FOR j = 1 TO UBOUND(a, 2)
PRINT a(i, j);
NEXT
PRINT
NEXT
END SUB
SUB DrawObjectWithChange (a(), i0, j0, ds)
DIM aa(2, 2)
FOR i = 1 TO 2
FOR j = 1 TO 2
aa(i, j) = a(i, j)
NEXT
NEXT
FOR s = 0 TO 10 STEP ds
aa(i0, j0) = a(i0, j0) + s * ds
LOCATE 1, 1
CALL DispMatrix(aa())
FOR t = 0 TO 2 * pi STEP .01
x = COS(t)
y = SIN(t)
CALL TransForm(aa(), x, y, Newx, Newy)
PSET (x, y), 7
PSET (Newx, Newy), 4
NEXT
NEXT
END SUB
14.6 自分の問題
さあ,じぶんなりに工夫をして問題を作ってみよう。昔の数学セミナーでは,「猫の一
次変換」なんていうのもあった。それをするには,「猫をどう描いたらいいか」なんてい
うことが具体的な課題になるわけですけどね。
この自分の問題に関する取り組みは,「課題」にしましょう。次ページを切って,提出
してね。
1995.11.
+−−−−−− 自分なりの課題 −−−−−+ 番号
| |
| | 氏名
| |
| |
| |
| |
| |
| |
| |
+−−−−−−−−−−−−−−−−−−−−−−−−−−−+
・自分なりにできたこと
・できなくて困っていること
・できないかもしれないけど,やってみたいこと