private static void GetRandomComplex(RandomSystem rnd, out Num.Complex c1, out ComplexD c2, bool withInf = true) { var type = rnd.UniformDouble(); if (type < 0.1) { var v = rnd.UniformV2i(2); c1 = new Num.Complex(v.X, v.Y); c2 = new ComplexD(v.X, v.Y); } else if (type < 0.2 && withInf) { var i = rnd.UniformV2i(3); var v = new V2d( (i.X == 0) ? 0 : ((i.X == 1) ? double.NegativeInfinity : double.PositiveInfinity), (i.Y == 0) ? 0 : ((i.Y == 1) ? double.NegativeInfinity : double.PositiveInfinity) ); c1 = new Num.Complex(v.X, v.Y); c2 = new ComplexD(v.X, v.Y); } else { var v = (rnd.UniformV2d() - 0.5) * 100; if (type < 0.4) { c1 = new Num.Complex(v.X, 0); c2 = new ComplexD(v.X, 0); } else if (type < 0.5) { c1 = new Num.Complex(0, v.Y); c2 = new ComplexD(0, v.Y); } else { c1 = new Num.Complex(v.X, v.Y); c2 = new ComplexD(v.X, v.Y); } } }
public static Shift2d GetRandomShift2(RandomSystem rnd) => new Shift2d(rnd.UniformV2d() * 10);
public static Scale2d GetRandomScale2(RandomSystem rnd) => new Scale2d(rnd.UniformV2d() * 5);