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); } }
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)); }
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)); }
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)); }
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); }
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; }
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; }
public static ColourVectorAssertions Should(this ColourVector value) => new ColourVectorAssertions(value);
public void Test_ColourVector_Divide() { var v1 = new ColourVector(1, 2, 3); (v1 / 2.0).Should().Be(new ColourVector(0.5, 1, 1.5)); }