# origin
def O (0,0,0)
def s1 [fillcolor=red]
def s2 [linewidth=.2pt,linestyle=dotted]

def sweeptorus {
 def N 80
 put { translate([1,0,0]) } {
   sweep[s1,s2]{N, rotate(360/N, (-1,0,0), [0,1,0]) } {
     line(0,-1,0)(1,-1,0)(1,1,0)(0,1,0)(0,-1,0)
   }
 }
}

def tori {
   put { translate([-2.2,0,0]) } {sweeptorus}
   put { rotate(-30, (O), [0,0,1]) then translate([2.2,.5,0]) } {sweeptorus}
}

def sceneProjection {

 put { rotate(20, (O), [0,0,1]) then
       rotate(30, (O), [1,0,0]) then
       translate([0,0,-10]) then
       perspective(7) } {tori}
}

{sceneProjection}

global {
 language tikz,context
 set [linewidth=.1pt]
 picturebox (-2,-2)(2,2)
 frame
}