示例#1
0
        public static Matrix NewDiagonal(double[] vector, int offset_k = 0)
        {
            var length  = vector.Length + System.Math.Abs(offset_k);
            var values  = new double[length, length];
            var indices = new IntegerRange(vector.Length - 1);

            if (offset_k == 0)
            {
                foreach (var i in indices)
                {
                    values[i, i] = vector[i];
                }
            }
            else if (offset_k > 0)
            {
                foreach (var i in indices)
                {
                    values[i, i + offset_k] = vector[i];
                }
            }
            else
            {
                foreach (var i in indices)
                {
                    values[i - offset_k, i] = vector[i];
                }
            }

            return(new Matrix(values));
        }
示例#2
0
        public void Should_return_maximum_and_minimum_value()
        {
            var range = new IntegerRange(1, 2);

            Assert.That(range.Min, Is.EqualTo(1));
            Assert.That(range.Max, Is.EqualTo(2));
        }
示例#3
0
        public void Intersect_should_be_idempotent()
        {
            var range1 = new IntegerRange(1, 4);
            var range2 = new IntegerRange(2, 5);

            Assert.That(range1.Intersect(range2), Is.EqualTo(range2.Intersect(range1)));
        }
        /// <summary>
        /// Deserializes an <see cref="MDXAnimationSequence"/> from a given data stream.
        /// </summary>
        /// <param name="br"></param>
        /// <param name="version"></param>
        public MDXAnimationSequence(BinaryReader br, WarcraftVersion version)
        {
            AnimationID = br.ReadUInt32();

            if (version <= WarcraftVersion.BurningCrusade)
            {
                StartTimestamp = br.ReadUInt32();
                EndTimestamp   = br.ReadUInt32();
            }
            else
            {
                Duration = br.ReadUInt32();
            }

            MovementSpeed = br.ReadSingle();
            Flags         = (MDXAnimationSequenceFlags)br.ReadUInt32();
            Probability   = br.ReadInt16();
            Padding       = br.ReadUInt16();
            ReplayRange   = br.ReadIntegerRange();

            BlendTime              = br.ReadUInt32();
            BoundingBox            = br.ReadBox();
            BoundingSphereRadius   = br.ReadSingle();
            NextVariation          = br.ReadInt16();
            NextAliasedAnimationID = br.ReadUInt16();
        }
示例#5
0
        static AllocationRanges RemainingAllocationsByCentre(Type tableType, Database destDb, IEnumerable<IntegerRange> sourceCentreRanges)
        {
            string tableName = TableName(tableType);
            const string queryStringTemplate = "select centreId Min, max(sr.Id) Max from {0} sr group by sr.CentreId";

            string studyCentreCases = string.Join(" ", sourceCentreRanges.Select(a => string.Format("when ({0}.Id >= {1} and {0}.Id <= {2}) then {1}", tableName, a.Min, a.Max)));
            string internalQuery = string.Format("(select {0}.Id, (case {1} end) centreId from {0} where ({2}))", tableName, studyCentreCases, WhereRange(sourceCentreRanges, tableName));
            string queryString = string.Format(queryStringTemplate, internalQuery);

            var usedAllocationDictionary = destDb.SqlQuery<IntegerRange>(queryString).ToDictionary(k=>k.Min);
            var usedAllocations = new IntegerRange[usedAllocationDictionary.Count];
            usedAllocationDictionary.Values.CopyTo(usedAllocations, 0);
            return new AllocationRanges
            {
                UsedAllocations = usedAllocations,
                RemainingAllocations = sourceCentreRanges.Select(sourceRng =>
                {
                    if (usedAllocationDictionary.TryGetValue(sourceRng.Min, out IntegerRange returnVar))
                    {
                        return new IntegerRange(returnVar.Max + 1, sourceRng.Max);
                    }
                    return sourceRng;
                }).ToList()
            };
        }
