Exemplo n.º 1
0
        public TAMStroke CreateRandomStroke(Vector2 center, TAMTone tone)
        {
            var size   = (float)_random.Next();
            var length = Mathf.Lerp(_generationConfiguration.StrokeLengthRange.x, _generationConfiguration.StrokeLengthRange.y, size);

            length += (float)_random.NextBetween(_generationConfiguration.StrokeHeightJitterRange.x, _generationConfiguration.StrokeLengthJitterRange.y);
            var height = Mathf.Lerp(_generationConfiguration.StrokeHeightRange.x, _generationConfiguration.StrokeHeightRange.y, size);

            height += (float)_random.NextBetween(_generationConfiguration.StrokeHeightJitterRange.x, _generationConfiguration.StrokeHeightJitterRange.y);

            float rotation;

            if (tone.StrokeOrientation == TAMStrokeOrientation.Horizontal)
            {
                rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter;
            }
            else if (tone.StrokeOrientation == TAMStrokeOrientation.Vertical)
            { // strokes vertical
                rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter + Mathf.PI / 2;
            }
            else
            {
                if (_random.NextBoolean())
                {
                    rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter;
                }
                else
                {
                    rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter + Mathf.PI / 2;
                }
            }
            return(new TAMStroke(center, height, length, rotation, _lastId++));
        }
Exemplo n.º 2
0
 public static void TestMultipleRandomCreationsAndDeletions<TLink>(this ILinks<TLink> links, int maximumOperationsPerCycle)
 {
     var comparer = Comparer<TLink>.Default;
     var addressToUInt64Converter = CheckedConverter<TLink, ulong>.Default;
     var uInt64ToAddressConverter = CheckedConverter<ulong, TLink>.Default;
     for (var N = 1; N < maximumOperationsPerCycle; N++)
     {
         var random = new System.Random(N);
         var created = 0UL;
         var deleted = 0UL;
         for (var i = 0; i < N; i++)
         {
             var linksCount = addressToUInt64Converter.Convert(links.Count());
             var createPoint = random.NextBoolean();
             if (linksCount >= 2 && createPoint)
             {
                 var linksAddressRange = new Range<ulong>(1, linksCount);
                 TLink source = uInt64ToAddressConverter.Convert(random.NextUInt64(linksAddressRange));
                 TLink target = uInt64ToAddressConverter.Convert(random.NextUInt64(linksAddressRange)); //-V3086
                 var resultLink = links.GetOrCreate(source, target);
                 if (comparer.Compare(resultLink, uInt64ToAddressConverter.Convert(linksCount)) > 0)
                 {
                     created++;
                 }
             }
             else
             {
                 links.Create();
                 created++;
             }
         }
         Assert.True(created == addressToUInt64Converter.Convert(links.Count()));
         for (var i = 0; i < N; i++)
         {
             TLink link = uInt64ToAddressConverter.Convert((ulong)i + 1UL);
             if (links.Exists(link))
             {
                 links.Delete(link);
                 deleted++;
             }
         }
         Assert.True(addressToUInt64Converter.Convert(links.Count()) == 0L);
     }
 }
Exemplo n.º 3
0
        private static void TestMultipleRandomCreationsAndDeletions(int maximumOperationsPerCycle)
        {
            var and = Link.Create(Link.Itself, Link.Itself, Link.Itself);

            //var comparer = Comparer<TLink>.Default;
            for (var N = 1; N < maximumOperationsPerCycle; N++)
            {
                var random     = new System.Random(N);
                var linksCount = 1;
                for (var i = 0; i < N; i++)
                {
                    var createPoint = random.NextBoolean();
                    if (linksCount > 2 && createPoint)
                    {
                        var  linksAddressRange = new Range <ulong>(1, (ulong)linksCount);
                        Link source            = random.NextUInt64(linksAddressRange);
                        Link target            = random.NextUInt64(linksAddressRange); //-V3086
                        var  resultLink        = Link.Create(source, and, target);
                        if (resultLink > linksCount)
                        {
                            linksCount++;
                        }
                    }
                    else
                    {
                        Link.Create(Link.Itself, Link.Itself, Link.Itself);
                        linksCount++;
                    }
                }
                for (var i = 0; i < N; i++)
                {
                    Link link = i + 2;
                    if (link.Linker != null)
                    {
                        Link.Delete(link);
                        linksCount--;
                    }
                }
            }
        }