private void NineAffine_CalculateDxVector_ValidDxVector() { FillListsCoordinationData(PathToTxt, out var srcSC, out var dstSC); var dxVectorExpected = ReadControlDataFromFile(PathToTxt + "\\dxVector.txt", 9, 1).Column(0); var a9Instance = new NineAffine(srcSC, dstSC); var eMatrix = a9Instance.CreateEMatrixTst(); var fMatrix = a9Instance.CreateFMatrixTst(); var gMatrix = a9Instance.CreateGMatrixTst(); var rotMatrix = a9Instance.CalculateRotationMatrixTst(eMatrix, fMatrix, gMatrix); var mMatrixTst = a9Instance.CreateMMatrixTst(); var nMatrixTst = a9Instance.CreateNMatrixTst(); var pMatrixTst = a9Instance.CreatePMatrixTst(); var scaleMatrix = a9Instance.CalculateScaleMatrixTst(mMatrixTst, nMatrixTst, pMatrixTst); var aMatrix = a9Instance.CreateAMatrixTst(rotMatrix, scaleMatrix); var diagonalRot = Matrix <double> .Build.DenseDiagonal(3, 3, 1); var diagonalScale = Matrix <double> .Build.DenseDiagonal(3, 3, 1); var lVector = a9Instance.CreateLVectorTst(diagonalRot, diagonalScale); var dxVectorActual = a9Instance.CreateDxVectorTst(aMatrix, lVector); for (int row = 0; row < dxVectorActual.Count; row++) { Assert.Equal(dxVectorExpected[row], dxVectorActual[row], 8); } }
private void NineAffine_CreateAMatrix_ValidAMatrix() { FillListsCoordinationData(PathToTxt, out var srcSC, out var dstSC); var aMatrixExpected = ReadControlDataFromFile(PathToTxt + "\\aMatrix.txt", 30, 9); var a9Instance = new NineAffine(srcSC, dstSC); var eMatrix = a9Instance.CreateEMatrixTst(); var fMatrix = a9Instance.CreateFMatrixTst(); var gMatrix = a9Instance.CreateGMatrixTst(); var rotMatrix = a9Instance.CalculateRotationMatrixTst(eMatrix, fMatrix, gMatrix); var mMatrixTst = a9Instance.CreateMMatrixTst(); var nMatrixTst = a9Instance.CreateNMatrixTst(); var pMatrixTst = a9Instance.CreatePMatrixTst(); var scaleMatrix = a9Instance.CalculateScaleMatrixTst(mMatrixTst, nMatrixTst, pMatrixTst); var aMatrixActual = a9Instance.CreateAMatrixTst(rotMatrix, scaleMatrix); for (int row = 0; row < aMatrixActual.RowCount; row++) { for (int col = 0; col < aMatrixExpected.ColumnCount; col++) { Assert.Equal(aMatrixExpected[row, col], aMatrixActual[row, col], 3); } } }
private void CalculateParameters(object sender, RoutedEventArgs e) { if (_sourcePoints.Count == 0) { MessageBox.Show("Список исходных координат не может быть меньше 0", "Ошибка выполнения", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (_destinationPoints.Count == 0) { MessageBox.Show("Список конечных координат не может быть меньше 0", "Ошибка выполнения", MessageBoxButton.OK, MessageBoxImage.Error); return; } var srcSc = new SystemCoordinate(_sourcePoints); var dstSc = new SystemCoordinate(_destinationPoints); var nip = new NewtonIterationProcess(srcSc, dstSc); NipParams.ItemsSource = FillParamsList(nip); var a9 = new NineAffine(srcSc, dstSc); A9Params.ItemsSource = FillParamsList(a9); var lp = new LinearProcedure(srcSc, dstSc); LpParams.ItemsSource = FillParamsList(lp); var svd = new SingularValueDecomposition(srcSc, dstSc); SvdParams.ItemsSource = FillParamsList(svd); var nipHelmert = new Helmert(srcSc).FromSourceToDestinationByParameters(nip.DeltaCoordinateMatrix, nip.RotationMatrix, nip.M).GetSubtractList(dstSc); NipDataGrid.ItemsSource = RoundList(nipHelmert); var a9Helmert = new Helmert(srcSc).FromSourceToDestinationByParameters(a9.DeltaCoordinateMatrix, a9.RotationMatrix, a9.M).GetSubtractList(dstSc); A9DataGrid.ItemsSource = RoundList(a9Helmert); var lpHelmert = new Helmert(srcSc).FromSourceToDestinationByParameters(lp.DeltaCoordinateMatrix, lp.RotationMatrix, lp.M).GetSubtractList(dstSc); LinearDataGrid.ItemsSource = RoundList(lpHelmert); var svdHelmert = new Helmert(srcSc).FromSourceToDestinationByParameters(svd.DeltaCoordinateMatrix, svd.RotationMatrix, svd.M).GetSubtractList(dstSc); SvdDataGrid.ItemsSource = RoundList(svdHelmert); }
private void NineAffine_FormingMMatrix_ValidMMatrix() { FillListsCoordinationData(PathToTxt, out var srcSC, out var dstSC); var mMatrixExpected = ReadControlDataFromFile(PathToTxt + "\\mMatrix.txt", 3, 3); var a9Instance = new NineAffine(srcSC, dstSC); Matrix <double> mMatrixActual = a9Instance.CreateMMatrixTst(); for (int row = 0; row < mMatrixActual.RowCount; row++) { for (int col = 0; col < mMatrixExpected.ColumnCount; col++) { Assert.Equal(mMatrixExpected[row, col], mMatrixActual[row, col], 8); } } }
private void NineAffine_CreateLMatrix_ValidLMatrix() { FillListsCoordinationData(PathToTxt, out var srcSC, out var dstSC); var lVectorExpected = ReadControlDataFromFile(PathToTxt + "\\lVector.txt", 30, 1).Column(0); var a9Instance = new NineAffine(srcSC, dstSC); var rotMatrix = Matrix <double> .Build.DenseDiagonal(3, 3, 1); var scaleMatrix = Matrix <double> .Build.DenseDiagonal(3, 3, 1); var lVectorActual = a9Instance.CreateLVectorTst(rotMatrix, scaleMatrix); for (int row = 0; row < lVectorActual.Count; row++) { Assert.Equal(lVectorExpected[row], lVectorActual[row], 8); } }
private void NineAffine_CalculateScaleMatrix_ValidScaleMatrix() { FillListsCoordinationData(PathToTxt, out var srcSC, out var dstSC); var scaleMatrixExpected = ReadControlDataFromFile(PathToTxt + "\\baseScaleMatrix.txt", 3, 3); var a9Instance = new NineAffine(srcSC, dstSC); var mMatrixTst = a9Instance.CreateMMatrixTst(); var nMatrixTst = a9Instance.CreateNMatrixTst(); var pMatrixTst = a9Instance.CreatePMatrixTst(); Matrix <double> rotMatrixActual = a9Instance.CalculateScaleMatrixTst(mMatrixTst, nMatrixTst, pMatrixTst); for (int row = 0; row < rotMatrixActual.RowCount; row++) { for (int col = 0; col < scaleMatrixExpected.ColumnCount; col++) { Assert.Equal(scaleMatrixExpected[row, col], rotMatrixActual[row, col], 4); } } }
private void NineAffine_CalculateRotationMatrix_ValidRotationMatrix() { FillListsCoordinationData(PathToTxt, out var srcSC, out var dstSC); var rotMatrixExpected = ReadControlDataFromFile(PathToTxt + "\\baseRotMatrix.txt", 3, 3); var a9Instance = new NineAffine(srcSC, dstSC); var eMatrix = a9Instance.CreateEMatrixTst(); var fMatrix = a9Instance.CreateFMatrixTst(); var gMatrix = a9Instance.CreateGMatrixTst(); Matrix <double> rotMatrixActual = a9Instance.CalculateRotationMatrixTst(eMatrix, fMatrix, gMatrix); for (int row = 0; row < rotMatrixActual.RowCount; row++) { for (int col = 0; col < rotMatrixExpected.ColumnCount; col++) { Assert.Equal(rotMatrixExpected[row, col], rotMatrixActual[row, col], 5); } } }
private void NineAffine_Iteration_ValidIteration() { FillListsCoordinationData(PathToTxt, out var srcSC, out var dstSC); var a9Instance = new NineAffine(srcSC, dstSC); _testOutputHelper.WriteLine("DC\n"); foreach (var t in a9Instance.DeltaCoordinateMatrix.Vector) { _testOutputHelper.WriteLine(t.ToString()); } _testOutputHelper.WriteLine("rot\n"); for (int row = 0; row < a9Instance.RotationMatrix.Matrix.RowCount; row++) { for (int col = 0; col < a9Instance.RotationMatrix.Matrix.ColumnCount; col++) { _testOutputHelper.WriteLine(a9Instance.RotationMatrix.Matrix[row, col].ToString()); } } _testOutputHelper.WriteLine("scale\n"); _testOutputHelper.WriteLine(a9Instance.M.ToString()); }