Преобразовать земную центрированную c систему координат в систему координат, выровненную по касательной плоскости? - PullRequest
1 голос
/ 14 января 2020

Учитывая, что Земля идеально сферическая с радиусом R. Система координат c Земли-центри E определяется следующим образом:

  • центр этой сферы - источник,
  • Северный полюс Земли представляет ось z .
  • Широта 0 и долгота 0 представляют ось x .
  • Широта 0 и долгота 90 представляют ось y .

Теперь на любой заданной широте, долготе и высоте мы можем создать локальную систему координат S , чья плоскость yz является тангенциальной к поверхности Земли, а z указывает на северный полюс, а x указывает перпендикулярно этой плоскости.

Мне нужна матрица преобразования 4x4 для преобразования 3-я точка от земно-центрированной c системы координат E до этой локальной системы координат S .

Ответы [ 2 ]

1 голос
/ 14 января 2020

Матрица преобразования из S в E может быть составлена ​​как произведение матриц:

 Shift along X axis by R+Altitude
 Rotation about Y-axis by Latitude
 Rotation about Z-axis by Longitude

Сделать инверсию этой матрицы, чтобы получить преобразование ES

0 голосов
/ 14 января 2020

Предполагая, что Земля сферическая, это на самом деле не так сложно.

Сферические координаты для спасения (см. здесь )! Сфера может быть параметризована двумя углами (как уже упоминалось в постановке задачи). Основываясь на этом, вы можете сформулировать уравнения для преобразования в декартовы координаты. Если вы вычислите производную этих уравнений по обоим углам, вы получите уравнения с указанием касательной и битангенса любой точки на сфере. Исходя из этого, вы можете использовать вектор, указывающий от центра к точке на сфере, как нормаль, или как перекрестное произведение между касательной и битангенсом. Формулировки для тангенса и битангенса также приведены в ссылке выше.

Теперь у вас есть ортогональная система для каждой точки сферы, основанная на ваших 3 векторах: тангенс, битангенс и нормаль. Единственная часть, которая отсутствует, это перевод, который представляет собой просто вектор, указывающий от центра к точке на сфере. Имея все необходимые ингредиенты, вы можете создать матрицу 4x4 из этих осей, используя стандартные библиотеки, такие как glm, или просто разместить эти векторы как столбцы вашей матрицы (не забудьте нормализовать касательные, битовые и нормальные!). В зависимости от того, используете ли вы матрицы строк или столбцов, вам может понадобиться транспонировать эту матрицу.

...