pySpherepts > getHammersleyNodes()移植完了 > IcosNodesと比べて中心からの距離が小さい?


動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04 LTS desktop amd64
TensorFlow v1.2.1
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)

pySpherepts > on GitHub > 球面上の点: Icosahedral Nodesを取るNumpy+Scipy実装
の続き。

getHammersleyNodes()の移植が完了した。

実際に使ったところ、気になる点が見つかった。

気になる部分

Jupyter Notebook on GitHub

samplePlotSphNodes_gHN_171203.ipynb
'''
HammersleyNodes 
'''

import numpy as np
from pylab import rcParams
import getHammersleyNodes_171203 as gHN
import plotSphNodes_171127 as pSN

rcParams['figure.figsize'] = 10,10
rcParams['figure.dpi'] = 75

xs = gHN.getHammersleyNodes(100)

elev, azm = 30.0, -30.0

#NG: hidden by the central sphere
pSN.plotSphNodes(xs, elevation=elev, azimuth=azm)

# *1.05: required not to be hidden by the central sphere
pSN.plotSphNodes(xs * 1.05, elevation=elev, azimuth=azm)

print(xs)

一つ目のplotSphNodes()による図では球上の点が見えない。
(中心の大球で隠れてしまっている)

二つ目の図(点の中心からの距離を増やした)の場合は以下となる。

MATLABコードの結果は以下で、二つ目の図と分布はほぼ同じになる。
(距離を増やした分のずれはある)。
(距離を増やさない場合での両者の値は一致している)。
(azimuthの違いのため、view(60,30)としている)。

getIcosNodes()との違い

  • getIcosNodes() : 点が隠れない
  • getHammersleyNodes() : 点が隠れる

両者の点分布生成結果に関して、中心からの距離が異なるように思われる。
この場合、二つの結果を使った計算(例:球殻積分)結果を比較すると誤差を生むかもしれない。