Пример #1
0
        public void dotProduct_AllGreaterThanTen()
        {
            vector = new Vector(12.0, 15.0, 20.0);
            vector2 = new Vector(20.0, 20.0, 20.0);

            Assert.AreEqual(((12.0 * 20.0) + (15.0 * 20.0) + (20.0 * 20.0)), vector.dotProduct(vector2));
        }
Пример #2
0
        public void dotProduct_WithNull()
        {
            vector = new Vector(1.0, 2.0, 3.0);
            vector2 = null;

            Assert.AreEqual(0.0, vector.dotProduct(vector2));

            vector2.dotProduct(vector);
        }
Пример #3
0
        public void dotProduct_NegativeValue()
        {
            vector = new Vector(1.0, 2.0, 3.0);
            vector2 = new Vector(-4.0, -25.0, -1.0);
            Assert.AreEqual((-4.0 -50.0 -3.0), vector.dotProduct(vector2));

            vector2 = new Vector(-4.0, 5.0, 1.0);
            Assert.AreEqual((-4.0 + 10.0 + 3.0), vector.dotProduct(vector2));
        }
Пример #4
0
 /// <summary>
 /// Calculate the dotProduct between this vector and another vector.
 /// </summary>
 /// <param name="vector">The other vector</param>
 /// <returns>The dotproduct</returns>
 public double dotProduct(Vector vector)
 {
     double returnValue = 0.0;
     if (vector != null)
     {
         returnValue = (this.x * vector.x) + (this.y * vector.y) + (this.z * vector.z);
     }
     return returnValue;
 }
Пример #5
0
        public void additionOperator()
        {
            vector = new Vector(1.0, 2.0, 3.0);
            vector2 = new Vector(15.0, 6.0, 0.0);

            checkVector = new Vector(16.0, 8.0, 3.0);
            Assert.IsTrue((vector + vector2).Equals(checkVector));
            Assert.IsTrue((vector2 + vector).Equals(checkVector));

            vector = new Vector(-1.0, -2.0, -3.0);
            checkVector = new Vector(14.0, 4.0, -3.0);
            Assert.IsTrue((vector + vector2).Equals(checkVector));
            Assert.IsTrue((vector2 + vector).Equals(checkVector));
        }
Пример #6
0
        /// <summary>
        /// Implements the mental workload (MWL) formula as defined in the scientific literature
        /// </summary>
        /// <param name="lipValue">The level of information processing</param>
        /// <param name="moValue">The mental occupancy</param>
        /// <param name="tssValue">The task set switches</param>
        /// <param name="frameCount">Number of tasks in the calculation frame</param>
        /// <returns>The calculated MWL-value</returns>
        public static double calculateMentalWorkLoad(double lipValue, double moValue, double tssValue, int frameCount)
        {
            //Console.WriteLine("lip = " + lipValue + " mo = " + moValue + " tss = " + tssValue);
            double mwlValue = 0;
            double normalizedTssValue = 0;

            // Define the bounds as tuples (lower bound, upper bound)
            Tuple<int, int> lipBounds = Tuple.Create(1, 3);
            Tuple<int, int> moBounds = Tuple.Create(0, 1);
            Tuple<int, int> tssBounds = Tuple.Create(0, Math.Max(frameCount - 1, 0));

            // Project all metrics on the [0, 1] interval
            double normalizedLipValue = (lipValue - lipBounds.Item1) / lipBounds.Item2;
            double normalizedMoValue = (moValue - moBounds.Item1) / moBounds.Item2;

            // Avoid NaN values!
            if (tssBounds.Item2 != 0)
            {
                normalizedTssValue = (tssValue - tssBounds.Item1) / tssBounds.Item2;
                Console.WriteLine(normalizedTssValue);
            }

            Vector diagonalVector = new Vector(1.0, 1.0, 1.0);
            Vector mwlVector = new Vector(normalizedLipValue, normalizedMoValue, normalizedTssValue);

            // The distance to the origin (the length of the input vector)
            // For now we use this as MWL value, since the formula appeared to be unuseable
            double distanceToOrigin = mwlVector.length();

            Vector mwlProjDiagonal = mwlVector.orthogonalProjection(diagonalVector);

            Vector zVector = mwlVector - mwlProjDiagonal;

            double distanceToDiagonal = zVector.length();
            mwlValue = distanceToOrigin - (distanceToDiagonal/2);

            return mwlValue;
        }
Пример #7
0
        public void dotProduct_AllZero()
        {
            vector = new Vector(0.0, 0.0, 0.0);

            Assert.AreEqual(0.0, vector.dotProduct(vector));
        }
