パソコンやスマホの高性能化と、超高速通信『5G』の到来で、
- 『AI』
- 『機械学習』
- 『xR』(VR/AR/MRをまとめてXRと呼びます)
- 『IoT』
- 『ドローン』
- 『自動運転』
- 『ビッグデータ』
- 『動画』
といった新しい分野がどんどん増えてくると予想されています。
参考記事
これらに共通するのはざっくり言えば、
とにかくたくさんのデータを瞬時に計算しているという事。
動く映像に関する用語・・フレームレート
普段からゲームで遊ぶ人なら知っているかもですが、
動画や動く映像に関する用語に、『FPS』という言葉があります。
- FPS・・Frame Rate Per Second (フレームレート パーセコンド)
動画というのはいわば『パラパラ漫画』のようなもので、
大量の写真をパラパラとめくって動いているように見せています。
Per Second(パーセコンド)は、1秒あたりという意味なので、
『FPS』というのは、
1秒の間に何枚パラパラ漫画が表示されるか、という単位になります。
- 1秒で1枚なら 1FPS。
- 1秒で10枚なら 10FPS。
- 1秒で30枚なら 30FPS。
- 1秒で60枚なら 60FPS。
ですね。
1秒で1枚パラパラするより、
1秒で10枚パラパラした方がなめらかになります。
- テレビのフレームレートが30FPS
- 映画が24FPS
- 最近のゲームは60FPS
だそうです。
膨大なデータ量を計算し続ける技術〜線形代数
例えばシューティングゲームの場合、
画面の中にはいろんな要素が含まれています。
- 自分のキャラクター
- 敵のキャラクター
- 自分が発射しているレーザービーム
- 敵が発射している弾
- アイテム
- 障害物
などなど・・・
これらはずっと止まっているわけではなく、つねにバラバラに動いているので、
それぞれに位置情報が必要になります。
例えば『30FPS』だとすると、
極端に言うと1秒間に30回もキャラクターの位置を計算することになります。
敵キャラクター、レーザービーム、敵の弾などももちろん何度も何度も計算されて、
動いているように見せています。
実はそこには『数学』の理論がこれでもかと使われていて、
その中でもメジャーなのが『線形代数(せんけいだいすう)』という方法になります。
線形代数でできること〜 空間をまとめてスッキリ書ける
『線形代数(せんけいだいすう)』は、
元々は直線を扱う学問だったそうですが、
後からどんどん膨らんできたそうで、
とてーも広い学問になっちゃったそうです。
ざっくり言うとこういった事ができるようになります。
- 空間を表現・・2次元も、3次元も
- 次元の変換・・3次元を2次元にしたり、2次元を3次元にしたり
- 式を簡単に・・複雑な数式をスッキリとまとめる
- たくさんの数字をまとめて考える・・n次元
- 近似の手段・・曲線を直線で近似(計算を少なくしつつ値を近づける)
座標だったり空間の位置を取得して、
それを1秒間の間に30回計算しなおしたりするために、
できるだけスッキリ書ける方法が使われるようになった、と言う事ですかね。
膨大な量のデータをスッキリ書けると言う事で、
『AI』『機械学習』『ビッグデータ』などにも使われています。
線形代数のはじめのいっぽ〜行列とベクトルを2次元で
『線形代数』は主に『行列』と『ベクトル』でできています。
『行列』は、縦と横に数字や文字が並んだものです。
$$\begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix}$$
$$\begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \\ 7 & 8 \end{pmatrix}$$
横が行で、縦が列と呼ばれます。
『ベクトル』は、
『物理学』の場合は『方向と向き』になりますが、
もうちょっと意味合いが広くなって、
『複数のデータを持つ値』というような意味になります。
『行列』と『ベクトル』を使う事によって、
2次元(平面)の場合なら、
- 拡大・縮小させたり
- 回転させたり
- ひっくり返したり
- ぐやっと伸ばしたり
ができるようになります。
とてもわかりやすい記事があったので詳細はこの記事をご覧ください。
2019/6/30 プログラミングでかっこいい映像が作れる『GLSL(シェーディング)』でも、『回転行列』が使われています。
参考記事
まとめ 線形代数をちょっとずつ覚えて遊んでみよう
『線形代数』は実は大学で習う分野なので、
教科書だけでやるとなかなかとっつきにくいし難しいと思うのですが、
まずは2次元だけに限定して、
- 拡大・縮小させたり
- 回転させたり
- ひっくり返したり
- ぐやっと伸ばしたり
といったことをプログラミングで遊びながら、
ちょっとずつ体感できるようになっていきたいなと思っています。
『数学・物理』関係ではこんな記事も読まれています。
1. 【P5.js】初心者向けの動画をリリースしました(プログラミング×数学物理)【Udemy】2. 【ベクトル】をわかりやすくするコツ〜『ベクトル』はただの数値の組み合わせです(4)【P5.js】
3. プログラムで数学も身につく 一石四鳥なクリエイティブコーディング
4. 【三角関数】の使い方〜わかりやすさ重視でまとめてみた【動画あり】
5. 【ラジアン】とは わかりやすくまとめてみた【初心者向け】
6. 【図解】波の用語や動きをプログラムも交えてまとめてみる【数学&物理】
7. 【微分】とは わかりやすくまとめてみた〜めっちゃすごいわり算【初心者向け】
8. 【シグマ(∑)】計算をわかりやすくまとめてみた【エクセルのsum】【初心者向け】
9. 【極座標 】とは【直交座標 】との違いや変換方法についてまとめてみた
10. 【虚数】【複素数】とは わかりやすくまとめてみた【初心者向け】
11. 【指数】とは わかりやすくまとめてみた【初心者向け】
12. 【対数】とは わかりやすくまとめてみた【初心者向け】
13. 順列・組み合わせ・階乗とは わかりやすくまとめてみた【数学】
14. 【確率(加法定理)】とは わかりやすくまとめてみた【初心者向け】
15. 【ベクトル場】と【速度ベクトル】とは わかりやすく【ドラクエのすべる床】
↓ ここから下は物理関連
1. プログラムで【加速度】をわかりやすくするために実際に動かしてみる(5)【P5.js】
2. 【流体力学】とは 圧力・密度・浮力をまとめてみた【初心者向け】
↓ ここから下はちょいムズカシイ
1. 【ネイピア数】とは わかりやすくまとめてみた【自然対数の底(e)】
2. 【ベクトル解析 勾配(grad)】わかりやすくまとめてみた
3. 【ベクトル解析 発散(div)】わかりやすくまとめてみた
4. 【テイラー展開】をわかりやすくまとめてみた【おすすめ動画あり】
アオキのツイッターアカウント。
この記事へのコメントはありません。