summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-07-05 00:24:45 +0000
committerKarl Berry <karl@freefriends.org>2010-07-05 00:24:45 +0000
commit1fff2e715d8cf25331a3aab6d1324328cbdcf557 (patch)
tree50cc2d03dbc732b8bf70e46310a43e4bd53d55d6 /Master
parenta06e5c017823a9a6673af33599d3f9fe34b1b7e8 (diff)
asymptote 2.00
git-svn-id: svn://tug.org/texlive/trunk@19235 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rwxr-xr-xMaster/bin/i386-cygwin/asy.exebin6046734 -> 6469646 bytes
-rwxr-xr-xMaster/texmf/asymptote/GUI/xasyVersion.py2
-rw-r--r--Master/texmf/asymptote/asy-keywords.el2
-rw-r--r--Master/texmf/asymptote/graph3.asy2
-rw-r--r--Master/texmf/asymptote/math.asy4
-rw-r--r--Master/texmf/asymptote/plain_Label.asy127
-rw-r--r--Master/texmf/asymptote/plain_picture.asy5
-rw-r--r--Master/texmf/asymptote/three.asy37
-rw-r--r--Master/texmf/asymptote/three_surface.asy30
-rw-r--r--Master/texmf/asymptote/version.asy2
-rw-r--r--Master/texmf/doc/asymptote/CAD.pdfbin67565 -> 67565 bytes
-rw-r--r--Master/texmf/doc/asymptote/asymptote.pdfbin1690993 -> 1692650 bytes
-rw-r--r--Master/texmf/doc/asymptote/examples/bars3.asy22
-rw-r--r--Master/texmf/doc/asymptote/examples/condor.asy2
-rw-r--r--Master/texmf/doc/asymptote/examples/cones.asy8
-rw-r--r--Master/texmf/doc/asymptote/examples/cylinder.asy2
-rw-r--r--Master/texmf/doc/asymptote/examples/hyperboloid.asy2
-rw-r--r--Master/texmf/doc/asymptote/examples/pipes.asy140
-rw-r--r--Master/texmf/doc/asymptote/examples/projectrevolution.asy6
-rw-r--r--Master/texmf/doc/asymptote/examples/sacone3D.asy3
-rw-r--r--Master/texmf/doc/asymptote/examples/sacylinder3D.asy2
-rw-r--r--Master/texmf/doc/asymptote/examples/shellmethod.asy8
-rw-r--r--Master/texmf/doc/asymptote/examples/splitpatch.asy2
-rw-r--r--Master/texmf/doc/asymptote/examples/teapot.asy2
-rw-r--r--Master/texmf/doc/asymptote/examples/torus.asy2
-rw-r--r--Master/texmf/doc/asymptote/examples/workcone.asy2
-rw-r--r--Master/texmf/doc/info/asy-faq.info2
-rw-r--r--Master/texmf/doc/info/asymptote.info243
-rw-r--r--Master/texmf/doc/man/man1/asy.man1.pdfbin11385 -> 11385 bytes
-rwxr-xr-xMaster/tlpkg/asymptote/asy.exebin6046734 -> 6469646 bytes
30 files changed, 450 insertions, 209 deletions
diff --git a/Master/bin/i386-cygwin/asy.exe b/Master/bin/i386-cygwin/asy.exe
index a18f2404ea5..a068d7cfe3b 100755
--- a/Master/bin/i386-cygwin/asy.exe
+++ b/Master/bin/i386-cygwin/asy.exe
Binary files differ
diff --git a/Master/texmf/asymptote/GUI/xasyVersion.py b/Master/texmf/asymptote/GUI/xasyVersion.py
index e10d8563c4c..01d9ae47f55 100755
--- a/Master/texmf/asymptote/GUI/xasyVersion.py
+++ b/Master/texmf/asymptote/GUI/xasyVersion.py
@@ -1,2 +1,2 @@
#!/usr/bin/env python
-xasyVersion = "1.99"
+xasyVersion = "2.00"
diff --git a/Master/texmf/asymptote/asy-keywords.el b/Master/texmf/asymptote/asy-keywords.el
index d5d4a97fb87..d49d2af2bfe 100644
--- a/Master/texmf/asymptote/asy-keywords.el
+++ b/Master/texmf/asymptote/asy-keywords.el
@@ -2,7 +2,7 @@
;; This file is automatically generated by asy-list.pl.
;; Changes will be overwritten.
;;
-(defvar asy-keywords-version "1.99")
+(defvar asy-keywords-version "2.00")
(defvar asy-keyword-name '(
and controls tension atleast curl if else while for do return break continue struct typedef new access import unravel from include quote static public private restricted this explicit true false null cycle newframe operator ))
diff --git a/Master/texmf/asymptote/graph3.asy b/Master/texmf/asymptote/graph3.asy
index 9eee4209134..e588c8aa4d6 100644
--- a/Master/texmf/asymptote/graph3.asy
+++ b/Master/texmf/asymptote/graph3.asy
@@ -148,7 +148,7 @@ void labelaxis(picture pic, transform3 T, Label L, path3 g,
add(f,F.fit3(identity4,pic2,P));
},exact=false);
- path3[] G=path3(texpath(L));
+ path3[] G=path3(texpath(L,bbox=true));
if(G.length > 0) {
G=L.align.is3D ? align(G,O,align,L.p) : L.T3*G;
triple v=point(g,relative(L,g));
diff --git a/Master/texmf/asymptote/math.asy b/Master/texmf/asymptote/math.asy
index a684307e5a5..0dfddff7f2f 100644
--- a/Master/texmf/asymptote/math.asy
+++ b/Master/texmf/asymptote/math.asy
@@ -167,11 +167,11 @@ int unique(string[] a, string x) {
}
bool lexorder(pair a, pair b) {
- return a.x < b.x || (a.x == b.x && a.y <= b.y);
+ return a.x < b.x || (a.x == b.x && a.y < b.y);
}
bool lexorder(triple a, triple b) {
- return a.x < b.x || (a.x == b.x && (a.y < b.y || (a.y == b.y && a.z <= b.z)));
+ return a.x < b.x || (a.x == b.x && (a.y < b.y || (a.y == b.y && a.z < b.z)));
}
real[] zero(int n)
diff --git a/Master/texmf/asymptote/plain_Label.asy b/Master/texmf/asymptote/plain_Label.asy
index 4f9d9a20f11..86d11f8acc0 100644
--- a/Master/texmf/asymptote/plain_Label.asy
+++ b/Master/texmf/asymptote/plain_Label.asy
@@ -578,53 +578,100 @@ frame pack(pair align=2S ... object inset[])
return F;
}
-path[] texpath(Label L, bool tex=settings.tex != "none")
-{
- static string[] stringcache;
- static pen[] pencache;
- static path[][] pathcache;
- path[] g;
+path[] texpath(Label L, bool tex=settings.tex != "none", bool bbox=false)
+{
+ struct stringfont
+ {
+ string s;
+ real fontsize;
+ string font;
+
+ void operator init(Label L)
+ {
+ s=L.s;
+ fontsize=fontsize(L.p);
+ font=font(L.p);
+ }
+
+ pen pen() {return fontsize(fontsize)+fontcommand(font);}
+ }
+
+ bool lexorder(stringfont a, stringfont b) {
+ return a.s < b.s || (a.s == b.s && (a.fontsize < b.fontsize ||
+ (a.fontsize == b.fontsize &&
+ a.font < b.font)));
+ }
- string s=L.s;
- pen p=fontcommand(font(L.p))+fontsize(fontsize(L.p));
+ static stringfont[] stringcache;
+ static path[][] pathcache;
- // PDF tex engines lose track of the baseline.
- bool adjust=tex && basealign(L.p) == 1 && pdf();
- if(adjust) p=p+basealign;
+ static stringfont[] stringlist;
+ static bool adjust[];
- int k=0;
- int i;
- while((i=find(stringcache == s,++k)) >= 0) {
- if(pencache[i] == p) {
- g=pathcache[i];
- break;
+ path[] G;
+
+ stringfont s=stringfont(L);
+ pen p=s.pen();
+
+ int i=search(stringcache,s,lexorder);
+ if(i == -1 || lexorder(stringcache[i],s)) {
+ int k=search(stringlist,s,lexorder);
+ if(k == -1 || lexorder(stringlist[k],s)) {
+ ++k;
+ stringlist.insert(k,s);
+ // PDF tex engines lose track of the baseline.
+ adjust.insert(k,tex && basealign(L.p) == 1 && pdf());
}
}
- if(i == -1) {
- if(tex) {
- if(adjust) {
- g=_texpath("."+s,p);
- if(g.length == 0) return g;
- real y=min(g[0]).y;
- g.delete(0);
- g=shift(0,-y)*g;
- } else g=_texpath(s,p);
- } else g=textpath(s,p);
+ path[] transform(path[] g, Label L) {
+ pair m=min(g);
+ pair M=max(g);
+ pair dir=rectify(inverse(L.T)*-L.align.dir);
+ if(tex && basealign(L.p) == 1)
+ dir -= (0,(1-dir.y)*m.y/(M.y-m.y));
+ pair a=m+realmult(dir,M-m);
- stringcache.push(s);
- pencache.push(p);
- pathcache.push(g);
+ return shift(L.position+L.align.dir*labelmargin(L.p))*L.T*shift(-a)*g;
}
+
+ if(tex && bbox) {
+ frame f;
+ label(f,L);
+ return transform(box(min(f),max(f)),L);
+ }
+
+ if(stringlist.length > 0) {
+ path[][] g;
+ int n=stringlist.length;
+ string[] s=new string[n];
+ pen[] p=new pen[n];
+ for(int i=0; i < n; ++i) {
+ stringfont S=stringlist[i];
+ s[i]=adjust[i] ? "."+S.s : S.s;
+ p[i]=adjust[i] ? S.pen()+basealign : S.pen();
+ }
+
+ g=tex ? _texpath(s,p) : textpath(s,p);
+
+ if(tex)
+ for(int i=0; i < n; ++i)
+ if(adjust[i]) {
+ real y=min(g[i][0]).y;
+ g[i].delete(0);
+ g[i]=shift(0,-y)*g[i];
+ }
+
- pair a;
- if(g.length == 0) return g;
- pair m=min(g);
- pair M=max(g);
- pair dir=rectify(inverse(L.T)*-L.align.dir);
- if(tex && basealign(L.p) == 1)
- dir -= (0,(1-dir.y)*m.y/(M.y-m.y));
- a=m+realmult(dir,M-m);
-
- return shift(L.position+L.align.dir*labelmargin(p))*L.T*shift(-a)*g;
+ for(int i=0; i < stringlist.length; ++i) {
+ stringfont s=stringlist[i];
+ int j=search(stringcache,s,lexorder)+1;
+ stringcache.insert(j,s);
+ pathcache.insert(j,g[i]);
+ }
+ stringlist.delete();
+ adjust.delete();
+ }
+
+ return transform(pathcache[search(stringcache,stringfont(L),lexorder)],L);
}
diff --git a/Master/texmf/asymptote/plain_picture.asy b/Master/texmf/asymptote/plain_picture.asy
index 044ba90e7a7..2ec467727d2 100644
--- a/Master/texmf/asymptote/plain_picture.asy
+++ b/Master/texmf/asymptote/plain_picture.asy
@@ -420,6 +420,8 @@ struct projection {
bool autoadjust=true; // Adjust camera to lie outside bounding volume?
bool center=false; // Center target within bounding volume?
int ninterpolate; // Used for projecting nurbs to 2D Bezier curves.
+ bool bboxonly=true; // Typeset label bounding box only.
+
transformation T;
void calculate() {
@@ -469,6 +471,7 @@ struct projection {
P.center=center;
P.projector=projector;
P.ninterpolate=ninterpolate;
+ P.bboxonly=bboxonly;
P.T=T.copy();
return P;
}
@@ -588,7 +591,7 @@ struct picture {
// The functions to do the deferred drawing.
drawerBound[] nodes;
drawerBound3[] nodes3;
-
+
bool uptodate=true;
// The coordinates in flex space to be used in sizing the picture.
diff --git a/Master/texmf/asymptote/three.asy b/Master/texmf/asymptote/three.asy
index f528e2a9e52..528a1da13c1 100644
--- a/Master/texmf/asymptote/three.asy
+++ b/Master/texmf/asymptote/three.asy
@@ -2162,9 +2162,9 @@ draw=new void(frame f, path3 g, material p=currentpen,
pen q=(pen) p;
if(is3D()) {
p=material(p);
+ real width=linewidth(q);
void drawthick(path3 g) {
if(settings.thick) {
- real width=linewidth(q);
if(width > 0) {
bool prc=prc();
void cylinder(transform3) {};
@@ -2179,16 +2179,13 @@ draw=new void(frame f, path3 g, material p=currentpen,
pipe=new void(path3 center, path3 g)
{drawPRCtube(f,center,g,p,light);};
}
- real linecap;
- real r;
+ real linecap=linecap(q);
+ real r=0.5*width;
bool open=!cyclic(g);
int L=length(g);
- triple g0,gL;
+ triple g0=point(g,0);
+ triple gL=point(g,L);
if(open && L > 0) {
- g0=point(g,0);
- gL=point(g,L);
- linecap=linecap(q);
- r=0.5*width;
if(linecap == 2) {
g0 -= r*dir(g,0);
gL += r*dir(g,L);
@@ -2239,11 +2236,11 @@ draw=new void(frame f, path3 g, material p=currentpen,
} else _draw(f,g,q);
} else _draw(f,g,q);
}
- real[] dash=linetype(adjust(q,arclength(g),cyclic(g)));
if(q != nullpen)
begingroup3(f,name == "" ? "curve" : name,render);
- if(dash.length == 0) drawthick(g);
+ if(linetype(q).length == 0) drawthick(g);
else {
+ real[] dash=linetype(adjust(q,arclength(g),cyclic(g)));
if(sum(dash) > 0) {
dash.cyclic=true;
real offset=offset(q);
@@ -2787,17 +2784,25 @@ struct scene
adjusted=adjusted | this.P.adjust(m,M);
}
+ bool scale=xsize != 0 || ysize != 0;
+ bool scaleAdjust=scale && this.P.autoadjust;
+ bool noAdjust=(this.P.absolute || !scaleAdjust);
+
+ if(pic.bounds3.exact && noAdjust)
+ this.P.bboxonly=false;
+
f=pic.fit3(t,pic.bounds3.exact ? pic2 : null,this.P);
if(!pic.bounds3.exact) {
+ if(noAdjust)
+ this.P.bboxonly=false;
+
transform3 s=pic.scale3(f,xsize3,ysize3,zsize3,keepAspect);
t=s*t;
this.P=s*this.P;
f=pic.fit3(t,pic2,this.P);
}
- bool scale=xsize != 0 || ysize != 0;
-
if(is3D || scale) {
pic2.bounds.exact=true;
transform s=pic2.scaling(xsize,ysize,keepAspect);
@@ -2810,7 +2815,7 @@ struct scene
height=ceil(lambda.y+2*viewportmargin.y);
if(!this.P.absolute) {
- if(scale && this.P.autoadjust) {
+ if(scaleAdjust) {
pair v=(s.xx,s.yy);
transform3 T=this.P.t;
pair x=project(X,T);
@@ -2826,6 +2831,7 @@ struct scene
s=shift(this.P.target)*s*shift(-this.P.target);
t=s*t;
this.P=s*this.P;
+ this.P.bboxonly=false;
f=pic.fit3(t,is3D ? null : pic2,this.P);
}
@@ -2897,11 +2903,10 @@ object embed(string label="", string text=label, string prefix=defaultfilename,
if(P.infinity) {
triple m=min3(S.f);
triple M=max3(S.f);
-
triple lambda=M-m;
S.viewportmargin=viewportmargin((lambda.x,lambda.y));
- S.width=ceil(max(S.width,lambda.x)+2*S.viewportmargin.x);
- S.height=ceil(max(S.height,lambda.y)+2*S.viewportmargin.y);
+ S.width=ceil(lambda.x+2*S.viewportmargin.x);
+ S.height=ceil(lambda.y+2*S.viewportmargin.y);
S.f=shift((-0.5(m.x+M.x),-0.5*(m.y+M.y),0))*S.f; // Eye will be at (0,0,0)
} else {
if(P.angle == 0) {
diff --git a/Master/texmf/asymptote/three_surface.asy b/Master/texmf/asymptote/three_surface.asy
index 6d0c54d2479..8e48b0606a3 100644
--- a/Master/texmf/asymptote/three_surface.asy
+++ b/Master/texmf/asymptote/three_surface.asy
@@ -1403,16 +1403,16 @@ surface align(surface s, transform3 t=identity4, triple position,
return shift(position+align*labelmargin(p))*t*shift(-a)*s;
}
-surface surface(Label L, triple position=O)
+surface surface(Label L, triple position=O, bool bbox=false)
{
- surface s=surface(texpath(L));
+ surface s=surface(texpath(L,bbox=bbox));
return L.align.is3D ? align(s,L.T3,position,L.align.dir3,L.p) :
shift(position)*L.T3*s;
}
private path[] path(Label L, pair z=0, projection P)
{
- path[] g=texpath(L);
+ path[] g=texpath(L,bbox=P.bboxonly);
return L.align.is3D ? align(g,z,project(L.align.dir3,P)-project(O,P),L.p) :
shift(z)*g;
}
@@ -1433,7 +1433,7 @@ void label(frame f, Label L, triple position, align align=NoAlign,
begingroup3(f,name == "" ? L.s : name,render);
if(is3D()) {
bool lighton=light.on();
- for(patch S : surface(L,position).s) {
+ for(patch S : surface(L,position,bbox=P.bboxonly).s) {
draw3D(f,S,position,L.p,light,interaction);
if(render.labelfill && !lighton) // Fill subdivision cracks
_draw(f,S.external(),position,L.p,interaction.type);
@@ -1465,7 +1465,8 @@ void label(picture pic=currentpicture, Label L, triple position,
L.align(align);
L.p(p);
L.position(0);
- pic.add(new void(frame f, transform3 t, picture pic, projection P) {
+
+ pic.add(new void(frame f, transform3 t, picture pic2, projection P) {
// Handle relative projected 3D alignments.
Label L=L.copy();
triple v=t*position;
@@ -1478,29 +1479,29 @@ void label(picture pic=currentpicture, Label L, triple position,
if(L.defaulttransform3)
L.T3=transform3(P);
- surface S=surface(L,v);
begingroup3(f,name == "" ? L.s : name,render,v,interaction.type);
bool lighton=light.on();
+
if(is3D()) {
- for(patch S : surface(L,v).s) {
+ for(patch S : surface(L,v,bbox=P.bboxonly).s) {
draw3D(f,S,v,L.p,light,interaction);
if(render.labelfill && !lighton) // Fill subdivision cracks
_draw(f,S.external(),v,L.p,interaction.type);
}
}
- if(pic != null) {
+ if(pic2 != null) {
pen p=color(L.T3*Z,L.p,light,shiftless(P.T.modelview));
if(L.defaulttransform3) {
if(L.filltype == NoFill)
- fill(project(v,P.t),pic,path(L,P),p);
+ fill(project(v,P.t),pic2,path(L,P),p);
else {
picture d;
fill(project(v,P.t),d,path(L,P),p);
- add(pic,d,L.filltype);
+ add(pic2,d,L.filltype);
}
} else
- pic.add(new void(frame f, transform T) {
+ pic2.add(new void(frame f, transform T) {
for(patch S : surface(L,v).s)
fill(f,T*project(S.external(),P,1),p);
});
@@ -1510,10 +1511,11 @@ void label(picture pic=currentpicture, Label L, triple position,
},!L.defaulttransform3);
Label L=L.copy();
+
if(interaction.targetsize && settings.render != 0)
L.T=L.T*scale(abs(currentprojection.camera-position)/
abs(currentprojection.vector()));
- path[] g=texpath(L);
+ path[] g=texpath(L,bbox=true);
if(g.length == 0 || (g.length == 1 && size(g[0]) == 0)) return;
if(L.defaulttransform3)
L.T3=transform3(currentprojection);
@@ -1580,8 +1582,10 @@ surface surface(Label L, surface s, real uoffset, real voffset,
real u=uoffset+(z.x-m.x)/lambda.x;
real v=voffset+(z.y-m.y)/lambda.y;
if(((u < 0 || u >= nu) && !s.ucyclic()) ||
- ((v < 0 || v >= nv) && !s.vcyclic()))
+ ((v < 0 || v >= nv) && !s.vcyclic())) {
warning("cannotfit","cannot fit string to surface");
+ u=v=0;
+ }
return s.point(u,v)+height*unit(s.normal(u,v));
});
}
diff --git a/Master/texmf/asymptote/version.asy b/Master/texmf/asymptote/version.asy
index 62fb50dc070..c2011eb0a90 100644
--- a/Master/texmf/asymptote/version.asy
+++ b/Master/texmf/asymptote/version.asy
@@ -1 +1 @@
-string VERSION="1.99";
+string VERSION="2.00";
diff --git a/Master/texmf/doc/asymptote/CAD.pdf b/Master/texmf/doc/asymptote/CAD.pdf
index 1d787c85f52..7076ef94893 100644
--- a/Master/texmf/doc/asymptote/CAD.pdf
+++ b/Master/texmf/doc/asymptote/CAD.pdf
Binary files differ
diff --git a/Master/texmf/doc/asymptote/asymptote.pdf b/Master/texmf/doc/asymptote/asymptote.pdf
index 3056f8acbf0..f21cc658464 100644
--- a/Master/texmf/doc/asymptote/asymptote.pdf
+++ b/Master/texmf/doc/asymptote/asymptote.pdf
Binary files differ
diff --git a/Master/texmf/doc/asymptote/examples/bars3.asy b/Master/texmf/doc/asymptote/examples/bars3.asy
new file mode 100644
index 00000000000..4205d46f37c
--- /dev/null
+++ b/Master/texmf/doc/asymptote/examples/bars3.asy
@@ -0,0 +1,22 @@
+import three;
+import palette;
+import graph3;
+
+size(300);
+
+currentprojection=perspective(-30,-30,30,up=Z);
+
+surface s;
+
+for(int i = 0; i < 10; ++i) {
+ for(int j = 0; j < 10; ++j) {
+ s.append(shift(i,j,0)*scale(1,1,i+j)*unitcube);
+ }
+}
+
+s.colors(palette(s.map(zpart),Rainbow()));
+draw(s,meshpen=black+thick(),nolight,render(merge=true));
+
+xaxis3("$x$",Bounds,InTicks(endlabel=false,Label,2,2));
+yaxis3(YZ()*"$y$",Bounds,InTicks(beginlabel=false,Label,2,2));
+zaxis3(XZ()*"$z$",Bounds,InTicks);
diff --git a/Master/texmf/doc/asymptote/examples/condor.asy b/Master/texmf/doc/asymptote/examples/condor.asy
index d3b48728ea0..5ce5caa2412 100644
--- a/Master/texmf/doc/asymptote/examples/condor.asy
+++ b/Master/texmf/doc/asymptote/examples/condor.asy
@@ -29,4 +29,4 @@ triple condor(pair t)
surface s=surface(condor,(-1,0),(1,K),16,Spline);
s.colors(palette(s.map(zpart),Rainbow()));
-draw(s);
+draw(s,render(compression=Low,merge=true));
diff --git a/Master/texmf/doc/asymptote/examples/cones.asy b/Master/texmf/doc/asymptote/examples/cones.asy
index 4f28796cb92..e63a4281251 100644
--- a/Master/texmf/doc/asymptote/examples/cones.asy
+++ b/Master/texmf/doc/asymptote/examples/cones.asy
@@ -3,14 +3,16 @@ import solids;
size(200);
currentprojection=orthographic(5,4,2);
+render render=render(compression=Low,merge=true);
+
revolution upcone=cone(-Z,1,1);
revolution downcone=cone(Z,1,-1);
-draw(surface(upcone),green);
-draw(surface(downcone),green);
+draw(surface(upcone),green,render);
+draw(surface(downcone),green,render);
draw(upcone,5,blue,longitudinalpen=nullpen);
draw(downcone,5,blue,longitudinalpen=nullpen);
revolution cone=shift(2Y-2X)*cone(1,1);
-draw(surface(cone),green);
+draw(surface(cone),green,render);
draw(cone,5,blue);
diff --git a/Master/texmf/doc/asymptote/examples/cylinder.asy b/Master/texmf/doc/asymptote/examples/cylinder.asy
index d326ea579a2..88ff1394bac 100644
--- a/Master/texmf/doc/asymptote/examples/cylinder.asy
+++ b/Master/texmf/doc/asymptote/examples/cylinder.asy
@@ -4,5 +4,5 @@ size(0,100);
currentlight=Viewport;
revolution r=cylinder(O,1,1.5,Y+Z);
-draw(surface(r),green);
+draw(surface(r),green,render(merge=true));
draw(r,blue);
diff --git a/Master/texmf/doc/asymptote/examples/hyperboloid.asy b/Master/texmf/doc/asymptote/examples/hyperboloid.asy
index 10d3609f5d0..0cf6da08c40 100644
--- a/Master/texmf/doc/asymptote/examples/hyperboloid.asy
+++ b/Master/texmf/doc/asymptote/examples/hyperboloid.asy
@@ -4,5 +4,5 @@ import solids;
currentprojection=perspective(4,4,3);
revolution hyperboloid=revolution(new real(real x) {return sqrt(1+x*x);},
-2,2,20,operator..,X);
-draw(surface(hyperboloid),green);
+draw(surface(hyperboloid),green,render(compression=Low,merge=true));
draw(hyperboloid,6,blue,longitudinalpen=nullpen);
diff --git a/Master/texmf/doc/asymptote/examples/pipes.asy b/Master/texmf/doc/asymptote/examples/pipes.asy
new file mode 100644
index 00000000000..6b2025f6b35
--- /dev/null
+++ b/Master/texmf/doc/asymptote/examples/pipes.asy
@@ -0,0 +1,140 @@
+import solids;
+import tube;
+import graph3;
+import palette;
+size(8cm);
+
+currentprojection=perspective(
+camera=(13.3596389245356,8.01038090435314,14.4864483364785),
+up=(-0.0207054323419367,-0.00472438375047319,0.0236460907598947),
+target=(-1.06042550499095,2.68154529985845,0.795007562120261));
+
+defaultpen(fontsize(6pt));
+
+// draw coordinates and frames
+// axis1 is defined by z axis of TBase
+// axis2 is defined by z axis of TEnd
+void DrawFrame(transform3 TBase, transform3 TEnd, string s)
+{
+ triple p1,v1,p2,v2;
+ p1=TBase*O;
+ v1=TBase*Z-p1;
+ p2=TEnd*O;
+ v2=TEnd*Z-p2;
+ triple n=cross(v1,v2);
+
+ real[][] A=
+ {
+ {v1.x,-v2.x,-n.x},
+ {v1.y,-v2.y,-n.y},
+ {v1.z,-v2.z,-n.z}
+ };
+
+ triple vb=p2-p1;
+
+ real[] b={vb.x,vb.y,vb.z};
+
+ // Get the extention along vector v1 and v2,
+ // so, we can get the common normal between two axis
+ real[] x=solve(A,b);
+
+ real s1=x[0];
+ real s2=x[1];
+
+ // get foot of a perpendicular on both axies
+ triple foot1=p1+s1*v1;
+ triple foot2=p2+s2*v2;
+
+ // draw two axis
+ triple axis_a,axis_b;
+ axis_a=p1+s1*v1*1.5;
+ axis_b=p1-s1*v1*1.5;
+ draw(axis_a--axis_b);
+
+ axis_a=p2+s2*v2*1.5;
+ axis_b=p2-s2*v2*1.5;
+ draw(axis_a--axis_b);
+
+ // draw "a"(common normal)
+ draw(Label("$a_{"+s+"}$"),foot1--foot2,linewidth(1pt));
+
+ // draw the coordinates frame
+ triple dx,dy,dz,org;
+ real length=0.8;
+
+ org=foot1;
+ dx =length*unit(foot2-foot1); // define the x axis of the frame on "a"
+ dz =length*unit(v1); // define the z axis which is along axis1
+ dy =length*unit(cross(dz,dx));
+
+ draw(Label("$X_{"+s+"}$",1,align=-dy-dz),org--(org+dx),red+linewidth(1.5pt),
+ Arrow3(8));
+ draw(Label("$Y_{"+s+"}$",1,align=2dy-dz-dx),org--(org+dy),
+ green+linewidth(1.5pt), Arrow3(8));
+ draw(Label("$Z_{"+s+"}$",1,align=-2dx-dy),org--(org+dz),
+ blue+linewidth(1.5pt), Arrow3(8));
+
+ dot(Label("$O_{"+s+"}$",align =-dx-dz,black),org,black); // origin
+
+}
+
+void DrawLink(transform3 TBase, transform3 TEnd, pen objStyle,string s)
+{
+ real h=1;
+ real r=0.5;
+ path3 generator=(0.5*r,0,h)--(r,0,h)--(r,0,0)--(0.5*r,0,0);
+ revolution vase=revolution(O,generator,0,360);
+ surface objSurface=surface(vase);
+
+ render render=render(merge=true);
+
+ // draw two cylinders
+ draw(TBase*objSurface,objStyle,render);
+ draw(TEnd*shift((0,0,-h))*objSurface,objStyle,render);
+
+ // draw the link between two cylinders
+ triple pStart=TBase*(0.5*h*Z);
+ triple pEnd =TEnd*(-0.5*h*Z);
+ triple pControl1=0.25*(pEnd-pStart)+TBase*(0,0,h);
+ triple pControl2=-0.25*(pEnd-pStart)+TEnd*(0,0,-h);
+ path3 p=pStart..controls pControl1 and pControl2..pEnd;
+ draw(tube(p,scale(0.2)*unitsquare),objStyle,render);
+}
+
+// t1 and t2 define the starting frame and ending frame of the first link(i-1)
+transform3 t1=shift((0,0,1));
+transform3 t2=shift((0,0,-1))*rotate(-20,Y)*shift((0,3,2));
+// as, the two links were connected, so t2 is also the starting frame of link(i)
+// t3 defines the ending frame of link(i)
+transform3 t3=t2*rotate(40,Z)*shift((0,3,1.5))*rotate(-15,Y)*shift(-1.5*Z);
+
+// draw link(i-1)
+DrawLink(t1,t2,palegreen,"i-1");
+DrawFrame(t1,t2,"i-1");
+// draw link(i)
+DrawLink(t2,t3,lightmagenta,"i");
+DrawFrame(t2,t3,"i");
+
+
+// draw angle alpha, which is the angle between axis(i-1) and axis(i)
+triple p0=(0,0,-1);
+triple p1=(0,0,2.3);
+triple p2=shift((0,0,-1))*rotate(-20,Y)*(0,0,4);
+draw(p0--p2,cyan);
+draw("$\alpha_{i-1}$",arc(p0,p1,p2,Y,CW),ArcArrow3(3));
+
+
+// draw angle theta, which is the angle between a_i and a_{i-1}
+transform3 tx=shift((0,0,-1))*rotate(-20,Y)*shift((0,3,0));
+p0=tx*O;
+p1=tx*(0,3,0);
+p2=tx*rotate(40,Z)*(0,3,0);
+draw(p0--p1,cyan);
+draw(p0--p2,cyan);
+
+triple p1a=tx*(0,1.5,0);
+draw("$\theta_{i}$",arc(p0,p1a,p2),ArcArrow3(3));
+
+// draw d_{i-1}
+triple org_i =t2*shift((0,0,1.5))*O;
+draw(Label("$d_{i}$",0.13),p0--org_i,linewidth(1pt));
diff --git a/Master/texmf/doc/asymptote/examples/projectrevolution.asy b/Master/texmf/doc/asymptote/examples/projectrevolution.asy
index fe639b3b901..25cbe6d4902 100644
--- a/Master/texmf/doc/asymptote/examples/projectrevolution.asy
+++ b/Master/texmf/doc/asymptote/examples/projectrevolution.asy
@@ -11,5 +11,7 @@ surface s=surface(r);
surface S=planeproject(shift(-Z)*unitsquare3)*s;
S.colors(palette(s.map(zpart),Rainbow()));
-draw(S);
-draw(s,lightgray);
+
+render render=render(compression=Low,merge=true);
+draw(S,render);
+draw(s,lightgray,render);
diff --git a/Master/texmf/doc/asymptote/examples/sacone3D.asy b/Master/texmf/doc/asymptote/examples/sacone3D.asy
index 1ed60da0351..d8f3aa373d3 100644
--- a/Master/texmf/doc/asymptote/examples/sacone3D.asy
+++ b/Master/texmf/doc/asymptote/examples/sacone3D.asy
@@ -5,7 +5,8 @@ real r=1;
real h=1;
revolution R=cone(r,h);
-draw(surface(R),lightgreen+opacity(0.5));
+
+draw(surface(R),lightgreen+opacity(0.5),render(compression=Low));
pen edge=blue+0.25mm;
draw("$\ell$",(0,r,0)--(0,0,h),W,edge);
draw("$r$",(0,0,0)--(r,0,0),red+dashed);
diff --git a/Master/texmf/doc/asymptote/examples/sacylinder3D.asy b/Master/texmf/doc/asymptote/examples/sacylinder3D.asy
index e44f78e8e72..fcc1a487bbe 100644
--- a/Master/texmf/doc/asymptote/examples/sacylinder3D.asy
+++ b/Master/texmf/doc/asymptote/examples/sacylinder3D.asy
@@ -5,7 +5,7 @@ real r=1;
real h=3;
revolution R=cylinder(-h/2*Z,r,h);
-draw(surface(R),lightgreen+opacity(0.5));
+draw(surface(R),lightgreen+opacity(0.5),render(compression=Low));
draw((0,0,-h/2)--(0,0,h/2),dashed);
dot((0,0,-h/2));
dot((0,0,h/2));
diff --git a/Master/texmf/doc/asymptote/examples/shellmethod.asy b/Master/texmf/doc/asymptote/examples/shellmethod.asy
index c1c0155ae3a..c8e541f2a62 100644
--- a/Master/texmf/doc/asymptote/examples/shellmethod.asy
+++ b/Master/texmf/doc/asymptote/examples/shellmethod.asy
@@ -26,11 +26,13 @@ path p=graph(F,0,2,n,operator ..)--cycle;
surface s=surface(p);
path3 p3=path3(p);
+render render=render(compression=0,merge=true);
+
revolution a=revolution(p3,Y,0,alpha);
-draw(surface(a),color);
-draw(rotate(alpha,Y)*s,color);
+draw(surface(a),color,render);
+draw(rotate(alpha,Y)*s,color,render);
for(int i=0; i < n; ++i)
- draw(surface(blocks[i]),color+opacity(0.5),black);
+ draw(surface(blocks[i]),color+opacity(0.5),black,render);
draw(p3);
xaxis3(Label("$x$",1,align=2X),Arrow3);
diff --git a/Master/texmf/doc/asymptote/examples/splitpatch.asy b/Master/texmf/doc/asymptote/examples/splitpatch.asy
index 200fb2c4c44..f1f5b6b98ba 100644
--- a/Master/texmf/doc/asymptote/examples/splitpatch.asy
+++ b/Master/texmf/doc/asymptote/examples/splitpatch.asy
@@ -1,5 +1,7 @@
import three;
+size(300);
+
currentprojection=orthographic(0,0,1);
triple[][] A={
diff --git a/Master/texmf/doc/asymptote/examples/teapot.asy b/Master/texmf/doc/asymptote/examples/teapot.asy
index 9ec5b0cb370..401ecec5ab9 100644
--- a/Master/texmf/doc/asymptote/examples/teapot.asy
+++ b/Master/texmf/doc/asymptote/examples/teapot.asy
@@ -169,4 +169,4 @@ triple[][][] Q={
}
};
-draw(surface(Q),blue);
+draw(surface(Q),blue,render(compression=Low));
diff --git a/Master/texmf/doc/asymptote/examples/torus.asy b/Master/texmf/doc/asymptote/examples/torus.asy
index f89c82cde8b..d0b8673d737 100644
--- a/Master/texmf/doc/asymptote/examples/torus.asy
+++ b/Master/texmf/doc/asymptote/examples/torus.asy
@@ -17,4 +17,4 @@ triple f(pair t) {
}
surface s=surface(f,(radians(90),0),(radians(345),2pi),8,8,Spline);
-draw(s,green,render(merge=true));
+draw(s,green,render(compression=Low,merge=true));
diff --git a/Master/texmf/doc/asymptote/examples/workcone.asy b/Master/texmf/doc/asymptote/examples/workcone.asy
index 5b4f8c94ad5..37efb5cc86b 100644
--- a/Master/texmf/doc/asymptote/examples/workcone.asy
+++ b/Master/texmf/doc/asymptote/examples/workcone.asy
@@ -16,6 +16,8 @@ real x1=r*s1/h;
real s2=sr+0.2;
real x2=r*s2/h;
+//render render=render(compression=Low,merge=true);
+
path3 p=(0,0,0)--(x,0,s);
revolution a=revolution(p,Z);
draw(surface(a,4),lightblue+opacity(0.5));
diff --git a/Master/texmf/doc/info/asy-faq.info b/Master/texmf/doc/info/asy-faq.info
index 61c827ac745..4741db226ae 100644
--- a/Master/texmf/doc/info/asy-faq.info
+++ b/Master/texmf/doc/info/asy-faq.info
@@ -9,7 +9,7 @@ END-INFO-DIR-ENTRY
File: $prefix.info, Node: Top, Next: Question 1.1, Up: (dir)
ASYMPTOTE FREQUENTLY ASKED QUESTIONS
- 18 Jun 2010
+ 25 Jun 2010
This is the list of Frequently Asked Questions about Asymptote (asy).
diff --git a/Master/texmf/doc/info/asymptote.info b/Master/texmf/doc/info/asymptote.info
index d672a648432..45ab814b89a 100644
--- a/Master/texmf/doc/info/asymptote.info
+++ b/Master/texmf/doc/info/asymptote.info
@@ -1,7 +1,7 @@
This is asymptote.info, produced by makeinfo version 4.13 from
../asymptote.texi.
-This file documents `Asymptote', version 1.99.
+This file documents `Asymptote', version 2.00.
`http://asymptote.sourceforge.net'
@@ -23,7 +23,7 @@ File: asymptote.info, Node: Top, Next: Description, Up: (dir)
Asymptote
*********
-This file documents `Asymptote', version 1.99.
+This file documents `Asymptote', version 2.00.
`http://asymptote.sourceforge.net'
@@ -3996,10 +3996,14 @@ of type `T[]'.
the `-n'th value;
`int search(T[] a, T key)'
- For built-in ordered types `T', searches a sorted ordered array
- `a' of `n' elements for k, returning the index `i' if `a[i] <= key
- < a[i+1]', `-1' if `key' is less than all elements of `a', or
- `n-1' if `key' is greater than or equal to the last element of `a'.
+ For built-in ordered types `T', searches a sorted array `a' of `n'
+ elements for k, returning the index `i' if `a[i] <= key < a[i+1]',
+ `-1' if `key' is less than all elements of `a', or `n-1' if `key'
+ is greater than or equal to the last element of `a'.
+
+`int search(T[] a, T key, bool less(T i, T j))'
+ searches an array `a' sorted in ascending order such that element
+ `i' precedes element `j' if `less(i,j)' is true;
`T[] copy(T[] a)'
returns a copy of the array `a';
@@ -4034,9 +4038,9 @@ of type `T[]'.
bob 9
pete 7
-`T[] sort(T[] a, bool compare(T i, T j))'
+`T[] sort(T[] a, bool less(T i, T j))'
returns a copy of `a' stably sorted in ascending order such that
- element `i' precedes element `j' if `compare(i,j)' is true.
+ element `i' precedes element `j' if `less(i,j)' is true.
`T[][] transpose(T[][] a)'
returns the transpose of `a'.
@@ -4946,10 +4950,10 @@ useful functions such as
sequentially, returning the index of `x' in the resulting array.
`bool lexorder(pair a, pair b)'
- returns the lexicographical partial order of `a' and `b'.
+ returns the strict lexicographical partial order of `a' and `b'.
`bool lexorder(triple a, triple b)'
- returns the lexicographical partial order of `a' and `b'.
+ returns the strict lexicographical partial order of `a' and `b'.

File: asymptote.info, Node: interpolate, Next: geometry, Prev: math, Up: Base modules
@@ -8443,11 +8447,11 @@ Index
(line 48)
* Airy: Mathematical functions.
(line 48)
-* alias <1>: Arrays. (line 182)
+* alias <1>: Arrays. (line 186)
* alias: Structures. (line 52)
* align: Options. (line 167)
* Align: label. (line 12)
-* all: Arrays. (line 330)
+* all: Arrays. (line 334)
* Allow: Pens. (line 327)
* AND: Arithmetic & logical.
(line 80)
@@ -8625,6 +8629,7 @@ Index
* circle: Paths and guides. (line 10)
* circlebarframe: markers. (line 18)
* CJK: unicode. (line 12)
+* clamped: graph. (line 37)
* clear <1>: Debugger. (line 23)
* clear: Files. (line 88)
* clip: fill. (line 111)
@@ -8641,7 +8646,7 @@ Index
* colorless: Pens. (line 54)
* colors: Pens. (line 51)
* comma: Files. (line 58)
-* comma-separated-value mode: Arrays. (line 363)
+* comma-separated-value mode: Arrays. (line 367)
* command-line options <1>: Options. (line 6)
* command-line options: Configuring. (line 83)
* comment character: Files. (line 15)
@@ -8649,7 +8654,7 @@ Index
* Compiling from UNIX source: Compiling from UNIX source.
(line 6)
* complement: Arrays. (line 149)
-* concat: Arrays. (line 178)
+* concat: Arrays. (line 182)
* conditional <1>: Arithmetic & logical.
(line 73)
* conditional: Programming. (line 8)
@@ -8673,7 +8678,7 @@ Index
* convert: Configuring. (line 67)
* convertOptions: Options. (line 129)
* Coons shading: fill. (line 74)
-* copy: Arrays. (line 169)
+* copy: Arrays. (line 173)
* Cos: Mathematical functions.
(line 20)
* cos: Mathematical functions.
@@ -8687,10 +8692,10 @@ Index
* cross: Data types. (line 167)
* crossframe: markers. (line 23)
* crosshatch: Pens. (line 267)
-* csv: Arrays. (line 363)
+* csv: Arrays. (line 367)
* CTZ: Arithmetic & logical.
(line 80)
-* cubicroots: Arrays. (line 319)
+* cubicroots: Arrays. (line 323)
* curl <1>: three. (line 6)
* curl: Bezier curves. (line 63)
* curlSpecifier: Paths and guides. (line 391)
@@ -8731,9 +8736,9 @@ Index
* delete <1>: Arrays. (line 39)
* delete: Files. (line 145)
* description: Description. (line 6)
-* diagonal: Arrays. (line 304)
+* diagonal: Arrays. (line 308)
* diamond: flowchart. (line 57)
-* dimension: Arrays. (line 368)
+* dimension: Arrays. (line 372)
* dir <1>: three. (line 502)
* dir <2>: Paths and guides. (line 98)
* dir <3>: Data types. (line 85)
@@ -8744,7 +8749,7 @@ Index
* dirtime: Paths and guides. (line 152)
* display: Configuring. (line 67)
* do: Programming. (line 29)
-* dot <1>: Arrays. (line 260)
+* dot <1>: Arrays. (line 264)
* dot <2>: Data types. (line 98)
* dot: draw. (line 83)
* DotMargin: draw. (line 42)
@@ -8796,9 +8801,9 @@ Index
* EndPoint: label. (line 57)
* envelope: Frames and pictures. (line 22)
* environment variables: Configuring. (line 87)
-* eof <1>: Arrays. (line 345)
+* eof <1>: Arrays. (line 349)
* eof: Files. (line 88)
-* eol <1>: Arrays. (line 345)
+* eol <1>: Arrays. (line 349)
* eol: Files. (line 88)
* EPS <1>: Options. (line 142)
* EPS: label. (line 80)
@@ -8843,7 +8848,7 @@ Index
(line 15)
* feynman: feynman. (line 6)
* fft <1>: math. (line 26)
-* fft: Arrays. (line 247)
+* fft: Arrays. (line 251)
* FFTW: Compiling from UNIX source.
(line 58)
* file <1>: Debugger. (line 45)
@@ -8956,7 +8961,7 @@ Index
* i_scaled: Mathematical functions.
(line 48)
* iconic: three. (line 210)
-* identity <1>: Arrays. (line 301)
+* identity <1>: Arrays. (line 305)
* identity <2>: Mathematical functions.
(line 6)
* identity: Transforms. (line 24)
@@ -9009,7 +9014,7 @@ Index
* InTicks: graph3. (line 34)
* intMax: Data types. (line 28)
* intMin: Data types. (line 28)
-* inverse <1>: Arrays. (line 307)
+* inverse <1>: Arrays. (line 311)
* inverse: Transforms. (line 16)
* invert: three. (line 422)
* invisible: Pens. (line 39)
@@ -9068,8 +9073,8 @@ Index
* libsigsegv <1>: Help. (line 33)
* libsigsegv: Functions. (line 88)
* limits: graph. (line 636)
-* line: Arrays. (line 345)
-* line mode: Arrays. (line 345)
+* line: Arrays. (line 349)
+* line mode: Arrays. (line 349)
* Linear: graph. (line 682)
* linecap: Pens. (line 129)
* linejoin: Pens. (line 138)
@@ -9112,7 +9117,7 @@ Index
* mathematical functions: Mathematical functions.
(line 6)
* max <1>: three. (line 502)
-* max <2>: Arrays. (line 226)
+* max <2>: Arrays. (line 230)
* max <3>: Frames and pictures. (line 7)
* max: Paths and guides. (line 264)
* maxbound: Data types. (line 104)
@@ -9133,7 +9138,7 @@ Index
* midpoint: Paths and guides. (line 166)
* MidPoint: label. (line 57)
* min <1>: three. (line 502)
-* min <2>: Arrays. (line 219)
+* min <2>: Arrays. (line 223)
* min <3>: Frames and pictures. (line 7)
* min: Paths and guides. (line 260)
* minbound: Data types. (line 101)
@@ -9143,6 +9148,7 @@ Index
* miterlimit: Pens. (line 147)
* mm: Tutorial. (line 61)
* mode: Files. (line 84)
+* monotonic: graph. (line 37)
* mouse: GUI. (line 6)
* mouse bindings: three. (line 137)
* Move: Pens. (line 339)
@@ -9153,6 +9159,7 @@ Index
* N: Tutorial. (line 104)
* name: Files. (line 84)
* named arguments: Named arguments. (line 6)
+* natural: graph. (line 37)
* new <1>: Arrays. (line 109)
* new: Structures. (line 6)
* newframe: Frames and pictures. (line 7)
@@ -9172,6 +9179,7 @@ Index
* nosafe: Options. (line 162)
* NOT: Arithmetic & logical.
(line 80)
+* notaknot: graph. (line 37)
* NoTicks: graph. (line 161)
* NoTicks3: graph3. (line 34)
* null: Structures. (line 6)
@@ -9222,7 +9230,7 @@ Index
* packing: Rest arguments. (line 30)
* pair <1>: Data types. (line 41)
* pair: Tutorial. (line 49)
-* pairs: Arrays. (line 243)
+* pairs: Arrays. (line 247)
* paperheight: Configuring. (line 61)
* papertype: Configuring. (line 61)
* paperwidth: Configuring. (line 61)
@@ -9250,6 +9258,7 @@ Index
* PenMargins: draw. (line 42)
* PenMargins2: three. (line 559)
* PenMargins3: three. (line 559)
+* periodic: graph. (line 37)
* perpendicular: geometry. (line 6)
* perspective: three. (line 358)
* picture: Frames and pictures. (line 35)
@@ -9294,7 +9303,7 @@ Index
* public: Structures. (line 6)
* push: Arrays. (line 39)
* Python usage: Interactive mode. (line 80)
-* quadraticroots: Arrays. (line 310)
+* quadraticroots: Arrays. (line 314)
* quarticroots: math. (line 22)
* quit <1>: Debugger. (line 54)
* quit <2>: Interactive mode. (line 59)
@@ -9314,9 +9323,9 @@ Index
(line 39)
* randMax: Mathematical functions.
(line 39)
-* read: Arrays. (line 386)
+* read: Arrays. (line 390)
* reading: Files. (line 11)
-* reading string arrays: Arrays. (line 355)
+* reading string arrays: Arrays. (line 359)
* readline: Files. (line 130)
* real: Data types. (line 33)
* realDigits: Data types. (line 33)
@@ -9440,8 +9449,8 @@ Index
* slopefield: slopefield. (line 6)
* solid: Pens. (line 95)
* solids: solids. (line 9)
-* solve: Arrays. (line 279)
-* sort: Arrays. (line 185)
+* solve: Arrays. (line 283)
+* sort: Arrays. (line 189)
* Spline <1>: graph3. (line 100)
* Spline: graph. (line 34)
* split: Data types. (line 261)
@@ -9474,7 +9483,7 @@ Index
* subpictures: Frames and pictures. (line 103)
* substr: Data types. (line 244)
* Subversion: Subversion. (line 6)
-* sum: Arrays. (line 214)
+* sum: Arrays. (line 218)
* superpath: Tutorial. (line 132)
* Suppress: Pens. (line 331)
* SuppressQuiet: Pens. (line 335)
@@ -9538,12 +9547,12 @@ Index
* transform: Transforms. (line 6)
* transform3: three. (line 432)
* transparency: Pens. (line 222)
-* transpose: Arrays. (line 206)
+* transpose: Arrays. (line 210)
* tree: tree. (line 9)
* trembling: trembling. (line 6)
* triangle: geometry. (line 6)
* triangulate: contour. (line 157)
-* tridiagonal: Arrays. (line 267)
+* tridiagonal: Arrays. (line 271)
* trigonometric integrals: Mathematical functions.
(line 48)
* triple: Data types. (line 108)
@@ -9590,7 +9599,7 @@ Index
(line 6)
* vectorfield: graph. (line 975)
* vectorfield3: graph3. (line 159)
-* vectorization: Arrays. (line 324)
+* vectorization: Arrays. (line 328)
* verbatim: Frames and pictures. (line 271)
* vertex-dependent colors: three. (line 81)
* Vertical: flowchart. (line 81)
@@ -9607,11 +9616,11 @@ Index
* Wheel: palette. (line 22)
* wheel mouse: GUI. (line 6)
* while: Programming. (line 29)
-* white-space string delimiter mode: Arrays. (line 355)
+* white-space string delimiter mode: Arrays. (line 359)
* width: LaTeX usage. (line 31)
* windingnumber: Paths and guides. (line 268)
-* word: Arrays. (line 355)
-* write <1>: Arrays. (line 395)
+* word: Arrays. (line 359)
+* write <1>: Arrays. (line 399)
* write: Files. (line 50)
* X: three. (line 274)
* xasy: GUI. (line 6)
@@ -9744,80 +9753,80 @@ Node: Named arguments147188
Node: Rest arguments149350
Node: Mathematical functions152160
Node: Arrays156767
-Ref: sort163651
-Ref: tridiagonal166061
-Ref: solve167289
-Node: Slices171482
-Node: Casts175372
-Node: Import177337
-Node: Static182564
-Node: LaTeX usage185458
-Node: Base modules190932
-Node: plain193432
-Node: simplex194084
-Node: math194357
-Node: interpolate197048
-Node: geometry197327
-Node: trembling197921
-Node: stats198272
-Node: patterns198532
-Node: markers198768
-Node: tree200551
-Node: binarytree200739
-Node: drawtree201328
-Node: syzygy201532
-Node: feynman201806
-Node: roundedpath202081
-Node: animation202364
-Ref: animate202781
-Node: embed203920
-Node: slide205709
-Node: MetaPost206049
-Node: unicode206765
-Node: latin1207653
-Node: babel208021
-Node: labelpath208250
-Node: labelpath3209070
-Node: annotate209381
-Node: CAD209852
-Node: graph210162
-Ref: ticks217291
-Ref: pathmarkers230570
-Ref: marker231035
-Ref: markuniform231386
-Ref: errorbars233177
-Ref: automatic scaling237233
-Node: palette247879
-Ref: images247997
-Ref: image252168
-Ref: logimage252646
-Ref: penimage253452
-Node: three253896
-Ref: PostScript3D278438
-Node: obj280130
-Node: graph3280382
-Ref: GaussianSurface285507
-Node: grid3286611
-Node: solids287351
-Node: tube288299
-Node: flowchart290534
-Node: contour295103
-Node: contour3300228
-Node: slopefield300535
-Node: ode301972
-Node: Options302232
-Ref: configuration file308077
-Ref: settings308077
-Ref: convert309278
-Node: Interactive mode312245
-Ref: history314398
-Node: GUI315703
-Node: GUI installation316206
-Node: GUI usage317336
-Node: PostScript to Asymptote318239
-Node: Help318995
-Node: Debugger320731
-Node: Credits322516
-Node: Index323448
+Ref: sort163817
+Ref: tridiagonal166221
+Ref: solve167449
+Node: Slices171642
+Node: Casts175532
+Node: Import177497
+Node: Static182724
+Node: LaTeX usage185618
+Node: Base modules191092
+Node: plain193592
+Node: simplex194244
+Node: math194517
+Node: interpolate197222
+Node: geometry197501
+Node: trembling198095
+Node: stats198446
+Node: patterns198706
+Node: markers198942
+Node: tree200725
+Node: binarytree200913
+Node: drawtree201502
+Node: syzygy201706
+Node: feynman201980
+Node: roundedpath202255
+Node: animation202538
+Ref: animate202955
+Node: embed204094
+Node: slide205883
+Node: MetaPost206223
+Node: unicode206939
+Node: latin1207827
+Node: babel208195
+Node: labelpath208424
+Node: labelpath3209244
+Node: annotate209555
+Node: CAD210026
+Node: graph210336
+Ref: ticks217465
+Ref: pathmarkers230744
+Ref: marker231209
+Ref: markuniform231560
+Ref: errorbars233351
+Ref: automatic scaling237407
+Node: palette248053
+Ref: images248171
+Ref: image252342
+Ref: logimage252820
+Ref: penimage253626
+Node: three254070
+Ref: PostScript3D278612
+Node: obj280304
+Node: graph3280556
+Ref: GaussianSurface285681
+Node: grid3286785
+Node: solids287525
+Node: tube288473
+Node: flowchart290708
+Node: contour295277
+Node: contour3300402
+Node: slopefield300709
+Node: ode302146
+Node: Options302406
+Ref: configuration file308251
+Ref: settings308251
+Ref: convert309452
+Node: Interactive mode312419
+Ref: history314572
+Node: GUI315877
+Node: GUI installation316380
+Node: GUI usage317510
+Node: PostScript to Asymptote318413
+Node: Help319169
+Node: Debugger320905
+Node: Credits322690
+Node: Index323622

End Tag Table
diff --git a/Master/texmf/doc/man/man1/asy.man1.pdf b/Master/texmf/doc/man/man1/asy.man1.pdf
index a074b219c54..80ae55c122b 100644
--- a/Master/texmf/doc/man/man1/asy.man1.pdf
+++ b/Master/texmf/doc/man/man1/asy.man1.pdf
Binary files differ
diff --git a/Master/tlpkg/asymptote/asy.exe b/Master/tlpkg/asymptote/asy.exe
index a18f2404ea5..a068d7cfe3b 100755
--- a/Master/tlpkg/asymptote/asy.exe
+++ b/Master/tlpkg/asymptote/asy.exe
Binary files differ