円の中の乱数

最終更新日22 Jun 2017 09:49

circle-random.png

[1]より、円の中心に集中した乱数。
これは点描画とか生成するのに使えそうな気がするのでメモ。
図はmathplotlibでプロットしました。

#%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
 
n = 400
r = np.random.random(n)
#r = np.power(np.random.random(n),1.0/3.0)
u = np.random.random(n)
v = np.random.random(n)*2.0-1.0#range -1.0-1.0
x = r*np.sqrt(1.0-v**2.0)*np.cos(2*np.pi*u)
y = r*np.sqrt(1.0-v**2.0)*np.sin(2*np.pi*u)
plt.plot(x, y, "o")
plt.savefig("figure.svg", transparent=True)

さらに3Dでプロットしてみます

#%matplotlib inline
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
 
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
 
n = 400
r = np.random.random(n)#点群の密度を真ん中よりにする
#r = np.power(np.random.random(n),1.0/3.0)#点群の密度を均一にする
u = np.random.random(n)
v = np.random.random(n)*2.0-1.0#range -1.0-1.0
x = r*np.sqrt(1.0-v**2.0)*np.cos(2*np.pi*u)
y = r*np.sqrt(1.0-v**2.0)*np.sin(2*np.pi*u)
z = r*v
 
ax.scatter(x, y, z, marker="o")
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
 
plt.show()
fig.savefig("figure2.svg", transparent=True)
Bibliography
1. 床井研究室2010年11月22日 [OpenGL[GLSL] SSAO (Screen Space Ambient Occlusion)]


ファイル

サポートサイト Wikidot.com