diff options
Diffstat (limited to 'Build/source/utils/asymptote/base/three.asy')
-rw-r--r-- | Build/source/utils/asymptote/base/three.asy | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/Build/source/utils/asymptote/base/three.asy b/Build/source/utils/asymptote/base/three.asy index 2befc77a9c8..39075193073 100644 --- a/Build/source/utils/asymptote/base/three.asy +++ b/Build/source/utils/asymptote/base/three.asy @@ -1745,7 +1745,7 @@ transform3 align(triple u) } // return a rotation that maps X,Y to the projection plane. -transform3 transform3(projection P) +transform3 transform3(projection P=currentprojection) { triple v=unit(P.oblique ? P.camera : P.vector()); triple u=unit(perp(P.up,v)); @@ -2015,7 +2015,7 @@ draw=new void(frame f, path3 g, material p=currentpen, if(settings.thick) { real width=linewidth(q); if(width > 0) { - surface s=tube(g,width,p.granularity); + tube T=tube(g,width,p.granularity); int L=length(g); if(L >= 0) { if(!cyclic(g)) { @@ -2034,13 +2034,14 @@ draw=new void(frame f, path3 g, material p=currentpen, cap=scale3r*unitcylinder; cap.append(scale3r*shift(Z)*unitdisk); } - s.append(shift(point(g,0))*align(-dir0)*cap); - s.append(shift(point(g,L))*align(dirL)*cap); + T.s.append(shift(point(g,0))*align(-dir0)*cap); + T.s.append(shift(point(g,L))*align(dirL)*cap); } - if(opacity(q) == 1) _draw(f,g,q); + if(opacity(q) == 1) + _draw(f,T.center,q); } - for(int i=0; i < s.s.length; ++i) - draw3D(f,s.s[i],p,light); + for(int i=0; i < T.s.s.length; ++i) + draw3D(f,T.s.s[i],p,light); } else _draw(f,g,q); } else _draw(f,g,q); } |