Source code for svcco.implicit.tests.bumpy_sphere
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
[docs]def bumpy_sphere(samples=10,scale=5,a=3,b=1):
data = np.zeros((samples**2,3))
theta = np.linspace(0,2*np.pi,num=samples)
phi = np.linspace(0,np.pi,num=samples)
#P,T = np.meshgrid(theta,phi)
count = 0
for t in theta:
for p in phi:
r = scale + np.sin(a*t)*np.sin(b*p)
data[count,0] = r*np.cos(t)*np.sin(p)
data[count,1] = r*np.sin(t)*np.sin(p)
data[count,2] = r*np.cos(p)
count += 1
final_data = []
#def bs(t,p,a=a,b=b,scale=scale):
# r = scale + np.sin(a*t)*np.sin(b*p)
# x = r*np.cos(t)*np.sin(p)
# y = r*np.sin(t)*np.sin(p)
# z = r*np.cos(p)
# return x,y,z
#x,y,z = bs(T,P)
#x = x.flatten()
#y = y.flatten()
#z = z.flatten()
#fig = plt.figure()
#ax = fig.add_subplot(111,projection='3d')
#ax.scatter3D(x,y,z)
#plt.show()
#final_data = np.array([x,y,z]).T
#print(final_data.shape)
#final_data = np.unique(final_data,axis=0)
for i in range(data.shape[0]):
if i == 0:
final_data.append(data[i,:])
continue
add = True
for j in range(i):
if np.all(np.isclose(data[i,:],data[j,:])):
add = False
if add:
final_data.append(data[i,:])
return np.array(final_data)