Esempio n. 1
0
        public void SetUp()
        {
            var settings = A.Fake <ICloudSettings>();

            center            = new Point(100, 100);
            archimedeanSpiral = new ArchimedeanSpiral(settings);
        }
Esempio n. 2
0
        public void StartAtCenter()
        {
            var startingPoint = new Point(1, 5);
            var shiftedSpiral = new ArchimedeanSpiral(startingPoint);

            shiftedSpiral.CurrentPoint.Should().Be(startingPoint);
        }
Esempio n. 3
0
        public void ReturnCenterPointFirst_WithZeroA(int centerX, int centerY)
        {
            var center            = new Point(centerX, centerY);
            var archimedeanSpiral = new ArchimedeanSpiral(center, a: 0);

            archimedeanSpiral.GetNextPoint().Should().BeEquivalentTo(center);
        }
Esempio n. 4
0
        public void PutPointsOnStepLengthDistance_AfterFullCircle(
            double stepLength,
            double angleShiftForEachPoint, int amountOfFullCircles)
        {
            var spiral = new ArchimedeanSpiral(center, stepLength,
                                               angleShiftForEachPoint);
            var firstPoint       = spiral.CalculateNextPoint();
            var amountOfSubsteps = 2 * Math.PI / angleShiftForEachPoint;

            amountOfSubsteps *= amountOfFullCircles;

            Point secondPoint = new Point();

            while (amountOfSubsteps-- > 0)
            {
                secondPoint = spiral.CalculateNextPoint();
            }

            var expectedSquaredDistance =
                stepLength * stepLength *
                amountOfFullCircles * amountOfFullCircles;

            firstPoint.GetSquaredDistanceTo(secondPoint)
            .Should().BeApproximately(expectedSquaredDistance, 0.0005,
                                      $"two points differed by {amountOfFullCircles}*2PI must be " +
                                      $"distanced by {amountOfFullCircles} lengths of spiral step");
        }
 public void SetUp()
 {
     spiral                   = new ArchimedeanSpiral(new Point(0, 0));
     wordsProvider            = new CircularWordsProvider();
     wordsFilter              = new WordsFilter().Normalize();
     tagCloudWithCenterInZero =
         new CircularCloudLayouter(spiral, wordsProvider, wordsFilter);
 }
        private ITagCloud GetDefaultTagCloud()
        {
            var spiral        = new ArchimedeanSpiral(new Point(0, 0));
            var wordsProvider = GetDefaultWordsProvider();
            var wordsFilter   = GetDefaultWordsFilter();

            return(new CircularCloudLayouter(spiral, wordsProvider, wordsFilter));
        }
Esempio n. 7
0
        public void SetUp()
        {
            Center = new Point(500, 500);
            const double distanceBetweenLoops = 1;
            const double angleDelta           = 1;

            Spiral = new ArchimedeanSpiral(Center, distanceBetweenLoops, angleDelta);
        }
Esempio n. 8
0
        public void ReturnCenter_AsFirstPoint(int x, int y)
        {
            var center = new Point(x, y);
            var spiral = new ArchimedeanSpiral(center, stepLength, angleShiftForEachPoint);

            spiral.CalculateNextPoint().Should().BeEquivalentTo(center,
                                                                "first point must be the center of the spiral");
        }
Esempio n. 9
0
        public void GetNextPoint_OnEqualSpiralInstance_ShouldBeEqual()
        {
            var firstSpiral  = new ArchimedeanSpiral(cloudLayouterSettings);
            var secondSpiral = new ArchimedeanSpiral(cloudLayouterSettings);

            var firstPoints  = Enumerable.Range(0, 50).Select(i => firstSpiral.GetNextPoint());
            var secondPoints = Enumerable.Range(0, 50).Select(i => secondSpiral.GetNextPoint());

            firstPoints.Should().BeEquivalentTo(secondPoints);
        }
