public void draw()
        {
            canvas.Children.Clear();
            piePieces.Clear();

            if (turnState == null || !turnState.inTurn)
            {
                return;
            }

            double initialHeading = (double)turnState.directionInitial.heading;
            double targetTurnAngle = (double)turnState.directionDesired.heading - initialHeading;
            double currentTurnAngle = (double)turnState.directionCurrent.heading - initialHeading;

            //double targetTurnAngle = -240.0d;
            //double currentTurnAngle = -20.0d;

            if (Math.Abs(targetTurnAngle) > 1.0d)
            {
                double halfWidth = canvas.ActualWidth / 2.0d;
                double halfHeight = canvas.ActualHeight / 2.0d;
                double radius = (halfWidth + halfHeight) / 2.0d;
                double innerRadius = radius / 2.0d;
                double pushOut = 5.0d;

                // add the pie pieces
                bool targetTurnNegative = targetTurnAngle < 0.0d;
                bool currentTurnNegative = currentTurnAngle < 0.0d;

                PiePiece pieceTargetTurn = new PiePiece()
                {
                    Radius = radius,
                    InnerRadius = innerRadius,
                    CentreX = halfWidth,
                    CentreY = halfHeight,
                    PushOut = pushOut,
                    WedgeAngle = Math.Abs(targetTurnAngle),
                    PieceValue = Math.Round(targetTurnAngle),
                    RotationAngle = (targetTurnNegative ? targetTurnAngle : 0.0d) + initialHeading,
                    Fill = Brushes.Yellow,
                    Opacity = 0.4d,
                    Tag = string.Format("Target turn to {0}", targetTurnAngle),
                    ToolTip = new ToolTip()
                };

                pieceTargetTurn.ToolTipOpening += new ToolTipEventHandler(PiePieceToolTipOpening);

                piePieces.Add(pieceTargetTurn);
                canvas.Children.Add(pieceTargetTurn);

                PiePiece pieceCurrentTurn = new PiePiece()
                {
                    Radius = radius,
                    InnerRadius = innerRadius,
                    CentreX = halfWidth,
                    CentreY = halfHeight,
                    PushOut = 0,
                    WedgeAngle = Math.Abs(currentTurnAngle),
                    PieceValue = Math.Round(currentTurnAngle),
                    RotationAngle = (currentTurnNegative ? currentTurnAngle : 0.0d) + initialHeading,
                    Fill = Brushes.Red,
                    Opacity = 0.6d,
                    Tag = string.Format("Turned to {0}", currentTurnAngle),
                    ToolTip = new ToolTip()
                };

                pieceCurrentTurn.ToolTipOpening += new ToolTipEventHandler(PiePieceToolTipOpening);

                piePieces.Add(pieceCurrentTurn);
                canvas.Children.Add(pieceCurrentTurn);
            }
        }