/// <summary> /// コンストラクタ /// </summary> /// <param name="x">X座標値</param> /// <param name="y">Y座標値</param> /// <param name="z">Z座標値</param> public Vector(double x, double y, double z) { Coord = new Vector3D(x, y, z); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="coord">方向ベクトル成分</param> public Vector(Vector3D coord) { Coord = coord; }
/// <summary> /// ベクトルの外積を計算する /// </summary> /// <param name="v1">ベクトル</param> /// <param name="v2">ベクトル</param> /// <returns>外積されたベクトル</returns> public static Vector3D CrossProduct(Vector3D v1, Vector3D v2) => new Vector3D(v1.Y * v2.Z - v1.Z * v2.Y, v1.Z * v2.X - v1.X * v2.Z, v1.X * v2.Y - v1.Y * v2.X);
/// <summary> /// 値が等しいか判断する /// </summary> /// <param name="v">ベクトル</param> /// <returns>等しい場合にはtrue</returns> public bool Equals(Vector3D v) => X == v.X && Y == v.Y && Z == v.Z;
/// <summary> /// ベクトルとスカラーの割り算 /// </summary> /// <param name="v">ベクトル</param> /// <param name="scalar">スカラー</param> /// <returns>割り算されたベクトル</returns> public static Vector3D Divide(Vector3D v, double scalar) => new Vector3D(v.X / scalar, v.Y / scalar, v.Z / scalar);
/// <summary> /// ベクトルの内積を計算する /// </summary> /// <param name="v1">ベクトル</param> /// <param name="v2">ベクトル</param> /// <returns>内積</returns> public static double DotProduct(Vector3D v1, Vector3D v2) => v1.X * v2.X + v1.Y * v2.Y + v1.Z * v2.Z;
/// <summary> /// ベクトルとスカラーの掛け算 /// </summary> /// <param name="v">ベクトル</param> /// <param name="scalar">スカラー</param> /// <returns>掛け算されたベクトル</returns> public static Vector3D Multiply(Vector3D v, double scalar) => Multiply(scalar, v);
/// <summary> /// スカラーとベクトルの掛け算 /// </summary> /// <param name="scalar">スカラー</param> /// <param name="v">ベクトル</param> /// <returns>掛け算されたベクトル</returns> public static Vector3D Multiply(double scalar, Vector3D v) => new Vector3D(scalar * v.X, scalar * v.Y, scalar * v.Z);
/// <summary> /// ベクトルの引き算 /// </summary> /// <param name="v1">ベクトル</param> /// <param name="v2">ベクトル</param> /// <returns>引き算されたベクトル</returns> public static Vector3D Subtract(Vector3D v1, Vector3D v2) => new Vector3D(v1.X - v2.X, v1.Y - v2.Y, v1.Z - v2.Z);
/// <summary> /// ベクトルの足し算 /// </summary> /// <param name="v1">ベクトル</param> /// <param name="v2">ベクトル</param> /// <returns>足し算されたベクトル</returns> public static Vector3D Add(Vector3D v1, Vector3D v2) => new Vector3D(v1.X + v2.X, v1.Y + v2.Y, v1.Z + v2.Z);
/// <summary> /// 2つのベクトルが等しいか判断する /// </summary> /// <param name="v1">ベクトル</param> /// <param name="v2">ベクトル</param> /// <returns>値が等しい場合にはtrue</returns> public static bool Equals(Vector3D v1, Vector3D v2) => v1.Equals(v2);