Я не особенно знаком с конкретным контекстом здесь (небесной механики), но там, где есть несколько взаимопреобразуемых представлений одной и той же информации, тогда (в соответствии с вашим собственным мышлением) нормально обозначить одно представление как общее. или главное представление, а затем реализовать все преобразования во вторичные представления через это главное представление.
При таком подходе для каждого вторичного представления должен быть реализован набор из двух конкретных преобразований: одно для преобразования из основного во вторичное, другое для преобразования из вторичного в главное.
Кроме того, когда требуется общее преобразование из вторичного во вторичное, это будет двухэтапный процесс, включающий два конкретных преобразования, а не одноэтапный процесс, когда начальное или конечное представление является основным.
Решающий вопрос для реализации заключается в том, хотите ли вы, чтобы это общее преобразование обрабатывалось автоматически в коде, или вы просто запрограммируете определенные преобразования вручную.
Другими словами, сможете ли вы закодировать ck.ConvertTo(J2000)
и заставить код автоматически определить, какие конкретные шаги преобразования необходимы для перехода от существующего представления (хранящегося в ck
) к представлению J2000, или вам придется кодировать конкретные шаги на месте каждой конверсии CkConverter.FromICFRToJ2000(CkConverter.FromTEMEToICFR(ck))
(пример, если существующее представление в ck
— TEME).
При автоматическом подходе вам придется запрограммировать таблицу поиска (или какой-либо другой способ выражения связи) с одной записью для каждой возможной комбинации начального и конечного представления, и с каждой записью, выражающей конкретное преобразование (я) (одно или два), необходимых для достижения общего преобразования.
Конкретный код преобразования не будет экспоненциально расти с каждым дополнительным представлением, поэтому, если каждое преобразование математически сложное, вы сэкономили усилия по кодированию на этом фронте, но эта таблица поиска (содержащая простые и важные данные о путях преобразования между каждым представлением) будет по-прежнему растут в геометрической прогрессии.
Рекомендую посмотреть эти видео для лучшего погружения в вопрос: