Найдите 2 точки на 3-м объекте и определите их расстояние - PullRequest
1 голос
/ 05 декабря 2009

Хорошо. Так что я думаю, что на Google Планете Земля можно было бы увидеть Нью-Йорк и Пекин ...

Я пытаюсь выяснить, как сопоставить точки на трехмерном примитивном объекте (сфере), получить их расстояние в любом направлении по окружности и их расстояние по диаметру. Точки будут координатами широты и долготы.

Прямо сейчас, это то, что я пытаюсь использовать для отображения координат (версия, не зависящая от кода):

  x1 =  radius * cos(long1) * cos(lat1);
  y1 =  radius * sin(long1) * cos(lat1);
  z1 =  radius * sin(lat1);

но я почти уверен, что это неправильно. Как я могу получить положение каждой точки и рассчитать их расстояния прямо по диаметру сферы, а также их расстояние по окружности сферы?

Спасибо.

1 Ответ

4 голосов
/ 05 декабря 2009

Ты на самом деле довольно близко. Чтобы получить расстояние по прямой линии, вам просто нужно сделать:

sqrt ((x2-x1) ^ 2 + (y2-y1) ^ 2 + (z2-z1) ^ 2)

Для расстояния вокруг большого круга, помните, что это угол pi diam . Точечное произведение векторов от центра Земли к двум точкам является косинусом угла. Итак, вы получите:

pi diam acos ((x1 * x2 + y1 * y2 + z1 * z1) / diam ^ 2)

Конечно, есть 2-е расстояние, если вы идете в другую сторону Земли, но для этого вам просто нужно 2 * пи - акос (...).

...