Это работа за конвертом, но:

я есть следующая информация:

Существует сфера с началом (0,0,0) и радиусом R. После пересечения лучевой сферы я знаю точку (XYZ) в трехмерном пространстве, которая находится на сфере (точное положение в трехмерном пространстве, где проходит линия корпус шара).

Для моей программы я хотел бы рассчитать широту и долготу точки XYZ на сфере, но я не могу придумать (или Google) способ сделать это легко.

Короче говоря, функция, которую я пытаюсь написать, состоит в следующем:

public static LatLon FromVector3(Vector3 position, float sphereRadius)
{
    return Latitude and Longitude
}

Кто-нибудь знает, как это сделать? Для справки этот файл Wiki SVG может быть полезен:

Обновить:

Спасибо за все полезные ответы, так что в конце я пошел с этим кодом:

 public static LatLon FromVector3(Vector3 position, float sphereRadius)
    {
        float lat = (float)Math.Acos(position.Y / sphereRadius); //theta
        float lon = (float)Math.Atan(position.X / position.Z); //phi
        return new LatLon(lat, lon);
    }

Теперь я должен думать о том, какой ответ помог мне больше всего принять: P.

Ответы на вопрос(0)

Ваш ответ на вопрос