private void PadOpenShortMethod(ref Curve fileDUTPattern) { int countOfPoints = _fileOpenPattern.CountOfPoints; for (int i = 1; i <= countOfPoints; i++) { double[] openPatternPoints = _fileOpenPattern.GetPoints(i); Matrix pad = new Matrix(_filePadPattern.GetPoints(i)), open = new Matrix(openPatternPoints), shortM = new Matrix(_fileShortPattern.GetPoints(i)), DUT = new Matrix(fileDUTPattern.GetPoints(i)); Matrix yPad = pad.FromSToY, yOpen = open.FromSToY, yShort = shortM.FromSToY, yDUT = DUT.FromSToY; Matrix yRes = ((yDUT - yPad).Reverse - (yShort - yPad).Reverse).Reverse - ((yOpen - yPad).Reverse - (yShort - yPad).Reverse).Reverse, res = yRes.FromYToS; fileDUTPattern.ChangePoints(i, res.A.Re, res.A.Im, res.C.Re, res.C.Im, res.B.Re, res.B.Im, res.D.Re, res.D.Im); } }
private void L2LMethod(ref Curve fileDUTPattern) { int countOfPoints = _fileLinePattern.CountOfPoints; for (int i = 1; i <= countOfPoints; i++) { double[] linePatternPoints = _fileLinePattern.GetPoints(i); Matrix line = new Matrix(linePatternPoints), twoLine = new Matrix(_fileTwoLinePattern.GetPoints(i)), DUT = new Matrix(fileDUTPattern.GetPoints(i)); Matrix aLine = line.FromSToA, aTwoLine = twoLine.FromSToA; Matrix PP = aLine * aTwoLine.Reverse * aLine, PR = PP.FromPPToPR, PL = PP.FromPPToPL, L = PL.Reverse * aLine * PR.Reverse; Matrix res = ((PL * L).Reverse * DUT.FromSToA * (L * PR).Reverse).FromAtoS; fileDUTPattern.ChangePoints(i, res.A.Re, res.A.Im, res.C.Re, res.C.Im, res.B.Re, res.B.Im, res.D.Re, res.D.Im); } }
private void OpenMethod(ref Curve fileDUTPattern) { int countOfPoints = _fileOpenPattern.CountOfPoints; for (int i = 1; i <= countOfPoints; i++) { double[] openPatternPoints = _fileOpenPattern.GetPoints(i); Matrix open = new Matrix(openPatternPoints), DUT = new Matrix(fileDUTPattern.GetPoints(i)); Matrix res = (DUT.FromSToY - open.FromSToY).FromYToS; fileDUTPattern.ChangePoints(i, res.A.Re, res.A.Im, res.C.Re, res.C.Im, res.B.Re, res.B.Im, res.D.Re, res.D.Im); } }