private void setCorrectedSegements()
        {
            for (int i = 0; i < originalSegments.Count; ++i)
            {
                if (i == 0)
                {
                    double cx = originalSegments[i].getGStart().getPnt3d().getX() + originalSegments[i].cdx();
                    double cy = originalSegments[i].getGStart().getPnt3d().getY() + originalSegments[i].cdy();
                    pnt3d  correctedEndPnt    = new pnt3d(cx, cy, 0);
                    VTex   correctedEndVertex = new VTex(correctedEndPnt, originalSegments[i].getGEnd().getBuldge());

                    pnt3d  newStartPoint        = new pnt3d(originalSegments[i].getGStart().getPnt3d().getX(), originalSegments[i].getGStart().getPnt3d().getY(), 0);
                    double newBulgeStart        = originalSegments[i].getGStart().getBuldge();
                    VTex   correctedStartVertex = new MWCadNameSpace.VTex(newStartPoint, newBulgeStart);

                    Segment newCorrectedSegment = new MWCadNameSpace.Segment(correctedStartVertex, correctedEndVertex);
                    correctedSegments.Add(newCorrectedSegment);
                }
                else
                {
                    VTex correctedStartVertex = correctedSegments[i - 1].getGEnd();
                    //double check_cdx = originalSegments[i].cdx();
                    //double check_cdy = originalSegments[i].cdy();

                    //MessageBox.Show("Corrected dx and dy " + check_cdx + "," + check_cdy);

                    //double check_getx = correctedStartVertex.getPnt3d().getX();
                    //double check_gety = correctedStartVertex.getPnt3d().getY();

                    //MessageBox.Show("Corrected startx and starty " + check_getx + "," + check_gety);

                    double cx = correctedStartVertex.getPnt3d().getX() + originalSegments[i].cdx();
                    double cy = correctedStartVertex.getPnt3d().getY() + originalSegments[i].cdy();



                    double newEndx = cx;
                    double newEndy = cy;

                    pnt3d correctedEndPnt    = new pnt3d(newEndx, newEndy, 0);
                    VTex  correctedEndVertex = new VTex(correctedEndPnt, originalSegments[i].getGEnd().getBuldge());

                    Segment newCorrectedSegment = new MWCadNameSpace.Segment(correctedStartVertex, correctedEndVertex);
                    correctedSegments.Add(newCorrectedSegment);
                }
            }
        }
        public Segment extractAsSegment(pnt3d startPnt)
        {
            //set the start point
            VTex startV = new VTex(startPnt, this.radiusAsBuldge());

            //find the end point
            double bearingAngle = (Convert.ToDouble(degrees) + Convert.ToDouble(minutes) / 60.00 + Convert.ToDouble(seconds) / 3600.00) * (Math.PI / 180);

            double dx = 0;
            double dy = 0;

            if (startDirection.Value == "North" && endDirection.Value == "East")
            {
                dx = (Math.Sin(bearingAngle) * length);
                dy = (Math.Cos(bearingAngle) * length);
            }
            else if (startDirection.Value == "North" && endDirection.Value == "West")
            {
                dx = -(Math.Sin(bearingAngle) * length);
                dy = (Math.Cos(bearingAngle) * length);
            }
            else if (startDirection.Value == "South" && endDirection.Value == "West")
            {
                dx = -(Math.Sin(bearingAngle) * length);
                dy = -(Math.Cos(bearingAngle) * length);
            }
            else if (startDirection.Value == "South" && endDirection.Value == "East")
            {
                dx = +(Math.Sin(bearingAngle) * length);
                dy = -(Math.Cos(bearingAngle) * length);
            }

            pnt3d endPnt = new pnt3d(startV.getPnt3d().getX() + dx, startV.getPnt3d().getY() + dy);

            VTex endV = new VTex(endPnt, 0);

            Segment returnSeg = new Segment(startV, endV);

            return(returnSeg);
        }
        public double dx()
        {
            double returnVal = gEnd.getPnt3d().getX() - gStart.getPnt3d().getX();

            return(returnVal);
        }