var('u v')
def torus(r1, r2, u, v):
xt = r1*cos(u)+r2*cos(u)*cos(v)
yt = r1*sin(u)+r2*sin(u)*cos(v)
zt = r2*sin(v)
return xt,yt,zt
def warped_torus(r1, r2, u, v):
xwt = r1*cos(u)+r2*cos(u)*cos(v)+abs(sin(5*u)+sin(3*v))*cos(u)*cos(v)+32
ywt = r1*sin(u)+r2*sin(u)*cos(v)+abs(sin(5*u)+sin(3*v))*sin(u)*cos(v)
zwt = r2*sin(v)+abs(sin(5*u)+sin(3*v))*sin(v)
return xwt,ywt,zwt
def dupin_torus(r1, u, v):
r2 = 3*sin(u/2.0)**2
xdp = r1*cos(u)+r2*cos(u)*cos(v)-27
ydp = r1*sin(u)+r2*sin(u)*cos(v)
zdp = r2*sin(v)
return xdp,ydp,zdp
def rf(u, v, nx, ny):
rez = 0*u
for i in range(nx+1):
for j in range(ny+1):
rez += (2*random()-1)*cos(i*u+2*pi*random())*cos(j*v+2*pi*random())
return rez
def scale(rez,eps):
rez2 = sign(rez)*(2*arctan(abs(rez))/pi)^eps
return rez2
def random_wraped_torus(r1, r2, u, v, h=0.2, nx=12, ny=6):
rez = rf(u, v, nx, ny)
xrwt = r1*cos(u)+r2*cos(u)*cos(v)+h*rez*cos(u)*cos(v)
yrwt = r1*sin(u)+r2*sin(u)*cos(v)+h*rez*sin(u)*cos(v)+32
zrwt = r2*sin(v)+h*rez*sin(v)
return xrwt,yrwt,zrwt
def random_wraped_torus2(r1, r2, u, v, h=1, nx=12, ny=6, eps=0.5):
rez = rf(u, v, nx, ny)
xrwt = r1*cos(u)+r2*cos(u)*cos(v)+h*scale(rez*cos(u)*cos(v),eps)
yrwt = r1*sin(u)+r2*sin(u)*cos(v)+h*scale(rez*sin(u)*cos(v),eps)-32
zrwt = r2*sin(v)+h*scale(rez*sin(v),eps)
return xrwt,yrwt,zrwt
slika1=parametric_plot3d(torus(10,3,u,v),(u,0,2*pi), (v,0,2*pi), color='lemonchiffon')
slika2=parametric_plot3d(warped_torus(10,3,u,v),(u,0,2*pi), (v,0,2*pi), color='lemonchiffon',plot_points=120)
slika3=parametric_plot3d(dupin_torus(10,u,v),(u,0,2*pi), (v,0,2*pi), color='lemonchiffon')
slika4=parametric_plot3d(random_wraped_torus(10,3,u,v),(u,0,2*pi), (v,0,2*pi), color='lemonchiffon',plot_points=120)
slika5=parametric_plot3d(random_wraped_torus2(10,3,u,v),(u,0,2*pi), (v,0,2*pi), color='lemonchiffon',plot_points=120)
(slika1+slika2+slika3+slika4+slika5).show(viewer='threejs',online=True,frame=False)