In [ ]:
import plotly.offline as py
import plotly.graph_objs as go
py.init_notebook_mode(connected=True)
import numpy as np
In [ ]:
def mesh2D(xlim, ylim, n=5): #Set up Meshgrid
if isinstance(n, int):
x = np.linspace(xlim[0],xlim[1],n)
y = np.linspace(ylim[0],ylim[1],n)
elif isinstance(n, list):
x = np.linspace(xlim[0],xlim[1],n[0])
y = np.linspace(ylim[0],ylim[1],n[1])
else:
raise Exception("Invalid Parameter")
return np.meshgrid(x, y, sparse=True)
In [ ]:
def normalize(v): #for Evec, Eval
magnitude = np.sqrt(v[0]**2 + v[1]**2 + v[2]**2)
if magnitude==0:
raise ValueError("Zero vector cannot be normalized.")
else:
return v/magnitude
In [ ]:
class Line:
def __init__(self, vec, offset):
self.vec = vec
t = np.linspace(0,1,6) #parameter
self.x = offset[0] + t*vec[0] #x points
self.y = offset[1] + t*vec[1] #y points
self.z = offset[2] + t*vec[2] #z points
def gObject(self, layout=None):
lineObject = go.Scatter3d(mode="lines",
x=self.x,
y=self.y,
z=self.z,
line=dict(color=('rgb(210,64,0)'),
width=7)
)
return lineObject
In [ ]:
class Sphere:
def __init__(self, radius=5, center=[0, 0, 0]):
self.radius = radius
self.center = center
meshSize = 20
theta = np.linspace(0,2*np.pi,meshSize)
phi = np.linspace(0,np.pi,meshSize)
self.x = radius*np.outer(np.cos(theta),np.sin(phi)) + center[0]
self.y = radius*np.outer(np.sin(theta),np.sin(phi)) + center[1]
self.z = radius*np.outer(np.ones(meshSize),np.cos(phi)) + center[2]
def gObject(self):
sphere = go.Surface(name='Sphere',
x=self.x,
y=self.y,
z=self.z,
showscale=False,
opacity=0.5,
colorscale=[[0.0, 'rgb(2.137.59)'],
[1.0, 'rgb(0,62,116)']
]
)
return sphere
In [ ]:
class Point:
def __init__(self, position):
self.position = np.array(position)
def gObject(self):
point = go.Scatter3d(mode="markers",
x=[self.position[0]],
y=[self.position[1]],
z=[self.position[2]],
marker=dict(color='rgb(12,161,205)',
size=7
)
)
return point
In [ ]:
line1 = Line([1, 0, 0], [0, 0, 0])
line2 = Line([0, 1, 0], [0, 0, 0])
line3 = Line([0, 0, 1], [0, 0, 0])
sphere1 = Sphere(2)
point1 = Point([2,0,0])
data = [line1.gObject(),
line2.gObject(),
line3.gObject(),
sphere1.gObject(),
point1.gObject()
]
In [ ]:
#fig=go.Figure(data=data)
#py.plot(fig)
In [ ]:
theta1 = np.pi/2
theta2 = -np.pi/2
t1 = np.linspace(0, theta1, 10)
t2 = np.linspace(0, theta2, 10)
Rz = np.matrix([[np.cos(theta1), -np.sin(theta1), 0], [np.sin(theta1), np.cos(theta1), 0], [0, 0 ,1]])
Rx = np.matrix([[1, 0, 0], [0, np.cos(theta1), -np.sin(theta1)], [0, np.sin(theta1), np.cos(theta1)]])
init = np.matrix([[2], [0], [0]])
p1 = Rz*init
p2 = Rx*p1
traP1 = np.reshape(p1, (1,3))
traP2 = np.reshape(p2, (1,3))
traP1list = traP1.tolist()[0]
traP2list = traP2.tolist()[0]
# p3 = Rz*init
# p4 = Rx*p3
# traP3 = np.reshape(p3, (1,3))
# traP4 = np.reshape(p4, (1,3))
# traP3 = traP3.tolist()[0]
# traP4 = traP4.tolist()[0]
In [ ]:
point2 = Point(traP1list)
point3 = Point(traP2list)
data.append(point2.gObject())
data.append(point3.gObject())
In [ ]:
fig=go.Figure(data=data)
py.plot(fig)
In [ ]: