ここをキャンプ地とするブログ

いきあたりばったり

Vector3*Matrix って書けるようにしたい

Vector3 hoge = Vector3.Transform(vec, mat);

をなんとか、

Vector3 hoge = vec * mat;

みたいにしたかったけど、作戦失敗。

Vector3を継承して operator * 付きのクラスにしよーかと思ったけど甘かった。

Vector3は構造体で、構造体は継承できない!!!ガーン。


将来的にVectorとかMatrixはラップして自前のものにしときたいんだけど。

一瞬、気合でXNA.Framework.Vector3と同等のインターフェスを持つ構造体を

自前で作るかと考えたけど、2秒でメンドくなった。


でもC#の構造体の勉強になった。

  • クラスに比べて軽量を目指した設計
  • 値型
  • 継承できない
  • スタックに作られる
  • 引数なしコンストラクタを自作できない
  • デストラクタがない

クラスとのキャラの違いがハッキリしてて面白い。