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); }