Exemplo n.º 1
0
        internal bool CalculateIsLargeArc(ITurnCircleArcSegment segment)
        {
            Geometry.Shapes.Point startPoint = segment.CentrePoint;
            Geometry.Shapes.Point endPoint = segment.CircleOrigin == Constants.CircleOrigin.Start
                                                 ? segment.EndPoint
                                                 : segment.StartPoint;
            Geometry.Shapes.Point checkPoint = segment.CircleOrigin == Constants.CircleOrigin.Start
                                                   ? segment.StartPoint
                                                   : segment.EndPoint;

            var line = new Line(-1,
                                startPoint,
                                endPoint);

            Constants.TurnDirection turnDirection = line.TurnDirectionToPoint(checkPoint);

            bool isLargeArc;

            if ( segment.CircleOrigin == Constants.CircleOrigin.Start )
            {
                isLargeArc = turnDirection == segment.TurnDirection;
            }
            else
            {
                isLargeArc = turnDirection != segment.TurnDirection;
            }

            return isLargeArc;
        }
        internal PathFigureCollection CreateFigures(ITurnCircleArcSegment startSegment,
                                                    ITurnCircleArcSegment middleSegment,
                                                    ITurnCircleArcSegment endSegment)

        {
            ArcSegment arcStartSegment = m_Helper.SegmentToArcSegment(startSegment);
            ArcSegment arcMiddleSegment = m_Helper.SegmentToArcSegment(middleSegment);
            ArcSegment arcFinishSegment = m_Helper.SegmentToArcSegment(endSegment);

            var pathSegments = new List <PathSegment>
                               {
                                   arcStartSegment,
                                   arcMiddleSegment,
                                   arcFinishSegment
                               };

            Point start = m_Helper.PointRelativeToOrigin(startSegment.StartPoint);

            var pathFigure = new PathFigure(start,
                                            pathSegments,
                                            false);

            var figures = new PathFigureCollection
                          {
                              pathFigure
                          };

            return figures;
        }
        public void Unknown_SetsIsUnknownToTrue_WhenCreated()
        {
            // Arrange
            // Act
            ITurnCircleArcSegment actual = TurnCircleArcSegment.Unknown;

            // Assert
            Assert.True(actual.IsUnknown,
                        "IsUnknown");
        }
        public void Unknown_SetsAngleToXAxisAtStartPointToUnknown_WhenCreated()
        {
            // Arrange
            // Act
            ITurnCircleArcSegment actual = TurnCircleArcSegment.Unknown;

            // Assert
            Assert.AreEqual(Angle.Unknown,
                            actual.AngleToXAxisAtStartPoint,
                            "AngleToXAxisAtStartPoint");
        }
Exemplo n.º 5
0
        public ArcSegment SegmentToArcSegment(ITurnCircleArcSegment segment)
        {
            Geometry.Shapes.Point endPoint = segment.EndPoint;

            Point finishEndPoint = PointRelativeToOrigin(endPoint);
            var finishSize = new Size(segment.Radius,
                                      segment.Radius);
            SweepDirection finishSweepDirection =
                segment.TurnDirection == Constants.TurnDirection.Clockwise
                    ? SweepDirection.Clockwise
                    : SweepDirection.Counterclockwise;

            bool isLargeArc = CalculateIsLargeArc(segment);

            ArcSegment arcSegment = CreateArcSegment(finishEndPoint,
                                                     finishSize,
                                                     finishSweepDirection,
                                                     isLargeArc);

            return arcSegment;
        }
Exemplo n.º 6
0
 private static void AssertTurnCircleArcSegment(ITurnCircleArcSegment actual,
                                                ICircle expectedCircle,
                                                Point expectedStartPoint,
                                                Point expectedEndPoint,
                                                Constants.CircleOrigin origin)
 {
     Assert.AreEqual(origin,
                     actual.CircleOrigin,
                     "CircleOrigin");
     Assert.AreEqual(expectedCircle.CentrePoint,
                     actual.CentrePoint,
                     "CentrePoint");
     Assert.AreEqual(expectedCircle.Radius,
                     actual.Radius,
                     "Radius");
     Assert.AreEqual(expectedStartPoint,
                     actual.StartPoint,
                     "StartPoint");
     Assert.AreEqual(expectedEndPoint,
                     actual.EndPoint,
                     "EndPoint");
 }