public double DEC_degrees_to(MechanicalPoint b) { Contract.Requires(!(b is null)); // RA is circular, DEC is not return((b._DECm - _DECm) / 3600.0); }
public static double Subtract(MechanicalPoint a, MechanicalPoint b) { Contract.Requires(!(a is null)); Contract.Requires(!(b is null)); double ra_distance = a.RA_degrees_to(b); double dec_distance = a.DEC_degrees_to(b); // FIXME: Incorrect distance calculation, but enough for our purpose return(Math.Sqrt(ra_distance * ra_distance + dec_distance * dec_distance)); }
public double RA_degrees_to(MechanicalPoint b) { Contract.Requires(!(b is null)); // RA is circular, DEC is not // We have hours and not degrees because that's what the mount is handling in terms of precision // We need to be cautious, as if we were to use real degrees, the RA movement would need to be 15 times more precise long delta = b._RAm - _RAm; if (delta > +12 * 3600) { delta -= 24 * 3600; } if (delta < -12 * 3600) { delta += 24 * 3600; } return((double)(delta * 15) / 3600.0); }