In [1]:
%matplotlib inline
from math import *
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
In [81]:
from numpy import linspace,pi,cos,sin
phi = np.linspace(0,6*pi,1000)
x = sin(phi)+2*sin(2*phi)
y = cos(phi)-2*cos(2*phi)
z = -sin(3*phi)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
print x.min()
print y.min()
print z.min()
ax.scatter(x,y,z, c=x,edgecolor='w')
ax.scatter(x/1.3, y/1.2, z/1.3, c=x, edgecolor='w', cmap=plt.cm.gist_rainbow_r)
ax.scatter(x/1.8,y/1.5, z/1.2, c=x,edgecolor='w',cmap=plt.cm.gist_rainbow)
plt.show()
In [74]:
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for phi in np.linspace(0,6*pi, 1000):
for t in range(1000):
# phi = np.random.uniform(low=0, high=2*pi)
x = np.random.uniform(low=-3, high=3)
y = np.random.uniform(low=-3, high=3)
z = np.random.uniform(low=-1, high=1)
margin=1.2
#if sin(phi)+2*sin(2*phi)/margin < x < sin(phi)+2*sin(2*phi)*margin:
if np.linalg.norm([x, sin(phi)+2*sin(2*phi)]) < 0.5:
#print np.linalg.norm([x, cos(phi)-2*cos(2*phi)])
#if cos(phi)-2*cos(2*phi)/margin < y < cos(phi)-2*cos(2*phi)*margin:
if np.linalg.norm([y, cos(phi)-2*cos(2*phi)]) < 0.5:
print np.linalg.norm([y, cos(phi)-2*cos(2*phi)])
#if -sin(3*phi)/margin < z < -sin(3*phi)*margin:
if np.linalg.norm([z, -sin(3*phi)]) < 0.5:
#print z
ax.scatter(x,y,z)
plt.show()
In [ ]: