InnerProduct() 공개 정적인 메소드

public static InnerProduct ( Vector a, Vector b ) : double
a Vector
b Vector
리턴 double
예제 #1
0
        /// <summary>
        /// x × y。
        /// </summary>
        /// <param name="x">x</param>
        /// <param name="y">y</param>
        /// <returns>x × y</returns>
        public static Quaternion operator*(Quaternion x, Quaternion y)
        {
            double a = x.a * y.a - Vector.InnerProduct(x.u, y.u);
            Vector u = x.a * y.u + y.a * x.u + Vector.OuterProduct(x.u, y.u);

            return(new Quaternion(a, u));
        }
예제 #2
0
        /// <summary>
        /// 四元数を使って3次元空間上の回転。
        /// p × (0, x) × ~p を計算する(~p は p の共役)。
        /// </summary>
        /// <param name="p">回転軸/角を表す四元数</param>
        /// <param name="x">回転させたい点のベクトル</param>
        /// <returns>回転後の点のベクトル</returns>
        public static Vector Rotate(Quaternion p, Vector x)
        {
            Vector y = (p.a * p.a - p.u.Norm) * x;

            y += 2 * (Vector.InnerProduct(p.u, x) * p.u + p.a * Vector.OuterProduct(p.u, x));
            return(y);
        }