« C# (12) ソリューションとプロジェクト | トップページ | プログラミング講座(187) 開発方針の変更 »

2020/03/15

プログラミング講座(186) アフィン変換

Anime の作成からちょっと脱線します。Shapes の移動・回転・拡大/縮小には Move, Rotate, Zoom といった操作が用意されていますが、自前で計算するにはアフィン変換という行列の掛け算が便利です。Small Basic には行列を扱うライブラリがないので、自分で作り始めました。

行列(matrix)を表現するのに Small Basic のジャグ配列(配列の配列)を利用しました。行列演算のサブルーチンに行列の名前を渡せるように以下のような構造にしました。

matrix[名前]["cols"]
matrix[名前]["rows"]
matrix[名前]["values"][行番号][列番号]

プログラム NGR465 で行列の足し算と掛け算を作りました。これをベースに3次元の回転を計算させたのがプログラム JXK757 です。

Ethanol

エタノールの分子をY軸回りに回転させています。このプログラムではベクトルもスカラもそれぞれ1列、1行1列の matrix として表すことで、同じ Matrix_Mul という掛け算のサブルーチンを使っています。計算できるのは、行列×行列、行列×ベクトルとベクトル×スカラです。順番が違うとエラーになります。(スカラ×スカラもやろうと思えばできます。)

関連項目

|

« C# (12) ソリューションとプロジェクト | トップページ | プログラミング講座(187) 開発方針の変更 »

Small Basic」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« C# (12) ソリューションとプロジェクト | トップページ | プログラミング講座(187) 開発方針の変更 »