示例#6
0
        void ICmpInitializable.OnInit(Component.InitContext context)
        {
            _inEditor = FrozenUtilities.IsDualityEditor;

            if (context == InitContext.Activate && Material != null)
            {
                _particleMaterial = new ParticleMaterial(Material);

                _colorRange            = new ColorRange(ColorStart, ColorEnd);
                _initialDirectionRange = new FloatRange(MathF.DegToRad(InitialDirection.X), MathF.DegToRad(InitialDirection.Y));
                _initialRotationRange  = new FloatRange(MathF.DegToRad(InitialRotation.X), MathF.DegToRad(InitialRotation.Y));
                _initialScaleRange     = new FloatRange(InitialScale.X, InitialScale.Y);
                _movementSpeedRange    = new FloatRange(MovementSpeed.X, MovementSpeed.Y);
                _particlesNumberRange  = new IntegerRange((int)ParticlesAmount.X, (int)ParticlesAmount.Y);
                _rotationSpeedRange    = new FloatRange(MathF.DegToRad(RotationSpeed.X), MathF.DegToRad(RotationSpeed.Y));
                _scaleSpeedRange       = new FloatRange(ScaleSpeed.X, ScaleSpeed.Y);
                _timeToLiveRange       = new FloatRange(TimeToLive.X, TimeToLive.Y);

                _emitterDirection     = EmitterDirection * MathF.Pi / 180;
                _emitterRotationSpeed = EmitterRotationSpeed * MathF.Pi / 180;

                _particleVertices = new VertexC1P3T2[_particlesNumberRange.Max * 4];

                _particles = new Particle[_particlesNumberRange.Max];
                for (int i = 0; i < _particles.Length; i++)
                {
                    _particles[i] = new Particle();
                }
            }
        }
示例#7
0
        public void IntegerRange_FromMustBeSmallerThanTo()
        {
            var range = new IntegerRange(20, 10);

            range.From.Should().Be(10);
            range.To.Should().Be(20);
        }
示例#8
0
        //────────────────────────────────────────
        #endregion



        #region アクション
        //────────────────────────────────────────

        // 説明はインターフェース参照。
        public void ToNumbers(ref List <int> listN)
        {
            for (int nI = 0; nI < this.List_Item.Count; nI++)
            {
                IntegerRange o_Range = this.List_Item[nI];

                o_Range.ToNumbers(ref listN);
            }
        }
示例#9
0
        public void Should_intersect_partially_overlapping_ranges()
        {
            var range1 = new IntegerRange(1, 4);
            var range2 = new IntegerRange(2, 5);
            var intersection = range1.Intersect(range2);

            Assert.That(intersection.Min, Is.EqualTo(2));
            Assert.That(intersection.Max, Is.EqualTo(4));
        }
示例#10
0
        public void Should_intersect_subset_ranges()
        {
            var range1 = new IntegerRange(1, 5);
            var range2 = new IntegerRange(2, 4);
            var intersection = range1.Intersect(range2);

            Assert.That(intersection.Min, Is.EqualTo(2));
            Assert.That(intersection.Max, Is.EqualTo(4));
        }
示例#11
0
        public void Test1()
        {
            var points = IntegerRange.Create(7)
                         .Select(i => new GraphPoint {
                Id = Guid.NewGuid(), Name = $"v{i}"
            })
                         .ToArray();

            var relations = new[]
示例#12
0
        public void Should_check_if_supplied_value_is_in_range()
        {
            var range = new IntegerRange(1, 5);

            Assert.That(range.IsInRange(1));
            Assert.That(range.IsInRange(3));
            Assert.That(range.IsInRange(5));
            Assert.That(!range.IsInRange(0));
            Assert.That(!range.IsInRange(6));
        }
示例#13
0
        public void Test1()
        {
            var taken = new List <string>();

            for (int i = 0; i < 20; i++)
            {
                var generator = new StringGenerator("$d$d", 0);

                var items = generator.Take(5, taken.ToArray());
                taken.AddRange(items);
            }

            Assert.Equal(IntegerRange.Create(100), taken.Select(x => int.Parse(x)).OrderBy(x => x));
        }
示例#14
0
        public void Instantiate_IntegerFrom3To10_ListFrom3To10()
        {
            var integerRange = new IntegerRange()
            {
                Start = 3,
                End   = 10,
                Step  = 1
            };

            var factory = new RangeMembersFactory();
            var values  = factory.Instantiate(integerRange).ToList();

            Assert.That(values[0], Is.EqualTo("3"));
            Assert.That(values[7], Is.EqualTo("10"));
            Assert.That(values.Count, Is.EqualTo(8));
        }
示例#15
0
 public AnimationState(
     string name,
     IntegerRange range,
     List <AnimationEvent> animationEvents = null,
     bool loop              = true,
     float speed            = 1,
     IntegerRange loopRange = null
     )
 {
     Name            = name;
     Range           = range;
     AnimationEvents = animationEvents;
     Loop            = loop;
     Speed           = speed;
     LoopRange       = loopRange;
 }
示例#16
0
        public static int[] GetRange(int pageNumber, int pageSize, int navCount, bool navAlignRight = false)
        {
            int start, end;

            if (pageSize <= navCount)
            {
                start = 1;
                end   = pageSize;
            }
            else
            {
                var isNavCountEven = navCount % 2 == 0;
                int relativeLeft, relativeRight;

                if (isNavCountEven && !navAlignRight)
                {
                    relativeLeft  = navCount / 2 - 1;
                    relativeRight = navCount / 2;
                }
                else if (isNavCountEven && navAlignRight)
                {
                    relativeLeft  = navCount / 2;
                    relativeRight = navCount / 2 - 1;
                }
                else
                {
                    relativeLeft = relativeRight = (navCount - 1) / 2;
                }

                start = pageNumber - relativeLeft;
                end   = pageNumber + relativeRight;

                //Revises `start` and `end` if any of them overflow
                if (start < 1)
                {
                    end  += 1 - start;
                    start = 1;
                }
                else if (end > pageSize)
                {
                    start -= end - pageSize;
                    end    = pageSize;
                }
            }
            return(IntegerRange.Create(start, end + 1).ToArray());
        }
示例#17
0
        //────────────────────────────────────────

        /// <summary>
        /// 「-7~-5|-3~1|3|5~7|9|10|13~24」といった書式で返します。
        /// </summary>
        /// <returns>「-7~-5|-3~1|3|5~7|9|10|13~24」といった書式の文字列。</returns>
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            for (int nI = 0; nI < this.List_Item.Count; nI++)
            {
                IntegerRange o_Range = this.List_Item[nI];

                sb.Append(o_Range.ToString());

                if (nI + 1 < this.List_Item.Count)
                {
                    sb.Append("|");
                }
            }

            return(sb.ToString());
        }
