Exemple #1
0
        /// <summary>
        ///     Construct a plane from 3 coplanar points.
        /// </summary>
        /// <param name="point0">First point.</param>
        /// <param name="point1">Second point.</param>
        /// <param name="point2">Third point.</param>
        public void Redefine(Vector3F point0, Vector3F point1, Vector3F point2)
        {
            var edge1 = point1 - point0;
            var edge2 = point2 - point0;

            Vector3F.Cross(edge1, edge2, ref Normal);
            Normal.Normalize();
            D = -Normal.Dot(point0);
        }
Exemple #2
0
 public static void CalculateBasicFaceNormal(Vector3F v1, Vector3F v2, Vector3F v3, ref Vector3F result)
 {
     TempLeft.CopyFrom(v2);
     TempRight.CopyFrom(v3);
     TempLeft.Subtract(v1);
     TempRight.Subtract(v1);
     Vector3F.Cross(TempLeft, TempRight, ref result);
     result.Normalize();
 }
        /// <summary>
        ///     Devuelve el ángulo (en grados) entre v1 y v2.
        ///     <para>Ambos vectores se normalizan y quedan modificados.</para>
        ///     <para>Si uno de los vectores o los dos valen cero, devuelve 90º.</para>
        ///     <para>El ángulo devuelto varia entre 0 y 180 grados</para>
        /// </summary>
        /// <param name="v1"></param>
        /// <param name="v2"></param>
        /// <returns></returns>
        public static double Angle(Vector3F v1, Vector3F v2)
        {
            v1.Normalize();
            v2.Normalize();
            var rdot   = v1.Dot(v2);
            var result = Math.Acos(rdot);

            return(MathHelp.DegreesFromRadians((float)result));
        }
Exemple #4
0
        /// <summary>
        ///     Construct a plane from 3 coplanar points.
        /// </summary>
        /// <param name="point0">First point.</param>
        /// <param name="point1">Second point.</param>
        /// <param name="point2">Third point.</param>
        public Plane(Vector3F point0, Vector3F point1, Vector3F point2)
        {
            Normal = new Vector3F();
            var edge1 = point1 - point0;
            var edge2 = point2 - point0;

            Vector3F.Cross(edge1, edge2, ref Normal);
            Normal.Normalize();
            D = -Normal.Dot(point0);
        }
Exemple #5
0
        /// <summary>
        ///     Calculate a face normal, no w-information.
        /// </summary>
        /// <param name="v1"></param>
        /// <param name="v2"></param>
        /// <param name="v3"></param>
        /// <returns></returns>
        public static Vector3F CalculateBasicFaceNormal(Vector3F v1, Vector3F v2, Vector3F v3)
        {
            var normal = new Vector3F();
            var left   = v2 - v1;
            var right  = v3 - v1;

            Vector3F.Cross(left, right, ref normal);
            normal.Normalize();

            return(normal);
        }