/// <summary>
/// Splits a pie slice into two on the split angle.
/// </summary>
/// <param name="splitAngle">
/// Angle at which splitting is performed.
/// </param>
/// <returns>
/// An array of two pie slices.
/// </returns>
internal PieSlice[] Split(float splitAngle) {
// if split angle equals one of bounding angles, then nothing to split
if (StartAngle == splitAngle || this.EndAngle == splitAngle)
return new PieSlice[] { (PieSlice)Clone() };
float transformedSplitAngle = TransformAngle(splitAngle);
float actualStartAngle = GetActualAngle(StartAngle);
float newSweepAngle = (splitAngle - actualStartAngle + 360) % 360;
PieSlice pieSlice1 = new PieSlice(BoundingRectangle, SliceHeight, actualStartAngle, newSweepAngle, m_surfaceColor, m_shadowStyle, m_edgeColorType);
pieSlice1.InitializeSides(true, false);
newSweepAngle = GetActualAngle(EndAngle) - splitAngle;
PieSlice pieSlice2 = new PieSlice(BoundingRectangle, SliceHeight, splitAngle, newSweepAngle, m_surfaceColor, m_shadowStyle, m_edgeColorType);
pieSlice2.InitializeSides(false, true);
return new PieSlice[] { pieSlice1, pieSlice2 };
}