Это может быть просто проблема точности с плавающей запятой. Если я посмотрю на декартовы значения, x
, y
и z
имеют порядок 1e6
, 1e6
и 1e2
для кадра GCRS, но они имеют порядок 1e20
, 1e10
и 1e17
соответственно для Галактической системы отсчета.
Учитывая точность 1e-15
для 8-байтовых чисел с плавающей запятой (numpy.finfo('f8').eps
), это означает, что значение x
координаты Галактики может быть точным только до 1e5
(метров). Тогда принятие нормы (с доминирующей неопределенностью x
) также приведет к точности порядка 1e5
метров, что намного больше, чем фактическое разделение.
Тот факт, что вычисленные значения по-прежнему близки друг к другу, во многом является удачей (хотя у него будет основная причина, такая как отклонения, усредняющие несколько).
Это также согласуется с тем фактом, что вы не видите проблемы (или меньше проблемы) для больших смещений. Несмотря на то, что я тестировал его сам, я все еще вижу разницу порядка 1e4
~ 1e5
) Чтобы быть точным, используя 0 и 10 широту, я получаю:
GCRS: 1104451.74511518
Galactic: 1108541.8206286128
Если мои предположения верны, то мой совет прост: используйте подходящую систему координат для ваших координат и учитывайте соответствующие неопределенности (как точность станка, так и точность используемой системы координат).