pySpherepts > Jupyter > 結果の座標を球面上に表示する実装 v0.2 > 奥の点排除 > 同じものが得られた
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 > Jupyter > 結果の座標を球面上に表示する実装 v0.1 > 余分な点が見える (奥側の点のようだ)
上記の問題点は「奥側の点が隠面処理されずに見えている」ことだろう。
プロットするデータから排除するようにした。
排除を容易にするため一つの座標のquadrant(象限)を排除することにした。
加えて、view設定を変更することで、残った点が正面に見えるようにする。
code v0.2
import matplotlib.pyplot as plt
from matplotlib import cm, colors
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from pylab import rcParams
from matplotlib.colors import LightSource
# https://stackoverflow.com/questions/31768031/plotting-points-on-the-surface-of-a-sphere-in-pythons-matplotlib
rcParams['figure.figsize'] = 10,10
rcParams['figure.dpi'] = 130
# Create a sphere
r = 1
pi = np.pi
cos = np.cos
sin = np.sin
phi, theta = np.mgrid[0.0:pi:100j, 0.0:2.0*pi:100j]
x = r*sin(phi)*cos(theta)
y = r*sin(phi)*sin(theta)
z = r*cos(phi)
#Import data
data = np.genfromtxt('res_IcodsNodes_4_0_171126.txt')
data = data * 1.0005
xx, yy, zz = np.hsplit(data, 3)
xs, ys, zs = [], [], []
for ax, ay, az in zip(xx, yy, zz):
if (ay > 0):
xs += [ax]
ys += [ay]
zs += [az]
xx, yy, zz = xs, ys, zs
#Set colours and render
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(
x, y, z, rstride=1, cstride=1, color='y', alpha=1.0, linewidth=0, shade=False)
ax.scatter(xx,yy,zz,color="k",s=15)
ax.set_xlim([-1,1])
ax.set_ylim([-1,1])
ax.set_zlim([-1,1])
ax.set_aspect("equal")
plt.tight_layout()
ax.view_init(0, 90)
plt.show()
MATLABの結果
MATLABでsphereptsを実行した結果は以下。
上記は下記にて得られた (spherepts使用)。
>> [x0,tri0] = getIcosNodes_log(4,0);
>> plotSphNodes(x0)
>> view(0,0)
APIの比較
Matplotlibのview_init()
https://matplotlib.org/mpl_toolkits/mplot3d/api.html
view_init(elev=None, azim=None)
MATLABのview()
https://jp.mathworks.com/help/matlab/ref/view.html
view(az,el)
view(90,0)にすると配置が異なる。
座標系(xyzとxzyなど)が二つのプラットフォームで異なるのかも。
azimuthの定義が異なっていた。
Author And Source
この問題について(pySpherepts > Jupyter > 結果の座標を球面上に表示する実装 v0.2 > 奥の点排除 > 同じものが得られた), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/af4827dc6c56366f6112著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .