Найдите 2 точки на 3d-объекте и определите их расстояние

StackOverflow https://stackoverflow.com/questions/1851003

  •  13-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Спасибо.

Это было полезно?

Решение

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

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

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

пиdiamacos((x1*x2 + y1*y2 + z1* z1)/диаметр ^2)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top