コード例 #1
0
ファイル: Vector3.cs プロジェクト: NTUST-PTL/PTL-Project
        /// <summary>
        /// Obtains the angle between two vectors.
        /// </summary>
        /// <param name="u">Vector3.</param>
        /// <param name="v">Vector3.</param>
        /// <returns>Angle in radians.</returns>
        public static double AngleBetween(Vector3 u, Vector3 v)
        {
            double cos = DotProduct(u, v) / (u.Modulus() * v.Modulus());

            if (cos >= 1.0)
            {
                return(0.0);
            }
            if (cos <= -1.0)
            {
                return(Math.PI);
            }

            return(Math.Acos(cos));
        }
コード例 #2
0
ファイル: Vector3.cs プロジェクト: NTUST-PTL/PTL-Project
        /// <summary>
        /// Normalizes the vector.
        /// </summary>
        /// <param name="u">Vector to normalize</param>
        /// <returns>A normalized vector.</returns>
        public static Vector3 Normalize(Vector3 u)
        {
            double mod = u.Modulus();

            if (MathHelper.IsOne(mod))
            {
                return(u); // the vector is already normalized
            }
            if (MathHelper.IsZero(mod))
            {
                return(NaN);
            }
            double modInv = 1 / mod;

            return(new Vector3(u.x * modInv, u.y * modInv, u.z * modInv));
        }
コード例 #3
0
ファイル: Vector3.cs プロジェクト: NTUST-PTL/PTL-Project
 /// <summary>
 /// Normalizes the vector.
 /// </summary>
 /// <param name="u">Vector to normalize</param>
 /// <returns>A normalized vector.</returns>
 public static Vector3 Normalize(Vector3 u)
 {
     double mod = u.Modulus();
     if (MathHelper.IsOne(mod))
         return u; // the vector is already normalized
     if (MathHelper.IsZero(mod))
         return NaN;
     double modInv = 1 / mod;
     return new Vector3(u.x*modInv, u.y*modInv, u.z*modInv);
 }
コード例 #4
0
ファイル: Vector3.cs プロジェクト: thishome153/netdxf
        /// <summary>
        /// Obtains the angle between two vectors.
        /// </summary>
        /// <param name="u">Vector3.</param>
        /// <param name="v">Vector3.</param>
        /// <returns>Angle in radians.</returns>
        public static double AngleBetween(Vector3 u, Vector3 v)
        {
            double cos = DotProduct(u, v) / (u.Modulus() * v.Modulus());

            return(Math.Acos(cos));
        }
コード例 #5
0
ファイル: Vector3.cs プロジェクト: NTUST-PTL/PTL-Project
        /// <summary>
        /// Obtains the angle between two vectors.
        /// </summary>
        /// <param name="u">Vector3.</param>
        /// <param name="v">Vector3.</param>
        /// <returns>Angle in radians.</returns>
        public static double AngleBetween(Vector3 u, Vector3 v)
        {
            double cos = DotProduct(u, v)/(u.Modulus()*v.Modulus());
            if (cos >= 1.0)
                return 0.0;
            if (cos <= -1.0)
                return Math.PI;

            return Math.Acos(cos);
        }