Ejemplo n.º 1
0
 public void CAP(Vector2d Point, int Frame, ref ColourVector ot)
 {
     int l = ThingsCache.Count();
     for (int i = 0; i < l; i++)
     {
         IPhysical<Vector2d> Current = ThingsCache[i];
         double diffX = Current.Position.x - Point.x;
         if (diffX * diffX < 1024)
         {
             double diffY = Current.Position.y - Point.y;
             if (diffY * diffY < 1024)
             {
                 if (diffX != 0 && diffY != 0)
                 {
                     double d2 = Vector2d.DistSquared(Current.Position, Point);
                     ot.AddMultiply(Current.Colour, 5184 / (d2 * d2));
                 }
             }
         }
     }
     for (int i = 0; i < ot.dimensions; i++)
     {
         ot.CoOrdinates[i] += BetterRandom.StdDev(0.01);
     }
 }
Ejemplo n.º 2
0
        public void Test_ColourVector_Multiply()
        {
            var v1 = new ColourVector(1, 2, 3);

            (v1 * 2.0).Should().Be(new ColourVector(2, 4, 6));
            (2.0 * v1).Should().Be(new ColourVector(2, 4, 6));
        }
Ejemplo n.º 3
0
        public void Test_ColourVector_Add()
        {
            var v1 = new ColourVector(1, 2, 3);
            var v2 = new ColourVector(4, 5, 6);

            (v1 + v2).Should().Be(new ColourVector(5, 7, 9));
        }
Ejemplo n.º 4
0
        public void Test_ColourVector_Subtract()
        {
            var v1 = new ColourVector(1, 2, 6);
            var v2 = new ColourVector(4, 5, 3);

            (v2 - v1).Should().Be(new ColourVector(3, 3, -3));
            (v2 - v2).Should().Be(new ColourVector(0, 0, 0));
        }
Ejemplo n.º 5
0
        public void Test_ColourVector_Construction()
        {
            var v = new ColourVector(1, 2, 3);

            v.X.Should().Be(1);
            v.Y.Should().Be(2);
            v.Z.Should().Be(3);
        }
Ejemplo n.º 6
0
        public ColourVector NextColourOnLine(Vector2d Point, double Angle, int Frame)
        {
            Angle = CircleifyAngle(Angle);
            IPhysical<Vector2d>[] Arr;
            int Dir;
            int Comp;

            GetArrayCompAndDirFromAngle(Angle, out Arr, out Dir, out Comp);

            int i = FindInitialIterator(Arr, Dir);
            i = MoveIteratorToFirstRelevantObject(Point, Arr, Dir, Comp, i);

            ColourVector c = new ColourVector(0, 0, 0, 0);
            double closest = FindPointsOnLine(Point, Angle, Arr, Dir, Comp, ref i, ref c);
            c.Multiply(512 / closest);
            return c;
        }
Ejemplo n.º 7
0
        private static double FindPointsOnLine(Vector2d Point, double Angle, IPhysical<Vector2d>[] Arr, int Dir, int Comp, ref int i, ref ColourVector c)
        {
            double closest = 3600;
            while (Dir * (Dir * (Arr[i].Position.CoOrdinates[Comp])) < (Dir * (Point.CoOrdinates[Comp] - (80 * Dir))))
            {
                Vector2d diff = (Arr[i].Position - Point);
                double DistSquared = Vector2d.DistSquared(Arr[i].Position, Point);
                if (DistSquared != 0)
                {
                    double AngleFromPoin = Vector2d.AngleTowards(Arr[i].Position, Point);
                    double NormalisedDistPerpendicularToThing = Math.Tan(Angle - AngleFromPoin);
                    double q = DistSquared * NormalisedDistPerpendicularToThing * NormalisedDistPerpendicularToThing;
                    if (q < (Arr[i].Size * Arr[i].Size))
                    {
                        if (DistSquared < closest)
                        {
                            closest = DistSquared;
                            c = Arr[i].Colour;
                        }
                    }
                }
                i++;
            }

            return closest;
        }
Ejemplo n.º 8
0
 public static ColourVectorAssertions Should(this ColourVector value)
 => new ColourVectorAssertions(value);
Ejemplo n.º 9
0
        public void Test_ColourVector_Divide()
        {
            var v1 = new ColourVector(1, 2, 3);

            (v1 / 2.0).Should().Be(new ColourVector(0.5, 1, 1.5));
        }