def test_hgc_self_observer(): # Test specifying observer='self' for HGC obstime = Time('2001-01-01') hgc = HeliographicCarrington(10*u.deg, 20*u.deg, 3*u.AU, observer='self', obstime=obstime) # Transform to HGS (i.e., observer='self' in the source frame) hgs = hgc.transform_to(HeliographicStonyhurst(obstime=obstime)) # Manually calculate the post-transformation longitude lon = sun.L0(obstime, light_travel_time_correction=False, nearest_point=False, aberration_correction=False) lon += (hgc.radius - _RSUN) / speed_of_light * sidereal_rotation_rate assert_quantity_allclose(Longitude(hgs.lon + lon), hgc.lon) assert_quantity_allclose(hgs.lat, hgc.lat) assert_quantity_allclose(hgs.radius, hgc.radius) # Transform back to HGC (i.e., observer='self' in the destination frame) hgc_loop = hgs.transform_to(hgc.replicate_without_data()) assert_quantity_allclose(hgc_loop.lon, hgc.lon) assert_quantity_allclose(hgc_loop.lat, hgc.lat) assert_quantity_allclose(hgc_loop.radius, hgc.radius)
def test_hgc_loopback_self_observer(): # Test the HGC loopback where only one end has observer='self' obstime = Time('2001-01-01') coord = HeliographicCarrington(10*u.deg, 20*u.deg, 3*u.AU, observer='self', obstime=obstime) new_observer = HeliographicStonyhurst(40*u.deg, 50*u.deg, 6*u.AU) new_frame = HeliographicCarrington(observer=new_observer, obstime=obstime) new_coord = coord.transform_to(new_frame) # Manually calculate the longitude shift due to the difference in Sun-observer distance lon = (6*u.AU - 3*u.AU) / speed_of_light * sidereal_rotation_rate assert_quantity_allclose(new_coord.lon, coord.lon + lon) assert_quantity_allclose(new_coord.lat, coord.lat) assert_quantity_allclose(new_coord.radius, coord.radius)