Esempio n. 1
0
        public void CubicInterpolationExtra()
        {
            var lut = new Lut {
                new LutPoint(-0.009994, 1.059),
                new LutPoint(-0.004998, 1.059),
                new LutPoint(0, 1.060),
                new LutPoint(0.005002, 1.063),
                new LutPoint(0.010007, 1.065),
                new LutPoint(0.015014, 1.068),
                new LutPoint(0.020024, 1.073),
                new LutPoint(0.025039, 1.078),
                new LutPoint(0.030057, 1.083),
                new LutPoint(0.03508, 1.089),
                new LutPoint(0.040106, 1.095),
            };

            lut.UpdateBoundingBox();

            var minX  = lut.MinX;
            var sizeX = lut.MaxX - lut.MinX;
            var minY  = lut.MinY;
            var sizeY = lut.MaxY - lut.MinY;

            lut = new Lut(lut.Select(x => new LutPoint((x.X - minX) / sizeX, (x.Y - minY) / sizeY)));
            lut.UpdateBoundingBox();

            BuildChart(s => {
                var min  = lut.MinX;
                var size = lut.MaxX - lut.MinX;

                for (var i = 0d; i <= 1d; i += 0.003)
                {
                    var x = lut.MinX + size * i;
                    s.Points.Add(new DataPoint(x, lut.InterpolateLinear(x)));
                }

                s.Color = Color.Black;
            }, s => {
                var min  = lut.MinX;
                var size = lut.MaxX - lut.MinX;

                for (var i = 0d; i <= 1d; i += 0.003)
                {
                    var x = lut.MinX + size * i;
                    s.Points.Add(new DataPoint(x, lut.InterpolateCubic(x)));
                }

                s.Color = Color.Green;
            });

            // interpolation itself
            #if !DEBUG
            Assert.IsTrue(lut.InterpolateCubic(0.003) < lut.InterpolateCubic(0.001));
            #endif
        }
Esempio n. 2
0
        public void CubicInterpolation() {
            var lut = new Lut {
                new LutPoint(1d, 1d),
                new LutPoint(2d, 1d),
                new LutPoint(4d, 5d),
                new LutPoint(5d, 3d),
            };

            // points
            Assert.AreEqual(1d, lut.InterpolateCubic(1d));
            Assert.AreEqual(1d, lut.InterpolateCubic(2d));
            Assert.AreEqual(3d, lut.InterpolateCubic(5d));

            // clamping
            Assert.AreEqual(1d, lut.InterpolateCubic(-1d));
            Assert.AreEqual(3d, lut.InterpolateCubic(5.7d));

            // interpolation itself
            Assert.IsTrue(lut.InterpolateCubic(1.9d) < 1d);
        }
Esempio n. 3
0
        public void CubicInterpolation()
        {
            var lut = new Lut {
                new LutPoint(1d, 1d),
                new LutPoint(2d, 1d),
                new LutPoint(4d, 5d),
                new LutPoint(5d, 3d),
            };

            // points
            Assert.AreEqual(1d, lut.InterpolateCubic(1d));
            Assert.AreEqual(1d, lut.InterpolateCubic(2d));
            Assert.AreEqual(3d, lut.InterpolateCubic(5d));

            // clamping
            Assert.AreEqual(1d, lut.InterpolateCubic(-1d));
            Assert.AreEqual(3d, lut.InterpolateCubic(5.7d));

            // interpolation itself
            Assert.IsTrue(lut.InterpolateCubic(1.9d) < 1d);
        }