/// <summary>
        /// Mirrors the specified segment about the Y-axis through point J.
        /// </summary>
        /// <returns>IPathSegment.</returns>
        public virtual IPathSegment MirrorAboutAxisJY()
        {
            LinearCurve referenceLine = new LinearCurve(J, new CartesianCoordinate(J.X, J.Y + 1));

            return(new LineSegment(
                       CartesianCoordinate.MirrorAboutLine(I, referenceLine),
                       CartesianCoordinate.MirrorAboutLine(J, referenceLine)));
        }
 /// <summary>
 /// Mirrors the specified segment about the specified reference line.
 /// </summary>
 /// <param name="referenceLine">The reference line.</param>
 /// <returns>IPathSegment.</returns>
 public virtual IPathSegment MirrorAboutLine(LinearCurve referenceLine)
 {
     return(new LineSegment(
                CartesianCoordinate.MirrorAboutLine(I, referenceLine),
                CartesianCoordinate.MirrorAboutLine(J, referenceLine)));
 }