Пример #8
0
        public void equalityTest_PerValue()
        {
            vector = new Vector(1.0, 2.0, 3.0);

            vector2 = new Vector(1.0, 2.0, 3.0);
            Assert.IsTrue(vector.Equals(vector2));

            vector2 = new Vector(0.0, 2.0, 3.0);
            Assert.IsFalse(vector.Equals(vector2));

            vector2 = new Vector(1.0, 0.0, 3.0);
            Assert.IsFalse(vector.Equals(vector2));

            vector2 = new Vector(1.0, 2.0, 0.0);
            Assert.IsFalse(vector.Equals(vector2));
        }
Пример #9
0
        public void orthogonalProjection_NegativeValues()
        {
            vector = new Vector(1.0, 2.0, 3.0);
            vector2 = new Vector(-4.0, -25.0, -1.0);

            double fraction = vector.dotProduct(vector2)/vector2.dotProduct(vector2);
            Vector newVector =  new Vector (fraction*(-4.0), (-25.0) * fraction, (-1.0)* fraction);
            Assert.IsTrue(newVector.Equals(vector.orthogonalProjection(vector2)));
        }
Пример #10
0
        public void orthogonalProjection_AllZero()
        {
            vector = new Vector(0.0, 0.0, 0.0);

            Assert.IsNull(vector.orthogonalProjection(vector));

            Assert.IsNotNull(vector.orthogonalProjection((new Vector(1.0, 1.0, 1.0))));
            Assert.AreEqual(new Vector(0.0, 0.0, 0.0), vector.orthogonalProjection((new Vector(1.0, 1.0, 1.0))));
        }
Пример #11
0
        public void orthogonalProjection_AllGreaterThanTen()
        {
            vector = new Vector(12.0, 15.0, 20.0);
            vector2 = new Vector(20.0, 20.0, 20.0);

            double fraction = vector.dotProduct(vector2) / vector.dotProduct(vector);
            Vector newVector = new Vector(12 * fraction, 15 * fraction, 20 * fraction);
        }
Пример #12
0
        public void length_ValidInput()
        {
            vector = new Vector(-4.0, -25.0, -1.0);
            double expected = Math.Sqrt(vector.dotProduct(vector));

            Assert.AreEqual(expected, vector.length());

            vector2 = new Vector(12.0, 15.0, 20.0);
            expected = Math.Sqrt(vector2.dotProduct(vector2));
            Assert.AreEqual(expected, vector2.length());
        }
Пример #13
0
 public void length_NullInput()
 {
     vector = null;
     vector.length();
 }
Пример #14
0
        public void length_AllZero()
        {
            vector = new Vector(0.0, 0.0, 0.0);

            Assert.AreEqual(0.0, vector.length());
        }
Пример #15
0
 public void dotProduct_WithSelf()
 {
     vector = new Vector(1.0, 2.0, 3.0);
     Assert.AreEqual(1+4+9, vector.dotProduct(vector));
 }
Пример #16
0
        /// <summary>
        /// Calculates the orthogonal projection of a vector on a differnet vector
        /// </summary>
        /// <param name="toVector">The vector which is projected upon</param>
        /// <returns>The projected vector</returns>
        public Vector orthogonalProjection(Vector toVector)
        {
            Vector returnVector = null;
            if (!((toVector.x == 0) && (toVector.y == 0) && (toVector.z == 0)))
            {
                double fraction = this.dotProduct(toVector) / toVector.dotProduct(toVector);
                returnVector = new Vector(fraction * toVector.x, fraction * toVector.y, fraction * toVector.z);
            }

            return returnVector;
        }
Пример #17
0
 public void orthogonalProjection_Self()
 {
     vector = new Vector(1.0, 2.0, 3.0);
     Assert.IsTrue(vector.Equals(vector.orthogonalProjection(vector)));
 }
Пример #18
0
        public void substractionOperator()
        {
            vector = new Vector(1.0, 2.0, 3.0);
            vector2 = new Vector(15.0, 6.0, 0.0);

            checkVector = new Vector(-14.0, -4.0, 3.0);
            Assert.IsTrue((vector - vector2).Equals(checkVector));
            Assert.IsFalse((vector2 - vector).Equals(checkVector));

            vector = new Vector(-1.0, -2.0, -3.0);
            checkVector = new Vector(16.0, 8.0, 3.0);
            Assert.IsTrue((vector2 - vector).Equals(checkVector));
            Assert.IsFalse((vector - vector2).Equals(checkVector));
        }
Пример #19
0
        public void equalityTest_Logic()
        {
            vector = new Vector(1.0, 2.0, 3.0);
            vector2 = new Vector(15.0, 6.0, 0.0);

            Assert.IsTrue(vector.Equals(vector));
            Assert.AreEqual(vector.Equals(vector2), vector2.Equals(vector));
            Assert.IsFalse(vector.Equals(null));
        }