function elen(vec)= sqrt(vec[0]*vec[0]+vec[1]*vec[1]+vec[2]*vec[2]); function cprod(a,b)=[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]; function dprod(a,b)=a[0]*b[0]+a[1]*b[1]+a[2]*b[2]; function vangle(a,b)=acos(dprod(a,b)/(elen(a)*elen(b))); module link(a,b,r=3,cr=3){ diff=b-a; translate(a)sphere(r=cr,center=true,$fn=8); translate(b)sphere(r=cr,center=true,$fn=8); translate(a+diff/2)rotate(vangle(diff,[0,0,1]),-cprod(diff,[0,0,1]))cylinder(r=r,h=elen(diff),center=true,$fn=8); } v=[[0,0,0],[40,60,0],[40,-60,0],[80,0,0],[36,22,0],[44,-22,0],[44,22,60],[36,-22,60],[40,0,60],[40,0,0]]; /*for(i=v){ translate(i)color([255,0,0])sphere(r=2.5,center=true); } */ module trilink(a,b,c){ link(a,b); link(b,c); link(c,d); } %cube([200,200,0.01]); translate([40,90,0]){ //%translate(){ link(v[0],v[1]); link(v[1],v[3]); link(v[0],v[2]); link(v[2],v[3]); link(v[0],v[3]); link(v[0],v[4]); link(v[1],v[4]); link(v[3],v[4]); link(v[0],v[5]); link(v[2],v[5]); link(v[3],v[5]); link(v[0],v[6]); link(v[1],v[6]); link(v[3],v[6]); link(v[4],v[6]); link(v[0],v[7]); link(v[2],v[7]); link(v[3],v[7]); link(v[5],v[7]); link(v[6],v[7]); link(v[0],v[8]); link(v[3],v[8]); link(v[9],v[8]); }