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
        }