In [1]:
var('u v')
Out[1]:
(u, v)
In [2]:
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
In [3]:
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
In [4]:
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
In [5]:
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
In [6]:
def scale(rez,eps):
	rez2 = sign(rez)*(2*arctan(abs(rez))/pi)^eps
	return rez2
In [7]:
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
In [8]:
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
In [9]:
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)
In [10]:
(slika1+slika2+slika3+slika4+slika5).show(viewer='threejs',online=True,frame=False)
In [ ]: