public CPoint DirectIterated(CPoint source, CProjection projection, RGProcessor processor)
        {
            var c1MinusC0     = source.C1 - source.C0;
            var c2MunusC1     = source.C2 - source.C1;
            var c0C2MinusC1Sq = source.C0 * source.C2 - source.C1 * source.C1;
            var n1            = processor.OneDivN;

            var c0 = c1MinusC0 * c1MinusC0 + n1 * c0C2MinusC1Sq;
            var c1 = processor.Lambda * (c1MinusC0 * c2MunusC1 + n1 * c0C2MinusC1Sq);
            var c2 = processor.Lambda2 * (c2MunusC1 * c2MunusC1 + n1 * c0C2MinusC1Sq);

            var res = new CPoint(c0, c1, c2);

            res.Project(projection);
            return(res);
        }
        private CPoint ReverseIterated(CPoint source, CProjection projection, RGProcessor processor)
        {
            var c0MinusLambdaMinus1C1      = source.C0 - processor.LambdaMinus1 * source.C1;
            var c1MinusLambdaMinus1C2      = source.C1 - processor.LambdaMinus1 * source.C2;
            var c0C2MinusC1Sq              = source.C0 * source.C2 - source.C1 * source.C1;
            var nLambdaMinus2C0C2MinusC1Sq = processor.NLambdaMinus2 * c0C2MinusC1Sq;

            var c0 = c0MinusLambdaMinus1C1 * c0MinusLambdaMinus1C1 + nLambdaMinus2C0C2MinusC1Sq;
            var c1 = processor.LambdaMinus1 * c0MinusLambdaMinus1C1 * c1MinusLambdaMinus1C2 + nLambdaMinus2C0C2MinusC1Sq;
            var c2 = processor.LambdaMinus2 * c1MinusLambdaMinus1C2 * c1MinusLambdaMinus1C2 + nLambdaMinus2C0C2MinusC1Sq;

            var res = new CPoint(c0, c1, c2);

            res.Project(projection);
            return(res);
        }