Esempio n. 10
0
        public CircularCloudLayouter(Point center, ITagsCloudFactory tagsCloudFactory)
        {
            Center    = center;
            TagsCloud = tagsCloudFactory.CreateTagsCloud();
            const double coefficients   = 0.5;
            const double spiralStep     = 0.05;
            var          geometryObject = new ArchimedeanSpiral(center, coefficients, spiralStep);

            geometryEnumerator = geometryObject.GetEnumerator();
        }
Esempio n. 11
0
        public void SetUp()
        {
            rectangles = null;
            config     = new PictureConfig {
                Size = new Size(0, 0)
            };
            var spiral = new ArchimedeanSpiral(config);

            layouter = new CircularCloudLayouter(spiral, config);
        }
Esempio n. 12
0
        public void ReturnPointWithGreaterRadius_OnNextStep(int centerX, int centerY, double a, double b, double step)
        {
            var center            = new Point(centerX, centerY);
            var archimedeanSpiral = new ArchimedeanSpiral(center, step, a, b);
            var firstPoint        = archimedeanSpiral.GetNextPoint();
            var secondPoint       = archimedeanSpiral.GetNextPoint();
            var firstRadius       = GetDistance(center, firstPoint);
            var secondRadius      = GetDistance(center, secondPoint);

            secondRadius.Should().BeGreaterThan(firstRadius);
        }
Esempio n. 13
0
        public void GetNextPoint_OnDifferentSpiralInstance_ShouldBeDifferent()
        {
            var firstSpiral  = new ArchimedeanSpiral(cloudLayouterSettings);
            var secondSpiral = new ArchimedeanSpiral(new CloudLayouterSettings {
                StartPoint = new Point(100, 100)
            });

            var firstPoints  = Enumerable.Range(0, 50).Select(i => firstSpiral.GetNextPoint());
            var secondPoints = Enumerable.Range(0, 50).Select(i => secondSpiral.GetNextPoint());

            firstPoints.Should().NotBeEquivalentTo(secondPoints);
        }
Esempio n. 14
0
        public void SetUp()
        {
            var parser = new TextParser(new WordValidator());
            var center = new Point(200, 200);
            var spiral = new ArchimedeanSpiral(center, 0.2, 1.0);

            spiralType = SpiralType.Archimedean;
            var factory = new LayouterFactory(new List <ISpiral> {
                spiral
            });

            container = new TagsCloudContainer.TagsCloudContainer.TagsCloudContainer(parser, factory);
        }
Esempio n. 15
0
        public void ReturnCorrectPoints_OnNextSteps(int centerX, int centerY, double a, double b, double step,
                                                    int stepsNumber)
        {
            var center            = new Point(centerX, centerY);
            var archimedeanSpiral = new ArchimedeanSpiral(center, step, a, b);

            for (var i = 0; i < stepsNumber; i++)
            {
                var nextPoint   = archimedeanSpiral.GetNextPoint();
                var pointRadius = GetDistance(center, nextPoint);
                var pointPhi    = step * i;
                pointRadius.Should().BeApproximately(GetArchimedeanSpiralRadius(a, b, pointPhi), 1);
            }
        }
Esempio n. 16
0
    private static ArchimedeanSpiral GetMoveControl(SpiralInvoluteParam moveParam)
    {
        foreach (var keyItem in _spiralPool.Keys)
        {
            if (SpiralInvoluteParam.IsEquals(keyItem, moveParam))
            {
                return(_spiralPool[keyItem]);
            }
        }

        ArchimedeanSpiral spiral = new ArchimedeanSpiral(moveParam);

        _spiralPool[moveParam] = spiral;
        return(spiral);
    }
Esempio n. 17
0
        public void GetNextPoint_SavesDistance_DuringGeneration()
        {
            const int distance = 10;
            var       spiral   = new ArchimedeanSpiral(distance, 2 * Math.PI);
            var       points   = new List <PointF>();

            for (var i = 0; i < 1000; i++)
            {
                points.Add(spiral.GetNextPoint());
            }

            for (var i = 1; i < points.Count; i++)
            {
                GetSquaredDistance(points[i - 1], points[i])
                .Should().Be(distance * distance);
            }
        }
