var('y z')
R=1
r=0.25
def rotacija_x((x,y,z),kut):
return (x,y*cos(kut)-z*sin(kut),y*sin(kut)+z*cos(kut))
def rotacija_y((x,y,z),kut):
return (x*cos(kut)-z*sin(kut),y,x*sin(kut)+z*cos(kut))
def rotacija_z((x,y,z),kut):
return (x*cos(kut)-y*sin(kut),x*sin(kut)+y*cos(kut),z)
def dvostruki_torus((x,y,z),R,r,A):
d1=((x-1.25)^2+y^2+z^2+R^2-r^2)^2-4*R^2*((x-1.25)^2+y^2)
d2=((x+1.25)^2+y^2+z^2+R^2-r^2)^2-4*R^2*((x+1.25)^2+y^2)
d=d1*d2-A
return d
def trostruki_torus((x,y,z),R,r,A):
t1=((x-1.5)^2+y^2+z^2+R^2-r^2)^2-4*R^2*((x-1.5)^2+y^2)
t2=((x-1.5*cos(2*pi/3))^2+(y-1.5*sin(2*pi/3))^2+z^2+R^2-r^2)^2-4*R^2*((x-1.5*cos(2*pi/3))^2+(y-1.5*sin(2*pi/3))^2)
t3=((x-1.5*cos(4*pi/3))^2+(y-1.5*sin(4*pi/3))^2+z^2+R^2-r^2)^2-4*R^2*((x-1.5*cos(4*pi/3))^2+(y-1.5*sin(4*pi/3))^2)
t=t1*t2*t3-A
return t
podaci=rotacija_x(rotacija_y((x,y,z),pi/2),-pi/6)
podaci=(podaci[0]-1.5,podaci[1]+2.5,podaci[2])
podaci2=rotacija_x(rotacija_y((x,y,z),pi/2),pi/2)
podaci2=(podaci2[0]-1.5,podaci2[1]+2.5,podaci2[2])
podaci3=rotacija_x(rotacija_y((x,y,z),pi/2),210*pi/180)
podaci3=(podaci3[0]-1.5,podaci3[1]+2.5,podaci3[2])
slika1=implicit_plot3d(trostruki_torus((x,y,z),R,r,10),(x,-6,6),(y,-6,6),(z,-6,6),plot_points=150,color='lemonchiffon')
slika2=implicit_plot3d(trostruki_torus((x,y,z+3),R,r,10),(x,-6,6),(y,-6,6),(z,-6,6),plot_points=150,color='lemonchiffon')
slika3=implicit_plot3d(dvostruki_torus(podaci,R,r,2),(x,-6,6),(y,-6,6),(z,-6,6),plot_points=150,color='lemonchiffon')
slika4=implicit_plot3d(dvostruki_torus(podaci2,R,r,2),(x,-6,6),(y,-6,6),(z,-6,6),plot_points=150,color='lemonchiffon')
slika5=implicit_plot3d(dvostruki_torus(podaci3,R,r,2),(x,-6,6),(y,-6,6),(z,-6,6),plot_points=150,color='lemonchiffon')
(slika1+slika2+slika3+slika4+slika5).show(viewer='threejs',online=True,frame=False)