public Ray(CoordD origin, double angle, double magnitude)
        {
            Origin = origin;
            Magnitude = magnitude;
            Velocity = 1.0;

            Angle = BoundAngle(angle);
        }
        public Eye(CoordD origin, double radius, double theta, double offset, double magnitude)
        {
            Radius = radius;
            Ray = new Ray(origin.ByAngle(theta + offset, radius), theta, magnitude);

            Offset = offset;
            while (Offset < 0) Offset += Consts.FullTurn;
            while (Offset >= Consts.FullTurn) Offset -= Consts.FullTurn;
        }
 public CoordI(CoordD other)
 {
     X = (int)other.X;
     Y = (int)other.Y;
 }
 public void Copy(CoordD other)
 {
     X = (int)other.X;
     Y = (int)other.Y;
 }
 public void Move(CoordD pos)
 {
     Ray.Origin = new CoordD(pos);
 }
 public Eye Create(CoordD origin, double radius, double angle, double offset, double magnitude)
 {
     return new Eye(origin, radius, angle, offset, magnitude);
 }