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 ); }
/// <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)); } }
/// <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()); }