public void TestColorSequence()
        {
            double SATURATION = 1.0;
            double LUMINOSITY = 0.5;

            var angles = new AngleGenerator(0, 360);

            ColorAssert(
                RGBtoColor(new RGB(0, 255, 255)),
                HSLtoColor(new HSL(angles.NextAngle(), SATURATION, LUMINOSITY)),
                1.0
                );
            ColorAssert(
                RGBtoColor(new RGB(128, 255, 0)),
                HSLtoColor(new HSL(angles.NextAngle(), SATURATION, LUMINOSITY)),
                1.0
                );
            ColorAssert(
                RGBtoColor(new RGB(128, 0, 255)),
                HSLtoColor(new HSL(angles.NextAngle(), SATURATION, LUMINOSITY)),
                1.0
                );
            ColorAssert(
                RGBtoColor(new RGB(255, 191, 0)),
                HSLtoColor(new HSL(angles.NextAngle(), SATURATION, LUMINOSITY)),
                1.0
                );
        }
Beispiel #2
0
 /// <summary>
 /// Returns an angle generator which will produce random radian values within the specified range.
 /// </summary>
 /// <param name="random">The pseudo-random engine that will be used to generate bits from which the generator's return values are derived.</param>
 /// <param name="signed">Indicates if the range of angles generated should be centered at 0 or have its lower bound be at zero.</param>
 /// <param name="half">Indicates if the range of angles generated should cover only half of a revolution or a full revolution.</param>
 /// <returns>An angle generator producing random radian values within the specified range.</returns>
 /// <seealso cref="AngleRadCC(IRandom)"/>
 /// <seealso cref="SignedAngleRadCC(IRandom)"/>
 /// <seealso cref="HalfAngleRadCC(IRandom)"/>
 /// <seealso cref="SignedHalfAngleRadCC(IRandom)"/>
 public static IRangeGenerator <float> MakeAngleRadCCGenerator(this IRandom random, bool signed = false, bool half = false)
 {
     if (signed)
     {
         return(AngleGenerator.CreateSignedCC(random, half ? _floatRadiansPerQuarterTurn : _floatRadiansPerHalfTurn));
     }
     else
     {
         return(AngleGenerator.CreateCC(random, half ? _floatRadiansPerHalfTurn : _floatRadiansPerTurn));
     }
 }
Beispiel #3
0
 /// <summary>
 /// Returns an angle generator which will produce random degree values within the specified range.
 /// </summary>
 /// <param name="random">The pseudo-random engine that will be used to generate bits from which the generator's return values are derived.</param>
 /// <param name="signed">Indicates if the range of angles generated should be centered at 0 or have its lower bound be at zero.</param>
 /// <param name="half">Indicates if the range of angles generated should cover only half of a revolution or a full revolution.</param>
 /// <returns>An angle generator producing random degree values within the specified range.</returns>
 /// <seealso cref="AngleDegOO(IRandom)"/>
 /// <seealso cref="SignedAngleDegOO(IRandom)"/>
 /// <seealso cref="HalfAngleDegOO(IRandom)"/>
 /// <seealso cref="SignedHalfAngleDegOO(IRandom)"/>
 public static IRangeGenerator <float> MakeAngleDegOOGenerator(this IRandom random, bool signed = false, bool half = false)
 {
     if (signed)
     {
         return(AngleGenerator.CreateSignedOO(random, half ? _floatDegreesPerQuarterTurn : _floatDegreesPerHalfTurn));
     }
     else
     {
         return(AngleGenerator.CreateOO(random, half ? _floatDegreesPerHalfTurn : _floatDegreesPerTurn));
     }
 }
        public void TestAngleGeneratorSequence()
        {
            var angles = new AngleGenerator(0, 360);

            Assert.AreEqual(180, angles.NextAngle());
            Assert.AreEqual(90, angles.NextAngle());
            Assert.AreEqual(270, angles.NextAngle());
            Assert.AreEqual(45, angles.NextAngle());
            Assert.AreEqual(225, angles.NextAngle());
            Assert.AreEqual(135, angles.NextAngle());
            Assert.AreEqual(315, angles.NextAngle());
            Assert.AreEqual(22.5, angles.NextAngle());
            Assert.AreEqual(202.5, angles.NextAngle());
            Assert.AreEqual(112.5, angles.NextAngle());
            Assert.AreEqual(292.5, angles.NextAngle());
            Assert.AreEqual(67.5, angles.NextAngle());
        }
        public void TestAngleGenerator()
        {
            var angles = new AngleGenerator(0, 360);

            Assert.AreEqual(180, angles.NextAngle());
        }