Пример #1
0
        public void PointAtTest()
        {
            // Normal cases
            var circle = new Circle(new Size(10.0, 2.0))
            {
                Center = new Point(1, 1)
            };

            Assert.AreEqual(new Point(1, 0), circle.PointAt(0));
            Assert.AreEqual(new Point(0, 1), circle.PointAt(270));
            Assert.AreEqual(new Point(2, 1), circle.PointAt(-270));

            // Extreme case (Inf)
            var infPoint = circle.PointAt(Double.PositiveInfinity);
            Assert.AreEqual(Double.NaN, infPoint.X);
            Assert.AreEqual(Double.NaN, infPoint.Y);

            // Extreme case (NaN)
            var nanPoint = circle.PointAt(Double.PositiveInfinity);
            Assert.AreEqual(Double.NaN, nanPoint.X);
            Assert.AreEqual(Double.NaN, nanPoint.Y);
        }
Пример #2
0
        private void ArrangePath(Circle circle)
        {
            var tension = Tension % 1;
            var angle = Angle + Offset;

            var startAngle = angle - tension * Spread;
            var endAngle = angle + (1 - tension) * Spread;

            figure.StartPoint = circle.PointAt(startAngle);
            segment.Point = circle.PointAt(endAngle);

            segment.Size = circle.Size();
            segment.IsLargeArc = (Spread > 180);
        }
Пример #3
0
        private void ArrangePath(Circle circle)
        {
            arcFigure.StartPoint = circle.Center;

            sliceStart.Point = circle.PointAt(Angle + Offset);
            sliceEnd.Point = circle.Center;

            arcSegment.Point = circle.PointAt(Angle + Offset + Spread);

            arcSegment.Size = circle.Size();
            arcSegment.IsLargeArc = (Spread > 180);
        }