より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

こんなクラス、標準ライブラリにあったの!?  三次元ベクトルを扱うVector3!

今、必死になって行列とベクトルを必死に勉強し直しています。

高校数学を30過ぎて勉強するという。

学生時代は必死勉強しないとならんのだなと、つくづく思わされています。

私は、プログラマーなので、ただ数学を学ぶだけでなく、プログラムに落とし込めるかも重要です。

今回勉強することに関係なく、以前から三次元については以下のようなクラスを独自に定義して実装していました。

以下のようなクラスですね。

    public class Vector
    {
        /// <summary>
        /// float型のX座標
        /// </summary>
        public float X { set; get; }

        /// <summary>
        /// float型のY座標
        /// </summary>
        public float Y { set; get; }

        /// <summary>
        /// float型のZ座標
        /// </summary>
        public float Z { set; get; }
}

実は、これ、Vector3というクラスがSystem.Numericライブラリにあります。

docs.microsoft.com

えー、こんなのあったの!?と

このクラスを使えば、一通りのこと、むしろ自分が必要なこと以上のこともできます。

ベクトルとしてのスカラー長も求められますし、内積(ドット積)や外積(クロス積)を求めることも可能です。

Vector3Dクラス同士をa -b とするだけで、差分を求めることも出来るように実装されています。

これを自分で実装すると、あれー、どうやって-や+を実装するんだっけなー、とかそういうのも不要です。

それどころか、以下みたいな計算も可能です。

            var a = new Vector3(100, 20, 10);            
            Console.WriteLine(2 * a);

なんで、手組みしてたんだ自分! 気づけやと思わされた成人式の午後でした。

これで、大人の階段を一歩進みました。