エクセルvbaのクラスモジュールってのを勉強中。
目的は物理学関係の数式を計算するときに、単位っちゅうか次元も変数の文字の中に含めたい。で、例えばキロからメガへの換算とか、次元が異なる変数の加算にはエラーを返すとか、そういうのをプログラムしたいのだけど。
どうやって設計したらいいかなあ。まずは力学の分野に絞るとして、次元は質量、長さ、時間の3つだけとする。
- 1つの変数は数値と次元をもっていて、2つの変数の加算は次元が一致していないとダメ。
- 単位換算できるように、特定の基準単位から見た換算係数も一緒に持っている必要がある。基準はやっぱSI単位か。
- 出力値の単位をどうやって指定する? 2つの変数の加算をするときは必ず2番目の変数の単位で返すようにするか。
- 物理量の数値部分は実数だけど、それぞれの次元は有理数に限定される? 物理量クラスの前に有理数クラスが必要か?
と言うか、そもそもこれ誰か開発してないのか。ちょっと探した限りでは見つからないのだけど。
追記:
先例をやっと見つけた。こういうのは流石と言うべきかWolfram。
reference.wolfram.com