4

私は、経度と緯度のデータから正しい出力を得るために、一日の大半を頭を悩ませてきました。このデータが正しいことは、Google マップにプロットすることでわかります。たとえば、次の緯度と経度の座標のデータを表示します: 経度: 4.905396 緯度: 52.364643

Google マップでプロットすると、オランダのアムステルダムである正しい場所が示されます。 gmapsでアムステルダムの位置をプロット

これをアプリケーションでプロットすると、次のようになります。 場所を示す自作アプリ

はい、Googleマップは2D表現で、私のものは3Dですが、これは経度と緯度の値が正しいことを証明するためのものであるため、それらを3D空間に変換する私の式が正しい場合、それらは同じ場所に表示されるはずです.

私はウェブ上の多くの記事やstackoverflow自体を読んできました。私はこれらの記事を読んで、私が見たさまざまなタイプの数式をすべて適用しました。

緯度と経度を 3D 空間のポイントに変換する

緯度と経度への球の 3D 座標

これら2つは、良い例で明確な説明があるように見えましたが、何も機能していないようです。私が今行っているのは、3D 空間での位置を計算し、それを正規化し、それを方向として使用して、アプリケーションのスクリーンショットでわかるように、端に点のある線を描くことです。これは、ほとんどの例で使用されている地球の半径を使用する場合、中心から計算された位置まで線を引くことと同じです。

私の現在の式は次のとおりです。

X = r * cos(latitude) * cos(lontitude);
Y = r * cos(latitude) * sin(longitude);
Z = r * sin(latitude);

どちらが間違っているかはわかっていますが、ウェブで見たすべての例を調べましたが、正しいデータを示したものはありませんでした。Googleマップのデータでテストすることで、少なくとも入力が正しいことがわかりました.

アップデート1:

テクスチャのトポロジを確認しました。緯度と経度が 0.0000 と 0.0000 の場合は次のようになります。 緯度と経度を 0.0000 と 0.0000 でチェック

つまり、これはすでに間違っていることを意味しますが、Google マップが示すように、次のようになるはずです。 グーグルマップ緯度経度0.0000、0.0000

緑の矢印は 0.0000、0.0000 マークです。だから私のものはオフです、それは明らかです、それは横にオフです。私はそれがテクスチャかもしれないと思っています(そうは思わない/そう願っています)、私はこれを使用しています: http://naturalearth.springercarto.com/ne3_data/16200/textures/2_no_clouds_16k.jpg

私が入手したもの: Shadedrelief Natural Earth textures

更新 2: テクスチャを使用して球のトポロジを確認しました。0.0 と 0.0 でオフになっているようですが、式にも疑問があります。Web からさまざまなものを試してみましたが、最初の式と同じ 0.0 0.0 になるものもありましたが、そうでないものもありました。私の経度と緯度は -180~180 度と -90~90 度です。

更新 3: これはアムステルダムのプロットのビューです。0.0 0.0 lat/long piont のように、少しずれています。地図か計算のどこかが間違っていると思います。テクスチャを少しずらして調整してみます。 ほぼ固定

4

2 に答える 2

7

最初に角度を度ではなくラジアンで指定する必要があります。

それからチェックしてください:どの軸が上がっていますか?数式は、Z が上 (北極) で、X が画面の外 (0,0 を表示するために地球を回転させている) と一致しています。

ただし、Y を上に、Z を画面から外してビューをレンダリングする方が一般的です。

テクスチャ座標がどのように生成されるかを確認して、どの軸が sin で使用されているかを確認します。

于 2012-07-17T19:05:29.737 に答える
1

これまで言及されていませんが、cos と sin に渡される角度が度ではなくラジアンであることを確認してくださいhttp://en.cppreference.com/w/cpp/numeric/math/cos

于 2012-07-17T18:52:21.133 に答える