二十面体の三角形の細分割が正三角形ではないのはなぜですか(PostGIS)?

Nov 24 2020

PostGISを使用して測地線多面体を作成しています。私は分割してい基地二十面体点(付録A参照)の最初のレベルに、クラスIサブディビジョンを。

セットアップ

簡単にするために、これらの点によって形成される最初の三角形だけを取り上げましょう。

CREATE TABLE pix (
    id bigserial
  , name text
  , geog geography(POINT,4326) -- use WGS84
);

insert into pix values (DEFAULT, 'China', st_point(122.3, 39.1));
insert into pix values (DEFAULT, 'Norway', st_point(10.53619898, 64.7));
insert into pix values (DEFAULT, 'Arabian sea', st_point(58.15770555, 10.44734504));

これは基本二十面体三角形を作成します

三角形の辺の番号は、このクエリによって生成された表に示されている行番号に対応しています。

select p1.name
  , p2.name
  , st_distance(p1.geog, p2.geog) as dist
from pix p1
  cross join pix p2
where p1.id < p2.id

ポイントはほぼ等距離です。-そこ上記シードデータはST_DISTANCEが戻っている球体、回転楕円体ではないが、仮定生成されているようですので、小さな変動はあるuse_spheroid falsest_distanceはるかに近い距離が得られますが、使用していることを注記falseすべての提示のクエリにしても問題が変更しませんが、以下に説明しました。

クラスI細分化の第1レベル

insert into pix (name, geog)
select p1.name || '-' || p2.name
  , st_project(p1.geog, st_distance(p1.geog, p2.geog) / 2, st_azimuth(p1.geog, p2.geog)) as geog
from pix p1
  cross join pix p2
where p1.id < p2.id

上記は、元の三角形上の点のペアのそれぞれの中点を生成します

そして、これらはこのクエリによって生成された次の距離を持っています

select p1.name
  , p2.name
  , st_distance(p1.geog, p2.geog) as dist
from pix p1
  cross join pix p2
where p1.id < p2.id
  and p2.id > 3
order by dist

問題

セグメント7、8、および9の距離(約4000km)は、セグメント1〜6の距離(約3500km)よりもはるかに長くなっています。

このアルゴリズムが等式三角形に近いものを作成しないのはなぜですか?私の使用st_azimuthst_project間違っていますか?それとも、球への点の射影についてのより基本的な数学を見逃しましたか?

回答

3 GevaertJoep Nov 28 2020 at 23:35

はい、これはタイル状の二十面体から球への投影によるものです。私はこのプロセスを次のように考えています。

通常の二十面体を取ります。すべての角が同じ球上にあるため、球に投影した場合の距離も同じです。ただし、投影されていない二十面体を取り、すべての三角形を細分割すると、生成された点はその球上にありません。これらが外側に移動すると、この画像の赤い三角形のように大きくなります。

また、これらの構造はアーキテクチャで使用されます。測地線ドーム計算機(彼らのサイトからの画像)を使用すると、エッジの長さBが3.5の場合、Aに対応する長さは3.9であることがわかります。

だから確かにあなたが逃したのは数学でした。