Hello,
I need to plot the following surfaces given by:
(\rho-c)^2+z^2=c^2-\alpha^2 \quad \tan(\phi-\phi_0)=\frac{\rho^2+z^2-\alpha^2}{2\alpha z},
where \rho is the radius, z is the height and \phi is the azimuth. c,\alpha,\phi_0 are constants with c\geq\alpha.
The first surface is a torus, but I can’t get anything similar to a torus when I try to plot it
What have you tried? It is much easier to help you if you have mostly working code to start from.
import numpy as np
import matplotlib.pyplot as plt
def cart2pol(x, y):
rho = np.sqrt(x**2 + y**2)
phi = np.arctan2(y, x)
return(rho, phi)
def pol2cart(rho, phi):
x = rho * np.cos(phi)
y = rho * np.sin(phi)
return(x, y)
c=25
a=5
r=np.linspace(0,20,200,endpoint=True)
phi=np.linspace(0,2*np.pi,200,endpoint=True)
x,y=pol2cart(r,phi)
z=np.zeros((2,200))
z[0][:]=np.sqrt((c**2-a**2-(r-c)**2))
z[1][:]=-z[0][:]
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(x, y, z, antialiased=True, color='orange')