/// <summary> /// Конструктор класса взаимодействия с диалоговыми окнами. /// </summary> /// <param name="mainWindow"> /// Экземпляр класса <see cref="MainWindow"/>. /// </param> /// <param name="drawingClass"> /// Экземпляр класса <see cref="DrawingClass"/>. /// </param> /// <param name="splineCollection"> /// Экземпляр класса <see cref="SplineCollection"/>. /// </param> public OpenSaveDialogs(MainWindow mainWindow, DrawingClass drawingClass, SplineCollection splineCollection) { this.mainWindow = mainWindow; this.drawingClass = drawingClass; this.splineCollection = splineCollection; pointsListDialogs = new PointsListDialogs(mainWindow); }
/// <summary> /// Метод высчитывания значений точек вектора узлов в диапазоне от 0 до 1. /// Первые <see cref="splineOrder"/> точек равны 0, а последние /// <see cref="splineOrder"/> - 1. Точки, лежащие между точками 0 и 1, /// получают значения такие, что knot_(i+1) - knot_i = const для i \in /// (<see cref="splineOrder"/>;knotsAmount-<see cref="splineOrder"/>). /// </summary> /// <param name="controlPointsAmount"> /// Количество опорных точек. /// </param> /// <param name="splineCollection"> /// Объект класса-контейнера SplineCollection с информацией об элементах /// сплайна. /// </param> public void CalculateKnotsVektor(int controlPointsAmount, SplineCollection splineCollection) { int knotsAmount = controlPointsAmount + splineOrder; splineCollection.KnotsVector = new double[knotsAmount]; double step = 1d / (knotsAmount - 2 * splineOrder + 1); for (int i = 0; i < splineOrder; i++) { splineCollection.KnotsVector[i] = 0; } for (int i = splineOrder; i < knotsAmount - splineOrder; i++) { splineCollection.KnotsVector[i] = splineCollection.KnotsVector[i - 1] + step; } for (int i = knotsAmount - splineOrder; i < knotsAmount; i++) { splineCollection.KnotsVector[i] = 1; } }
/// <summary> /// Метод взаимодействия с диалоговым окном открытия файла. Открывается /// файл ".txt" или ".dbsp". /// </summary> /// <param name="fileParser"> /// Экземпляр класса <see cref="FileParser"/>. /// </param> /// <param name="splineCollection"> /// Экземпляр класса <see cref="SplineCollection"/>. /// сплайна. /// </param> public void OpenFile(FileParser fileParser, SplineCollection splineCollection) { pointsListDialogs.splineCollection = splineCollection; openFileDialog = new OpenFileDialog { Filter = "Text files (*.txt)|*.txt|DeBoorsSplines" + " files (*.dbsp)|*.dbsp|All files (*.*)|*.*" }; if (openFileDialog.ShowDialog() == true) { try { Path = openFileDialog.FileName; fileParser.ReadFile(Path, splineCollection); pointsListDialogs.SetPointsList(); OnPointsRenewer = drawingClass.DrawControlLines; } catch (FileException e) { OnPointsRenewer = null; ShowErrorMessage(e.Message); } catch (IOException e) { OnPointsRenewer = null; ShowErrorMessage(e.Message); } catch (Exception e) { OnPointsRenewer = null; ShowErrorMessage(e.Message); } } }
/// <summary> /// Конструктор класса построения сплайна. /// </summary> /// <param name="splineCollection"> /// Экземпляр класса <see cref="SplineCollection"/>. /// </param> public SplineMaker(SplineCollection splineCollection) { this.splineCollection = splineCollection; }