public void VelocityNormalized()
        {
            var p0 = new Vector3(-4, -4, -3);
            var p1 = new Vector3(2, -4, 3);
            var p2 = new Vector3(4, 4, 0);

            var myCurve = new QuadraticBezierCurve3D(p0, p1, p2);

            myCurve.Velocity(2, 1, 5).Should().BeEquivalentTo(new Vector3(10f, 3.9999998f, 7.5f));
            myCurve.Velocity(8, 2, 10).Should().BeEquivalentTo(new Vector3(6, 12, -1.5f));

            myCurve.Invoking(x => x.Velocity(15, 2, 5)).Should().Throw <ArgumentException>();
        }
        public void PointNormalized()
        {
            var p0 = new Vector3(-4, -4, -3);
            var p1 = new Vector3(2, -4, 3);
            var p2 = new Vector3(4, 4, 0);

            var myCurve = new QuadraticBezierCurve3D(p0, p1, p2);

            myCurve.Point(15, 15, 17).Should().BeEquivalentTo(p0);
            myCurve.Point(2, 1, 5).Should().BeEquivalentTo(new Vector3(-1.25f, -3.5f, -0.5625f));
            myCurve.Point(8, 2, 10).Should().BeEquivalentTo(new Vector3(2.75f, 0.5f, 0.9375f));
            myCurve.Point(1, -8, 1).Should().BeEquivalentTo(p2);

            myCurve.Invoking(x => x.Point(15, 2, 5)).Should().Throw <ArgumentException>();
        }