示例#18
0
        public CityCollection(IRandomizer randomizer, int count, IntegerRange distanceRange)
        {
            for (int i = 0; i < count; i++)
            {
                Cities.Add(new City()
                {
                    Id = i
                });
            }

            foreach (var city in Cities)
            {
                foreach (var otherCities in Cities)
                {
                    city.Roads.Add(new Road()
                    {
                        City = otherCities, Distance = randomizer.IntInRange(distanceRange)
                    });
                }
            }
        }
示例#19
0
        public void IntegerRangeTest()
        {
            var range = new IntegerRange(10, 20);

            range.IsInRange(11).Should().BeTrue();
        }
示例#20
0
 public VHDLIntegerType()
 {
     Range = defIntegerRange;
 }
示例#21
0
 public VHDLIntegerType(IntegerRange range)
 {
     Range = range;
 }
 public IterableIntegerRange(IntegerRange range)
     : base(range.Start, range.End)
 {
     Current = range.Start;
 }
示例#23
0
        public void IntCountDesc()
        {
            var x = IntegerRange.FromCount(2, 5, -2).Freeze();

            Assert.True(x == List(2, 0, -2, -4, -6));
        }
示例#24
0
 public void Should_not_intersect_non_overlapping_ranges()
 {
     var range1 = new IntegerRange(1, 4);
     var range2 = new IntegerRange(5, 8);
     range1.Intersect(range2);
 }
        public void Instantiate_IntegerFrom3To10Step3_ListFrom3To9()
        {
            var integerRange = new IntegerRange()
            {
                Start = 3,
                End = 10,
                Step = 3
            };

            var factory = new RangeMembersFactory();
            var values = factory.Instantiate(integerRange).ToList();

            Assert.That(values[0], Is.EqualTo("3"));
            Assert.That(values[2], Is.EqualTo("9"));
            Assert.That(values.Count, Is.EqualTo(3));
        }
示例#26
0
 public IterableIntegerRange(IntegerRange range)
     : base(range.Start, range.End)
 {
     Current = range.Start;
 }
示例#27
0
        public void IntRangeAsc()
        {
            var x = IntegerRange.FromMinMax(2, 5, 1).Freeze();

            Assert.True(x == List(2, 3, 4, 5));
        }
示例#28
0
        public void IntRangeDesc()
        {
            var x = IntegerRange.FromMinMax(5, 2, -1).Freeze();

            Assert.True(x == List(5, 4, 3, 2));
        }
示例#29
0
        public void IntegerRange_OutsideRange()
        {
            var range = new IntegerRange(10, 20);

            range.IsInRange(0).Should().BeFalse();
        }
示例#30
0
        public void Test(object left, object right, int[] expected)
        {
            var result = IntegerRange.Range(left, right);

            CollectionAssert.AreEqual(expected, result);
        }
示例#31
0
        public void IntCountAsc()
        {
            var x = IntegerRange.FromCount(2, 5, 2).Freeze();

            Assert.True(x == List(2, 4, 6, 8, 10));
        }