예제 #1
0
 /// <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);
 }
예제 #2
0
        /// <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;
            }
        }
예제 #3
0
        /// <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);
                }
            }
        }
예제 #4
0
 /// <summary>
 /// Конструктор класса построения сплайна.
 /// </summary>
 /// <param name="splineCollection">
 /// Экземпляр класса <see cref="SplineCollection"/>.
 /// </param>
 public SplineMaker(SplineCollection splineCollection)
 {
     this.splineCollection = splineCollection;
 }