/// <summary>
 /// Initializes a new instance of <c>CI.Geometry3D.ParabolaSegment3D</c> class.
 /// </summary>
 public ParabolaSegment3D()
     : base()
 {
     Name = "ParabolaSegment";
     intermediatePoint = new Point3D();
     SubscribeEvents(intermediatePoint);
     parabolaProperty = null;
 }
 /// <summary>
 /// Segment Parabola.
 /// </summary>
 /// <param name="startPoint">Start Point</param>
 /// <param name="intermediatePoint">Intermediate Point</param>
 /// <param name="endPoint">End Point</param>
 public ParabolaSegment3D(IPoint3D startPoint, IPoint3D intermediatePoint, IPoint3D endPoint)
     : base(startPoint, endPoint)
 {
     Name = "ParabolaSegment";
     this.intermediatePoint = intermediatePoint;
     SubscribeEvents(intermediatePoint);
     parabolaProperty = null;
 }
        /// <summary>
        /// Creates an Parabola from another segment Parabola.
        /// </summary>
        /// <param name="segmentParabola">Parabola Segment</param>
        public ParabolaSegment3D(IArcSegment3D segmentParabola)
            : base(segmentParabola)
        {
            if (segmentParabola != null)
            {
                Name = (segmentParabola as ElementBase).Name;
                intermediatePoint = new Point3D(segmentParabola.IntermedPoint.X, segmentParabola.IntermedPoint.Y, segmentParabola.IntermedPoint.Z);
                SubscribeEvents(intermediatePoint);
            }

            parabolaProperty = null;
        }
 /// <summary>
 /// On change segment call Notify all
 /// </summary>
 /// <param name="sender">Point3D</param>
 protected override void OnSegmentPointChanged(object sender)
 {
     base.OnSegmentPointChanged(sender);
     parabolaProperty = null;
 }