コード例 #1
0
        public void GetSpiralPoints_MultiplePointsCreate_SpiralChangeOnCertainDirection(int countPoints, bool isClockwise)
        {
            var testSpiral   = new ArchimedeanSpiral(center, (isClockwise ? 1 : -1) / (2 * Math.PI));
            var spiralPoints = testSpiral.GetNextSpiralPoints(countPoints);


            for (var i = 1; i < spiralPoints.Count; i++)
            {
                var previousPoint = spiralPoints[i - 1];
                var currentPoint  = spiralPoints[i];

                var pseudoscalarMultiply = (spiral.Center.X - currentPoint.X) * (previousPoint.Y - currentPoint.Y) -
                                           (spiral.Center.Y - currentPoint.Y) * (previousPoint.X - currentPoint.X);

                if (isClockwise)
                {
                    pseudoscalarMultiply.Should().BeLessOrEqualTo(0);
                }
                else
                {
                    pseudoscalarMultiply.Should().BeGreaterOrEqualTo(0);
                }
            }
        }
コード例 #2
0
        public void GetSpiralPoints_MultiplePointsCreate_NotBeRepeated(int countPoints)
        {
            var points = new HashSet <Point>(spiral.GetNextSpiralPoints(countPoints));

            points.Count.Should().Be(countPoints);
        }