Ejemplo n.º 1
0
 public void Set(CVector4 v)
 {
     this.x = v.x;
     this.y = v.y;
     this.z = v.z;
     this.w = v.w;
 }
Ejemplo n.º 2
0
 public CVector4(CVector4 v)
 {
     this.x = v.x;
     this.y = v.y;
     this.z = v.z;
     this.w = v.w;
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 4方向ベクトルと4x4行列の積
 /// </summary>
 /// <param name="dv">出力先ベクトル</param>
 /// <param name="v">計算用ベクトル</param>
 /// <param name="m">計算用行列</param>
 public static void MatApply4(CVector4 dv, CVector4 v, CMatrix4 m)
 {
     dv.x = v.x * m.m[0, 0] + v.y * m.m[1, 0] + v.z * m.m[2, 0] + v.w * m.m[3, 0];
     dv.y = v.x * m.m[0, 1] + v.y * m.m[1, 1] + v.z * m.m[2, 1] + v.w * m.m[3, 1];
     dv.z = v.x * m.m[0, 2] + v.y * m.m[1, 2] + v.z * m.m[2, 2] + v.w * m.m[3, 2];
     dv.z = v.x * m.m[0, 3] + v.y * m.m[1, 3] + v.z * m.m[2, 3] + v.w * m.m[3, 3];
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 外積を求める
        /// </summary>
        /// <param name="v1">入力ベクトル1</param>
        /// <param name="v2">入力ベクトル2</param>
        /// <returns>外積ベクトル</returns>
        public static CVector4 Cross(CVector4 v1, CVector4 v2)
        {
            CVector4 v = new CVector4();

            v.x = v1.y * v2.z - v1.z * v2.y;
            v.y = v1.z * v2.x - v1.x * v2.z;
            v.z = v1.x * v2.y - v1.y * v2.x;
            v.w = 0.0f;
            return(v);
        }
Ejemplo n.º 5
0
        /// <summary>
        ///  法線ベクトルを求める
        /// </summary>
        /// <param name="v1">入力ベクトル1</param>
        /// <param name="v2">入力ベクトル2</param>
        /// <param name="v3">入力ベクトル3</param>
        /// <returns>法線ベクトル</returns>
        public static CVector4 Normal(CVector4 v1, CVector4 v2, CVector4 v3)
        {
            CVector4 v = new CVector4();
            CVector4 a = new CVector4();
            CVector4 b = new CVector4();

            a = v2 - v1;
            b = v3 - v2;
            v = CVector4.Cross(a, b);
            v = v.Normalize();
            return(v);
        }
Ejemplo n.º 6
0
        // 評価
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            CVector4 v = obj as CVector4;

            if ((object)v == null)
            {
                return(false);
            }

            return((this.x == v.x) && (this.y == v.y) && (this.z == v.z) && (this.w == v.w));
        }
Ejemplo n.º 7
0
 /// <summary>
 /// 内積を求める
 /// </summary>
 /// <param name="v1">入力ベクトル1</param>
 /// <param name="v2">入力ベクトル2</param>
 /// <returns>内積値</returns>
 public static float Dot(CVector4 v1, CVector4 v2)
 {
     return(v1.x * v2.x + v1.y * v2.y + v1.z * v2.z);
 }