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()


-2.73580810776
-2.99959949128
-0.999899871767

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 [ ]: