private void btnGetFuncAlongSection_Click(object sender, EventArgs e)
        {
            foreach (SectionDescription sectionDescription in sectionsList)
            {
                PointD p1 = sectionDescription.p1;
                PointD p2 = sectionDescription.p2;
                bool   fromMarginToMargin = false;

                SectionDescription currSection = new SectionDescription(p1, p2, true);

                LineDescription2D l1 = currSection.SectionLine;

                DenseMatrix dmValues         = (DenseMatrix)currImgData.DmSourceData.Clone();
                DenseMatrix dmDistanceToLine = (DenseMatrix)currImgData.DmSourceData.Clone();
                dmDistanceToLine.MapIndexedInplace((row, col, dVal) =>
                {
                    PointD currPt = new PointD(col, row);

                    double dist = currPt.DistanceToLine(l1);
                    return(dist);
                });

                List <Tuple <PointD, double> > dataArray = new List <Tuple <PointD, double> >();
                for (int row = 0; row < dmValues.RowCount; row++)
                {
                    for (int col = 0; col < dmValues.ColumnCount; col++)
                    {
                        if (dmDistanceToLine[row, col] <= sectionGapWidth)
                        {
                            dataArray.Add(new Tuple <PointD, double>(new PointD(col, row), dmValues[row, col]));
                        }
                    }
                }

                List <Tuple <double, double> > dataArrayRotated = dataArray.ConvertAll((tpl) =>
                {
                    Vector2D pointVector = l1.p0.ToVector2D(tpl.Item1);
                    double projection    = pointVector * l1.directionVector;
                    return(new Tuple <double, double>(projection, tpl.Item2));
                });


                double arrayMinPosition = dataArrayRotated.Min <Tuple <double, double> >(tpl1 => tpl1.Item1);
                double arrayMaxPosition = dataArrayRotated.Max <Tuple <double, double> >(tpl1 => tpl1.Item1);
                if (!fromMarginToMargin)
                {
                    Vector2D pointVector      = l1.p0.ToVector2D(p2);
                    double   projection       = pointVector * l1.directionVector;
                    double   p2DoublePosition = projection;

                    arrayMinPosition = Math.Min(0.0d, p2DoublePosition);
                    arrayMaxPosition = Math.Max(0.0d, p2DoublePosition);
                    dataArrayRotated.RemoveAll(tpl => ((tpl.Item1 < arrayMinPosition) || (tpl.Item1 > arrayMaxPosition)));
                }

                dataArrayRotated =
                    dataArrayRotated.ConvertAll <Tuple <double, double> >(
                        tpl => new Tuple <double, double>(tpl.Item1 - arrayMinPosition, tpl.Item2));

                dataArrayRotated.Sort((tpl1, tpl2) => tpl1.Item1.CompareTo(tpl2.Item1));

                FunctionRepresentationForm form1 = new FunctionRepresentationForm();
                form1.dvScatterXSpace     = DenseVector.OfEnumerable(dataArrayRotated.ConvertAll <double>(tpl => tpl.Item1));
                form1.dvScatterFuncValues =
                    DenseVector.OfEnumerable(dataArrayRotated.ConvertAll <double>(tpl => tpl.Item2));

                if ((rtbMinValuesLimit.Text != "") && (rtbMaxValuesLimit.Text != ""))
                {
                    form1.ForcedFuncMinValue = Convert.ToDouble(rtbMinValuesLimit.Text.Replace(".", ","));
                    form1.ForcedFuncMaxValue = Convert.ToDouble(rtbMaxValuesLimit.Text.Replace(".", ","));
                    form1.ForceFuncLimits    = true;
                }


                if (rbtnShowByDots.Checked)
                {
                    form1.scatterFuncDrawingVariant = SequencesDrawingVariants.circles;
                }
                else if (rbtnShowByLine.Checked)
                {
                    form1.scatterFuncDrawingVariant = SequencesDrawingVariants.polyline;
                }

                form1.Show();
                form1.Represent();
            }
        }