市民工学科 令和5年度 数値計算実習(第3回その2)
令和5年 10月12日(木) 4限目 15:10〜16:40
[練習問題\(\ 3−1\ \)の解答]
[練習問題\(\ 3−1\ \)の計算例] -->a=[1;0];
-->b=[2;1];
-->c=[1;2];
-->d=[0;1];
-->XY=[a,b,c,d,a];
-->plot(XY(1,:),XY(2,:))
この練習問題の図形は,次の図\(\ 3−2\ \)のようになります.
図\(\ 3−2\ \) 練習問題\(\ 3−1\ \)で出力される図形
1.2 図形を回転させてみよう
練習問題\(\ 3−1\ \)で出力された図形を原点のまわりで回転させることを考えましょう.次の例題を実行してみてください.
※ 変数\(\ XY\ \)の中にはすでに練習問題\(\ 3−1\ \)の行列が代入されているので,次のコマンドをそのまま入力してよいのですが,うまくいかなかったときは,練習問題\(\ 3−1\ \)のコマンドを再入力した後で次のコマンドを続けて入力して下さい.
図形を回転させる (練習問題\(\ 3−1\ \)の続き) -->th=30/180*%pi;
-->R=[cos(th),-sin(th);sin(th),cos(th)]
R =
0.8660254 - 0.5
0.5 0.8660254
-->XY2 = R*XY
XY2 =
column 1 to 4
0.8660254 1.2320508 - 0.1339746 - 0.5
0.5 1.8660254 2.2320508 0.8660254
column 5
0.8660254
0.5
-->plot(XY2(1,:),XY2(2,:))
-->plot(XY(1,:),XY(2,:))
図\(\ 3−3\ \)のように描画されます.
図\(\ 3−3\ \) 練習問題\(\ 3−1\ \)の図形を原点のまわりに左30度だけ回転させた図形
上記の例で定義した行列「\(\ R\ \)」は,「回転行列」を意味します.
ある頂点の座標の縦ベクトルをこの行列\(\ R\ \)の後ろから掛ければ,三角関数\((\mbox{sin},\ \mbox{cos})\)内で指定した角度(ラジアン)だけ原点のまわりで回転します.回転の方向は,反時計回りです.
ただし,上記のコマンドでは,回転行列\(\ R\ \)の後ろから行列\(\ XY\ \)を掛けていますが,これは「縦ベクトル\(\ a,b,c,d,a\ \)のすべてを一度に回転させる」ことを意味します.
さらに次のようにすれば,原点のまわりに左\(\ 30\ \)度ずつ連続で回転された図形が描画できます.
図形を連続して回転させる -->XY3 = R^2*XY; -->plot(XY3(1,:),XY3(2,:)) -->XY4 =R^3*XY; -->plot(XY4(1,:),XY4(2,:)) -->XY5 =R^4*XY; -->plot(XY5(1,:),XY5(2,:))
図\(\ 3−4\ \)のように描画されます.
図\(\ 3−4\ \) 練習問題\(\ 3−1\ \)の図形を原点のまわりに左\(\ 30\ \)度ずつ連続して回転させた図形
ところで,図形を何回か連続して回転させるのに,上記のように,何度も似たようなコマンドを入力するのは,たいへん面倒です.なんとかならないでしょうか.