将经纬度转换为球面上的3d坐标是否准确?

问题描述 投票:0回答:1

在Unity3d中,我创建了一个球体,并用地球纹理对其进行了纹理化。

我将经纬度转换为3d坐标我在那个位置上生成了一个立方体。立方体在球体上,但不准确。(例如,当我为伦敦输入“ 51.504815,-0.128506”时,该多维数据集在法国的某个地方生成(44.854302,-0.595576))

我知道地球不是球形而是椭圆形,这会产生影响吗?我应该怎么做才能将转换结果准确地生成到正确的位置?

下面是我使用的转换函数,并且我在网络上使用了另一个函数,但是返回了相同的结果。

private Vector3 GetSphericalCoordinates(double latitude, double longitude)
{
    latitude = latitude * Math.PI / 180D;
    longitude = longitude * Math.PI / 180D;

    double x = radius * Math.Cos(latitude) * Math.Sin(longitude);
    double y = radius * Math.Sin(latitude);
    double z = -radius * Math.Cos(latitude) * Math.Cos(longitude);

    return new Vector3((float)x, (float)y, (float)z);
}

和纬度,经度(0,0),(90,0)(0,90)...恰好在象限上。所以我想知道为什么其他经纬度值不正确...

预先感谢。

unity3d math coordinates latitude-longitude
1个回答
0
投票

由于网格数量和纹理UV设置,因此不准确。如果增加网格数并使纹理的UV正确生成的对象将位于正确的位置。

© www.soinside.com 2019 - 2024. All rights reserved.