/// <summary> /// 他のvectorで初期化するためのコンストラクタ /// </summary> /// <param name="v"></param> public Vector2D(Vector2D v) { X = v.X; Y = v.Y; }
/// <summary> /// 他のベクトルを減算する /// </summary> /// <param name="v"></param> public void Sub(Vector2D v) { X -= v.X; Y -= v.Y; }
/// <summary> /// 外積を求める(2次元の外積の結果は定数) /// </summary> /// <param name="v"></param> /// <returns></returns> public double OuterProduct(Vector2D v) { return X * v.Y - Y * v.X; }
/// <summary> /// 内積を求める /// </summary> /// <param name="v"></param> /// <returns></returns> public double InnerProduct(Vector2D v) { return X * v.X + Y * v.Y; }
/// <summary> /// 近似による距離(絶対値)の算出。sqrtを使っていない分だけ速い /// </summary> /// <param name="v"></param> /// <returns></returns> public double Distance(Vector2D v) { double ax = global::System.Math.Abs(X - v.X); double ay = global::System.Math.Abs(Y - v.Y); if ( ax > ay ) { return ax + ay / 2; } else { return ay + ax / 2; } }
/// <summary> /// 他のベクトルを加算する /// </summary> /// <param name="v"></param> public void Add(Vector2D v) { X += v.X; Y += v.Y; }