いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

蝶ネクタイ型変声機の実験を見せる

もうすぐ今年度初めての授業です。「授業開き」と言うようですね。この言葉、ぼくは今まで使ったことがありませんが。小中で使われているのかも知れません。ぼくの担当は数学なので大抵何かテーマを決めて「こんなに楽しいことがあります」みたいな話をいく…

新年度スタート! 今年度の計画。

試験範囲の授業が終わりそうもない! なんとかしなければ! ……というときはプリントを使います。生徒が板書を写す時間を節約できれば相当余裕ができます。穴埋めにでもしておけば生徒も「勉強したかな」というある程度の満足感は得られるでしょうし、今年は…

何その決まり?……な話

最初に勤めた学校は生徒が結構大変で(生徒指導面)、ぼくも学校を出てすぐだったのでカルチャーショックを受けました。「あり得ない……」と思ったことがたくさんあったのです。朝礼で生徒が並ばず、あちこちで輪になって話しています。間を教員が怒鳴りなが…

Unityでスクリプトを使って線分を描く(3)(初心者向け)

3回目です。前回、以下のようにすれば何度コールしてもエラーを出さずに線分を描画できるということを明らかにしました。が、このままではまずいということが分かりました。 //1本目 GameObject g = new GameObject(); var rd = g.AddComponent<LineRenderer>(); var pos =</linerenderer>…

Unityでスクリプトを使って線分を描く(2)(初心者向け)

今回の目標は次のように空間内に線分を描くことです。 前回、次の絵のように1本だけ描くことには成功しています。 そのときのコードは次の通りでした(なお、点を追加すれば折れ線は簡単に描けます)。 var renderer = gameObject.AddComponent<LineRenderer>(); var pos =</linerenderer>…

Unityでスクリプトを使って線分を描く(初心者向け)

制作中のゲームで線分を描画したくてネットを調べ、実験して、分かったことをまとめます。 とにかく初心者には重要なポイントが分かりません。長いコードは見るだけで尻込みすることも。最短のコードで、単機能を実現する例を挙げてもらえれば凄くうれしいの…

教員はクラスの平均点を上げた方がいいのか

公立高校でもやたら平均点にこだわる人がいて驚いたことがあります。いや、私立だとどうか、はっきりは知らないんですが。聞いた話では私立の学校で週番の先生が窓を閉め忘れ、雨が吹き込んでしまって減俸になったとか。多分公立高校では(管理職に怒られる…

教員に上の学校の知識は不要か?

ぼくは教育実習は中学校へ行きました。3週間、辛い日々でした……。いわゆる「指導案」をほぼ毎日書かなければならないんですが、もう形式ばっかりで、まあ「授業をやるのに最もよくできた書類」みたいな話も聞きますが、大変すぎでした。あまりに疲れて、家に…

教師のバトン…………

あはは、やっちゃったね……という感じです。文科省がそういうプロジェクトを立ち上げたのです。検索すればニュースが無数にヒットします。さあ、検索!! 要するに、今、教員の質の低下とか採用の倍率低下とか言われていて、現職の教員から「こういう素晴らし…

1が出続けたサイコロは、次に振ると1は出にくいのか?

学生のときサークルの何人かで遊んでいて、サイコロが続けて3回、1の目だったことがありました。これを見た工学の先輩が「じゃあ、次に振ると1の目が出る確率は1/6より小さいね」と言ったのを聞いて、ぼくは耳を疑いました。理系ならなおさらですが、こうい…

『C#ポケットリファレンス』紹介

最近、コンピュータ言語はC#ばかりを使っており、このリファレンスは大変重宝しています。 レビューを見ると意見はいろいろのようですが、個人的には素晴らしい! リファレンスのことに限りませんが、よく「その程度の情報はネットで手に入る」みたいな主張…

Unityでスケジュールに従って敵キャラを生成する方法

Unityで、ある瞬間からの時間を測り、2秒後、6秒後、19秒後で特定の動作をさせたいとしましょう。例えば…… Time.realtimeSinceStartup でプログラム起動からの経過時間を測れますが、これの値が2秒、6秒、19秒のときに敵キャラを生成したい、などというケー…

今年度を振り返って。Unityとゲームプログラミング今昔、教員のローカルルール

今年度の仕事は終わりました。このあと年度末まではシューティングゲームを書くことにします。飾りの部分以外は早くケリをつけたい……。 今年度は5月くらいまでは「写真から立体を再現する」というテーマでプログラミング(Pythonで)と実験を繰り返していま…

デフィー・ヘルマン鍵交換を例え話で

面白い本でした。強くお勧めします。特にデフィー・ヘルマン鍵交換の例え話が気に入りました。もちろん例え話ですから限界はありますが、ポイントをよく捉えていて驚きました。ときどき生徒にも話します。面白がる子もいます。今回はこれを紹介します。今、…

C#で変数に関数を代入する、デリゲートについてわかりやすく解説。

C#でデリゲートというのを使ってみましょう。Cで言うところの関数ポインタです。 2つの処理があり、異なるのは中で使う関数だけということがあります。1つめの処理では、その中で関数 add(x, y) を使うとしましょう。例なので、この add(x, y) は単純な足し…

敵機の移動に2つの曲線を使いたい。つなぎ目をどうするか?

シューティングゲームで、敵のキャラクタを式に従って動かします。空間の曲線なら、例えば だったらtが増えるとz軸の正の向きにグルグルとらせんを描きながら進みます。話題は少しそれますが、この式だって易しいけれど数学。「プログラミングに数学は不要…

英語の思い出。そろそろ英語の勉強を始めないと…….。

せっかく英語の勉強のためのテキストを買ったのに、まだ始めていません……。 著者の金谷先生は、すごく勉強になる面白い本を何冊も書いている方です。ブログでも何度も紹介しています。教員なので生徒には「進む分野にかかわらず、英語はやっておいた方がいい…

数学オリンピックの予想問題をどうぞ

ぼくの恩師の出題です。数学オリンピックの予想問題だそうな。 ---------- パーティーで4組の夫婦(8人)が会い、お互いに握手をしました。あらゆる組み合わせで、というわけではありません。つまりある人はある人と握手をしなかった、ということ…

簡単そうに見えるのに……解けますか?

前、同僚だった先生に聞かれました。下の図で、直線EFはGHと平行です。点Aが直線EF上を動くとき、角θが最大になるのはAG=AHのときであることを示してください。 センター試験か共通テストの問題を解くのに、これが必要だったそうです。証明ではなく、この事…

必要条件、十分条件とは何か

p、qを条件であるとします。数学で言う条件とは「xは偶数である」などのように変数に具体的な値を入れると真偽が定まるものでした。このとき、「pならばq」を条件文と呼びます。例えば「xが偶数ならばxは4の倍数である」などです。pを仮定、qを結論…

(新)ベジェ曲線とは何か

空間の中を戦闘機を動かしましょう。普通に数学でやるように空間内の曲線の式を使ってもよいですが、式では表しにくい曲線もあります。 図を見てください。線分p0p1を8:2に内分する点、線分p1p2を8:2に内分する点、線分p2p3を8:2に内分する点をそれぞれp4、p…

古いアニメと新しいアニメ、どっちがいい?

ここ10年とかはアニメは絵もストーリーも音楽も、クオリティが大変高くなりました。『天気の子』などは絵がメチャクチャきれい……という感じです。単純に比較しても意味はありませんが、YouTubeなどで昭和30年頃のアニソンなんかを見てみると、現代の作品はと…

任意に与えられた点が凸多面体の内部にあるかどうか判定する

与えられた点が空間内のこんな立体の内部にあるかどうか判定したいとします。立体は、与えられた頂点、8点で決まっています。 シューティングゲームなどで、ゲームを展開する空間のスクリーンに見えない部分では、基本的に戦闘機などを飛ばす必要はありませ…

Unityで左シフトキー、スペースキー、右方向キーを同時に認識できなかった話

Unityで、押されているキーを検出します。 Input.GetKey(KeyCode.LeftShift) (左シフトキー) Input.GetKey(KeyCode.RightArrow) (右方向キー) Input.GetKey(KeyCode.Space) (スペースキー) というコードで、押されているなら true、押されていないなら…

これでいいのか、進路講演会!?

高校では進路行事として「進路講演会」みたいなのが年に何回かセットされています。生徒は参加しなければなりません。教員が話す場合も業者の人が出てくることもあるし、保護者も参加できたりする場合も、会場が体育館のことも近くのホールのことも、と色々…

ロドリゲスの回転公式とは何か、何に使えるか

空間ベクトルの話です。図でベクトルrを、ベクトルnを回転の軸としてθだけ回します。例えばθ=60°なら、ベクトルrはベクトルsのところまで回ります。ベクトルnの終点から始点を眺め、反時計回りに角度を測ります。 ベクトルrからベクトルsを求めるた…

0.4から0.6くらいの乱数が他より多めに欲しいときどうするか

いろんなプログラミング言語にRandom()といった名前の関数があります。乱数を発生させます。仕様はいろいろですが、例えば0以上1以下の乱数が欲しいときにはRandom(0, 1)などと書けばよいのです。ゲームでランダムな場所に敵を発生させたいときなどに使えま…

Unityでスクリーン座標から空間内の座標を求める

3Dのシューティングゲームを作るとき、敵機が視界(スクリーン)から消えたときにその敵機を削除するようにプログラミングします(削除せずに放っておくと、見えないだけで存在し続けます。実際にはちょっと見えなくなって、軌道の関係ですぐまた視界に入る…

ガウス記号を使って小数点以下の任意の桁を四捨五入する

UnityにはMathfというクラスがあって、様々な数学の関数が使えます。例えばMathf.Sin()でsinを計算できます。プログラムに出てくる数値を四捨五入する必要があり、探したらMathf.Round()というのが見つかりました。ただ、これは名前からして「丸め」だけれど…

シューティングゲーム作成中。敵を表示して動かしました。

とりあえず……敵を出して動かしてみました。下の写真です。敵キャラは暫定でこの形。いずれもう少し変えますが。移動のコースは、敵キャラの生成場所と経過時間によって空間内の場所が決まるように数式を決めてやっています。キャラクタはもちろん正面が進行…