public void projecting_different_dimensions_throws()
            {
                var u = new VectorF(5);
                var v = new VectorF(3);

                Assert.Throws <ArgumentOutOfRangeException>(() => u.GetProjected(v));
            }
            public void projection_example_4()
            {
                var u        = new VectorF(new[] { 1.0f });
                var v        = new VectorF(new[] { 6.0f });
                var expected = new VectorF(v);

                var actual = u.GetProjected(v);

                Assert.Equal(expected, actual);
            }
            public void projection_example_1()
            {
                var u        = new VectorF(new[] { -1.0f, 2, 1, 3 });
                var v        = new VectorF(new[] { 2.0f, -1, 3, 1 });
                var expected = u.GetScaled(2.0f / 15.0f);

                var actual = u.GetProjected(v);

                Assert.Equal(expected, actual);
            }
            public void projecting_zero_against_another_vector_results_in_zero()
            {
                var u        = new VectorF(new[] { 3.0f, -17, 5, -6 });
                var v        = new VectorF(4);
                var expected = new VectorF(4);

                var actual = u.GetProjected(v);

                Assert.Equal(expected, actual);
            }
            public void projecting_against_zero_results_in_same_vector()
            {
                var u        = new VectorF(4);
                var v        = new VectorF(new[] { -3.0f, 8, 5, -10 });
                var expected = new VectorF(v);

                var actual = u.GetProjected(v);

                Assert.Equal(expected, actual);
            }
            public void projecting_zero_size_returns_zero_vector()
            {
                var u        = new VectorF(0);
                var v        = new VectorF(0);
                var expected = new VectorF(v);

                var actual = u.GetProjected(v);

                Assert.Equal(expected, actual);
            }