−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
   応用数学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. +−−−−−−    自分なりの課題     −−−−−+  番号 |                           | |                           |  氏名 |                           | |                           | |                           | |                           | |                           | |                           | |                           | +−−−−−−−−−−−−−−−−−−−−−−−−−−−+ ・自分なりにできたこと ・できなくて困っていること ・できないかもしれないけど,やってみたいこと