Exemple #1
0
        public Point3D GetValue3D(double d)
        {
            //Для вычисления значения в точке нужно знать угол излома в данной точке
            //Зная угол излома, будем знать какой фильтр применять

            //Вычисляем сглаженное значение угла в точке d (Значение 1 - соответствует углу 2*PI)
            var corner = _blurCompiler.GetValue(_cornerInterpolation.GetValue, d);
            var scale  = corner;

            //corner = GetCornerDerValue(d);
            //scale = Math.Max(0, 1 - corner);

            return(_blurCompiler.GetValue3D(_linearCompiler.GetValue3D, d, scale));
        }
Exemple #2
0
        public BezierCurve Resolve(double d0, double d1)
        {
            var p0 = _blurCompiler.GetValue3D(_linearCompiler.GetValue3D, d0);
            var p3 = _blurCompiler.GetValue3D(_linearCompiler.GetValue3D, d1);

            var delta = 0.000001D;// *p0.Distance(p3);

            var s0 = _blurCompiler.GetDerivative(_linearCompiler.GetValue3D, d0, delta);
            var s1 = _blurCompiler.GetDerivative(_linearCompiler.GetValue3D, d1, delta);

            var step = (d1 - d0) / 3D;
            var m0   = _blurCompiler.GetValue3D(_linearCompiler.GetValue3D, d0 + step);
            var m1   = _blurCompiler.GetValue3D(_linearCompiler.GetValue3D, d0 + step * 2);

            return(BezierCurve.ResolveXY(p0.ToPointD(), m0.ToPointD(), m1.ToPointD(), p3.ToPointD(), new PointD(s0.X, s0.Y), new PointD(s1.X, s1.Y)));
        }