Esempio n. 18
0
        protected override void Load(ContainerBuilder builder)
        {
            var ulamSpiral        = new UlamSpiral(new Point(250, 250));
            var archimedeanSpiral = new ArchimedeanSpiral(new Point(250, 250), 0.2, 1.0);
            var formConfig        = new FormConfig(Color.Tan, new Size(600, 600), SpiralType.Archimedean);

            builder.RegisterInstance(formConfig);
            builder.RegisterInstance(ulamSpiral).As <ISpiral>();
            builder.RegisterInstance(archimedeanSpiral).As <ISpiral>().PreserveExistingDefaults();
            builder.RegisterType <LayouterFactory>().As <ILayouterFactory>();
            builder.RegisterType <WordValidator>().As <IWordValidator>();
            builder.RegisterType <BitmapSaver>().As <IBitmapSaver>();
            builder.RegisterType <TextParser>().As <ITextParser>();
            builder.RegisterType <CloudLayouter>().As <ILayouter>();
            builder.RegisterType <TagsVisualizer>();
            builder.RegisterType <TagsCloudContainer.TagsCloudContainer.TagsCloudContainer>().As <ITagsContainer>();
            builder.RegisterType <TagsCloudForm>();
        }
Esempio n. 19
0
        public void GenerateNextPoint_SavesDelta_DuringGeneration()
        {
            const double delta   = Math.PI / 3;
            const double epsilon = Math.PI / 180;
            var          spiral  = new ArchimedeanSpiral(delta: delta);
            var          points  = new List <PointF>();

            for (var i = 0; i < 1000; i++)
            {
                points.Add(spiral.GetNextPoint());
            }

            for (var i = 1; i < points.Count; i++)
            {
                var previous = GetAngleToPoint(points[i - 1]);
                var current  = GetAngleToPoint(points[i]);
                CalculateAngleDifference(current, previous)
                .Should().BeInRange(delta - epsilon, delta + epsilon);
            }
        }
Esempio n. 20
0
        public void GetNextPoint_ShouldContainPointsFromSpiral_OnCorrespondingInput(int expectedPointShift)
        {
            const int   parameter     = 2;
            const float stepInRadians = (float)(Math.PI / 6);
            var         expectedPoint = GeometryUtils.ConvertPolarToIntegerCartesian(
                parameter * stepInRadians * expectedPointShift,
                stepInRadians * expectedPointShift);
            var config = new PictureConfig
            {
                Parameters = new LayouterParameters {
                    Parameter = parameter, StepInDegrees = 30
                }
            };

            var spiral = new ArchimedeanSpiral(config);

            for (var i = 0; i < expectedPointShift; i++)
            {
                spiral.GetNextPoint();
            }
            var pointFromSpiral = spiral.GetNextPoint();

            pointFromSpiral.Should().Be(expectedPoint);
        }
Esempio n. 21
0
        public void ArchimedeanSpiralCtor_OnAllPoints_DoesNotThrow(int x, int y)
        {
            Action callCtor = () => _ = new ArchimedeanSpiral(cloudLayouterSettings);

            callCtor.Should().NotThrow();
        }
Esempio n. 22
0
 public void SetUp()
 {
     archimedeanSpiral = new ArchimedeanSpiral(1, 0.05f);
 }
Esempio n. 23
0
 public void SetUp()
 {
     _spiral = new ArchimedeanSpiral(new Point(5, 7));
 }
Esempio n. 24
0
 public void SetUp()
 {
     spiral = new ArchimedeanSpiral(Point.Empty);
 }
Esempio n. 25
0
 public void SetUp()
 {
     curve = new ArchimedeanSpiral(new Point(0, 0));
 }
Esempio n. 26
0
        public void GenerateNextPoint_ReturnsEmptyPoint_AtFirstGeneration(double distance, double delta)
        {
            var spiral = new ArchimedeanSpiral(distance, delta);

            spiral.GetNextPoint().Should().Be(PointF.Empty);
        }
Esempio n. 27
0
 public CircularCloudLayouter(Point canvasCenter)
 {
     _rectangles   = new List <Rectangle>();
     _canvasCenter = canvasCenter;
     _spiral       = new ArchimedeanSpiral(_canvasCenter);
 }