summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
Diffstat (limited to 'Build')
-rw-r--r--Build/source/utils/README2
-rw-r--r--Build/source/utils/asymptote/ChangeLog96
-rw-r--r--Build/source/utils/asymptote/README6
-rw-r--r--Build/source/utils/asymptote/ReleaseNotes8
-rw-r--r--Build/source/utils/asymptote/asy-keywords.el2
-rw-r--r--Build/source/utils/asymptote/asy.list720
-rw-r--r--Build/source/utils/asymptote/asymptote.nsi2
-rw-r--r--Build/source/utils/asymptote/asymptote.spec2
-rw-r--r--Build/source/utils/asymptote/base/geometry.asy4
-rw-r--r--Build/source/utils/asymptote/bezierpatch.cc19
-rw-r--r--Build/source/utils/asymptote/bezierpatch.h20
-rw-r--r--Build/source/utils/asymptote/config.sub181
-rwxr-xr-xBuild/source/utils/asymptote/configure18
-rw-r--r--Build/source/utils/asymptote/configure.ac4
-rw-r--r--Build/source/utils/asymptote/doc/CAD.pdfbin66788 -> 67517 bytes
-rw-r--r--Build/source/utils/asymptote/doc/FAQ/asy-faq.info2
-rw-r--r--Build/source/utils/asymptote/doc/Makefile.in3
-rw-r--r--Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdfbin31971 -> 31416 bytes
-rw-r--r--Build/source/utils/asymptote/doc/asy-latex.pdfbin194549 -> 194549 bytes
-rw-r--r--Build/source/utils/asymptote/doc/asyRefCard.pdfbin54962 -> 53677 bytes
-rw-r--r--Build/source/utils/asymptote/doc/asymptote.pdfbin1295210 -> 1295140 bytes
-rw-r--r--Build/source/utils/asymptote/doc/png/asymptote.info4
-rw-r--r--Build/source/utils/asymptote/picture.cc45
-rw-r--r--Build/source/utils/asymptote/picture.h1
-rw-r--r--Build/source/utils/asymptote/revision.cc2
-rw-r--r--Build/source/utils/asymptote/triple.h3
26 files changed, 615 insertions, 529 deletions
diff --git a/Build/source/utils/README b/Build/source/utils/README
index 7bdfce40b13..deb6225aad1 100644
--- a/Build/source/utils/README
+++ b/Build/source/utils/README
@@ -5,7 +5,7 @@ Extra utilities we (optionally) compile for TeX Live.
See comments in ../texk/README.
-asymptote 2.40 - checked 7mar17
+asymptote 2.41 - checked 23mar17
update to TL from CTAN, to include prebuilt doc.
see http://tug.org/texlive/build.html#asymptote
and tlpkg/bin/tl-update-asy
diff --git a/Build/source/utils/asymptote/ChangeLog b/Build/source/utils/asymptote/ChangeLog
index d0c75a20d14..d443c3a47ae 100644
--- a/Build/source/utils/asymptote/ChangeLog
+++ b/Build/source/utils/asymptote/ChangeLog
@@ -1,3 +1,87 @@
+commit 40f27e1424f6c63aa362f16f3c65b9f3d1d6e723
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Mar 22 01:56:17 2017 -0600
+
+ Always use epsdriver.
+
+commit ee57aa9c533e4a71fc20151928e5cf418d4effc5
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Mar 22 00:29:27 2017 -0600
+
+ Update bug reporting URL in README.
+
+commit 207695a78f697be391991f5c943543ebeccf4e87
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue Mar 21 23:34:36 2017 -0600
+
+ Remove temporary ConTeXt log file.
+
+commit a981ce85db27372750fd19aec9d4456d3bc0b21a
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue Mar 21 23:19:22 2017 -0600
+
+ Support eps output with all TeX engines.
+
+ Work around Imagemagick black background bug in jpg output.
+
+commit 3e42b17ffde9941bf0ad6e24a05f73c788d755b5
+Author: John Bowman <bowman@ualberta.ca>
+Date: Mon Mar 20 23:05:31 2017 -0600
+
+ Remove temporary pbsdat file.
+
+commit dacbf47554b36d0571394b3c4d747405e53f2708
+Merge: f34a52d c2e4bd5
+Author: John Bowman <bowman@ualberta.ca>
+Date: Fri Mar 17 01:48:29 2017 -0600
+
+ Merge pull request #38 from ivankokan/master
+
+ Add improvements for perpendicular marks.
+
+commit f34a52dfbebee7100a0d853edda78c99f1e5f2c0
+Author: John Bowman <bowman@ualberta.ca>
+Date: Fri Mar 17 01:20:43 2017 -0600
+
+ Use different rendering constants for Bezier patches and triangles.
+ Improve flatness test for Bezier triangles.
+
+commit 0b59b3b2b2432b3c715eb80f0305c454bd7a9e00
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Mar 5 14:17:40 2017 -0700
+
+ Fix previous commit.
+
+commit 9a2b4810156bf34c4257f08dc12595aed9867147
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Mar 4 18:32:36 2017 -0700
+
+ Make perl look in FAQ directory.
+
+commit b3322131bebd3a506add235d25ae7ca53ab2efcd
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Mar 2 15:41:45 2017 -0700
+
+ Reduce rendering constant back to 0.5.
+
+commit 00716297f257c464e97bb0bd6b747c4034bcb97e
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Mar 2 15:10:37 2017 -0700
+
+ Remove unused variable.
+
+commit 05b6d931d5546359b061e3959817ff8d4936672a
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Mar 2 09:57:58 2017 -0700
+
+ Remove out-of-date opengl32.dll and glu32.dll libraries on install.
+
+commit 585c158ee53e4d202f1ceda5c12782a06aec57e9
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Mar 2 00:18:05 2017 -0700
+
+ Increment version to 2.41.
+
commit 5a6d3626f3589f7fdc7193dea97ae335ad70b242
Author: John Bowman <bowman@ualberta.ca>
Date: Wed Mar 1 23:43:49 2017 -0700
@@ -18,6 +102,18 @@ Date: Wed Mar 1 22:09:50 2017 -0700
Fix multisample detection; remove MSDOS workarounds (tested with
freeglut-2.8.1).
+commit c2e4bd5990b9f3e6963ea80da2eb20d3a48c7a82
+Author: ivankokan <ivan.kokan@gmail.com>
+Date: Wed Mar 1 17:37:51 2017 +0100
+
+ markrightangle: margin manipulation removed (it resulted with blank area between the perpendicular mark and a line thinner than currentpen), perpendicular mark now always starts from the "middle" of lines
+
+commit 7636977c5c744ba28df9ae21c3dd7530d1beaa5f
+Author: ivankokan <ivan.kokan@gmail.com>
+Date: Wed Mar 1 17:37:51 2017 +0100
+
+ perpendicularmark: miterjoin added (aesthetic improvement and alignment with existing squarecap)
+
commit 8de2b9cae38a5bdfc29bbe6ee8bec9def0515c5c
Author: John Bowman <bowman@ualberta.ca>
Date: Sat Feb 25 01:45:58 2017 -0700
diff --git a/Build/source/utils/asymptote/README b/Build/source/utils/asymptote/README
index 2bbcdc84004..eeac4d753ba 100644
--- a/Build/source/utils/asymptote/README
+++ b/Build/source/utils/asymptote/README
@@ -11,9 +11,9 @@ available at:
http://asymptote.sourceforge.net
-Bugs/Patches/Feature Requests can be submitted using the
-Bug/Patch/Feature Tracking Systems at
-http://sourceforge.net/projects/asymptote/.
+Bugs/Patches/Feature Requests can be submitted to
+
+https://github.com/vectorgraphics/asymptote/issues
Questions and comments should be sent to the Asymptote Forum:
diff --git a/Build/source/utils/asymptote/ReleaseNotes b/Build/source/utils/asymptote/ReleaseNotes
index 3da0c7b4156..ce52857bf1e 100644
--- a/Build/source/utils/asymptote/ReleaseNotes
+++ b/Build/source/utils/asymptote/ReleaseNotes
@@ -1,3 +1,11 @@
+Release Notes for Version 2.41
+
+The rendering of Bezier patches was improved. Minor improvements were made
+to perpendicular marks in the geometry package. A perl issue was addressed.
+Two unwanted temporary files are now removed after TeX processing.
+EPS output is now supported with all TeX engines. A workaround was
+implemented for the ImageMagick jpeg black background bug.
+
Release Notes for Version 2.40
A partial workaround for the OpenGL transparency bug was implemented, by
diff --git a/Build/source/utils/asymptote/asy-keywords.el b/Build/source/utils/asymptote/asy-keywords.el
index 0d2296ce975..56394f9ec67 100644
--- a/Build/source/utils/asymptote/asy-keywords.el
+++ b/Build/source/utils/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 "2.40")
+(defvar asy-keywords-version "2.41")
(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/Build/source/utils/asymptote/asy.list b/Build/source/utils/asymptote/asy.list
index a23f8ca6987..fbeeb675b80 100644
--- a/Build/source/utils/asymptote/asy.list
+++ b/Build/source/utils/asymptote/asy.list
@@ -8,9 +8,9 @@ real arrowdir;
filltype filltype(int type=<default>, pen fillpen=<default>, pen drawpen=<default>, void fill2(frame f, path[] g, pen fillpen));
int Suppress;
align NoAlign;
-pair relative(picture pic=<default>, pair z);
filltype RadialShade(pen penc, pen penr);
real[] arrowbasepoints(path base, path left, path right, real default=<default>);
+object embed3(string, frame, string, string, string, light, projection);
real bp;
pen mean(pen[] p, real opacity(real[])=<default>);
pen[] mean(pen[][] palette, real opacity(real[])=<default>);
@@ -21,12 +21,15 @@ cputime cputime();
real inches;
pair SW;
real inch;
+picture legenditem(Legend legenditem, real linelength);
marginT EndMargin(path, pen);
pen mediumgrey;
pen darkcyan;
coord[] maxcoords(coord[] in, bool operator <=(coord, coord));
coord[] maxcoords(coord[] in, bool operator <=(coord, coord));
real legendhskip;
+string ask(string prompt);
+frame[] fit2(picture[] pictures, picture all);
void addSaveFunction(void s()());
pen olive;
pen zerowinding;
@@ -55,8 +58,6 @@ pen Yellow;
real cm;
pen mediumgreen;
pen heavygreen;
-string ask(string prompt);
-frame[] fit2(picture[] pictures, picture all);
pen dashdotted;
bool diagnostics;
pen deepblue;
@@ -130,6 +131,7 @@ pen pink;
pen TimesRoman(string series=<default>, string shape=<default>);
pen palemagenta;
int mantissaBits;
+void copyPairOrTriple(pairOrTriple dest, pairOrTriple src);
pen lightolive;
path arrowbase(path r, pair y, real t, real size);
frame pack(pair align=<default> ... object[] inset);
@@ -143,9 +145,9 @@ void addArrow(picture pic, arrowhead arrowhead, path g, pen p, real size, real a
pen lightgray;
picture arrow2(arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>);
void startScript();
+pair relative(picture pic=<default>, pair z);
position MidPoint;
string Embed(string name, string text=<default>, string options=<default>, real width=<default>, real height=<default>);
-object embed3(string, frame, string, string, string, light, projection);
pen deepgrey;
pen lightyellow;
marginT Margin(path, pen)(real begin, real end);
@@ -164,12 +166,6 @@ transform Scale(transform t);
string getstring(string name=<default>, string default=<default>, string prompt=<default>, bool store=<default>);
marginT DotMargins(path, pen);
path[] MarkPath;
-frame[] fit(string prefix=<default>, picture[] pictures, string format=<default>, bool view=<default>, string options=<default>, string script=<default>, projection P=<default>);
-pen Bookman(string series=<default>, string shape=<default>);
-path box(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
-path box(frame f, Label L, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
-path box(pair a, pair b);
-picture legenditem(Legend legenditem, real linelength);
pen deepgray;
string defaultformat(int n, string trailingzero=<default>, bool fixed=<default>, bool signed=<default>);
string defaultformat;
@@ -179,7 +175,6 @@ frame align(frame f, pair align);
object align(object F, pair align);
path[] align(path[] g, transform t=<default>, pair position, pair align, pen p=<default>);
transform scaleless(transform t);
-void copyPairOrTriple(pairOrTriple dest, pairOrTriple src);
pen thin();
real arcarrowangle;
void restoredefaults();
@@ -236,6 +231,11 @@ bool None(picture, path, pen, marginT(path, pen));
pen AvantGarde(string series=<default>, string shape=<default>);
real circleprecision;
pen Black;
+pen Bookman(string series=<default>, string shape=<default>);
+path box(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
+path box(frame f, Label L, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
+path box(pair a, pair b);
+frame[] fit(string prefix=<default>, picture[] pictures, string format=<default>, bool view=<default>, string options=<default>, string script=<default>, projection P=<default>);
void report(string text);
void report(int i);
void report(transform t);
@@ -309,19 +309,19 @@ pair endpoint(path p);
arrowhead HookHead;
arrowhead HookHead(real dir=<default>, real barb=<default>);
real[] concat(... real[][]);
+picture[] concat(... picture[][]);
marker[] concat(... marker[][]);
pair[] concat(... pair[][]);
pen[] concat(... pen[][]);
coord[] concat(... coord[][]);
coord[] concat(... coord[][]);
+Legend[] concat(... Legend[][]);
path[] concat(... path[][]);
-picture[] concat(... picture[][]);
int[] concat(... int[][]);
void()()[] concat(... void()()[][]);
bool3[] concat(... bool3[][]);
string[] concat(... string[][]);
object[] concat(... object[][]);
-Legend[] concat(... Legend[][]);
triple[] concat(... triple[][]);
Label[] concat(... Label[][]);
frame[] concat(... frame[][]);
@@ -366,7 +366,9 @@ pair[][] array(int n, pair[] value, int depth=<default>);
bool3[] array(int n, bool3 value, int depth=<default>);
coord[] array(int n, coord value, int depth=<default>);
coord[] array(int n, coord value, int depth=<default>);
+picture[] array(int n, picture value, int depth=<default>);
marker[] array(int n, marker value, int depth=<default>);
+Legend[] array(int n, Legend value, int depth=<default>);
Label[] array(int n, Label value, int depth=<default>);
real[][] array(int n, real[] value, int depth=<default>);
real[] array(int n, real value, int depth=<default>);
@@ -375,8 +377,6 @@ path[] array(int n, path value, int depth=<default>);
frame[] array(int n, frame value, int depth=<default>);
pen[][] array(int n, pen[] value, int depth=<default>);
object[] array(int n, object value, int depth=<default>);
-picture[] array(int n, picture value, int depth=<default>);
-Legend[] array(int n, Legend value, int depth=<default>);
int[] array(int n, int value, int depth=<default>);
string[][] array(int n, string[] value, int depth=<default>);
pair[] array(int n, pair value, int depth=<default>);
@@ -678,8 +678,6 @@ bool operator !(bool b);
int[] sequence(int n);
pen[][] sequence(pen[] f(int), int n);
object[] sequence(object f(int), int n);
-picture[] sequence(picture f(int), int n);
-Legend[] sequence(Legend f(int), int n);
int[] sequence(int f(int), int n);
string[][] sequence(string[] f(int), int n);
pair[] sequence(pair f(int), int n);
@@ -692,7 +690,9 @@ pair[][] sequence(pair[] f(int), int n);
bool3[] sequence(bool3 f(int), int n);
coord[] sequence(coord f(int), int n);
coord[] sequence(coord f(int), int n);
+picture[] sequence(picture f(int), int n);
marker[] sequence(marker f(int), int n);
+Legend[] sequence(Legend f(int), int n);
Label[] sequence(Label f(int), int n);
real[][] sequence(real[] f(int), int n);
real[] sequence(real f(int), int n);
@@ -790,8 +790,8 @@ void texpreamble(string s);
real braceouterangle;
void tex(frame f, string s);
void tex(frame f, string s, pair min, pair max);
-void tex(picture pic=<default>, string s, pair min, pair max);
void tex(picture pic=<default>, string s);
+void tex(picture pic=<default>, string s, pair min, pair max);
void prepend(frame dest, frame src);
void add(frame dest, frame src);
void add(picture dest=<default>, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>);
@@ -799,6 +799,7 @@ void add(frame dest, frame src, pair position, pair align, bool group=<default>,
void add(picture src, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void add(picture pic=<default>, void d(frame f, transform t), bool exact=<default>);
void add(picture pic=<default>, void d(picture, real[][]), bool exact=<default>);
+void add(picture pic=<default>, Label L);
void add(picture dest, picture src, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void add(frame f, transform t=<default>, Label L);
void add(picture dest, picture src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
@@ -808,7 +809,6 @@ void add(frame dest, frame src, bool group, filltype filltype=<default>, bool ab
void add(picture pic=<default>, void d(frame f, real[][] t, picture pic, projection P), bool exact=<default>);
void add(frame dest, frame src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void add(picture dest=<default>, frame src, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>);
-void add(picture pic=<default>, Label L);
void add(picture pic=<default>, void d(picture, transform), bool exact=<default>);
void add(picture src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void endgroup3(frame f);
@@ -870,8 +870,8 @@ transform rotate(real angle, pair z=<default>);
bool IgnoreAspect;
void postscript(frame f, string s);
void postscript(frame f, string s, pair min, pair max);
-void postscript(picture pic=<default>, string s, pair min, pair max);
void postscript(picture pic=<default>, string s);
+void postscript(picture pic=<default>, string s, pair min, pair max);
transform slant(real s);
transform yscale(real y);
transform inverse(transform t);
@@ -919,8 +919,8 @@ pair size(frame f);
int size(path p);
int size(path[] p);
int size(path3 p);
-pair size(picture pic, bool user=<default>);
void size(picture dest, picture src);
+pair size(picture pic, bool user=<default>);
void size(picture pic=<default>, real x, real y=<default>, bool keepAspect=<default>);
void size(picture pic=<default>, real xsize, real ysize, pair min, pair max);
string texify(string s);
@@ -1043,58 +1043,58 @@ string VERSION;
bool alias(pair[][] a, pair[][] b);
bool alias(guide[] a, guide[] b);
bool alias(marginT a, marginT b);
-bool alias(Legend a, Legend b);
+bool alias(scaleT a, scaleT b);
bool alias(object a, object b);
-bool alias(picture[] a, picture[] b);
bool alias(cputime a, cputime b);
bool alias(pair[] a, pair[] b);
bool alias(coord a, coord b);
bool alias(coord a, coord b);
-bool alias(coords3 a, coords3 b);
+bool alias(Legend a, Legend b);
+bool alias(side a, side b);
bool alias(framedTransformStack a, framedTransformStack b);
bool alias(Label[] a, Label[] b);
bool alias(int[] a, int[] b);
bool alias(string[][] a, string[][] b);
bool alias(slice a, slice b);
bool alias(freezableBounds a, freezableBounds b);
-bool alias(scaleT a, scaleT b);
-bool alias(autoscaleT a, autoscaleT b);
+bool alias(projection a, projection b);
bool alias(position a, position b);
bool alias(arrowhead a, arrowhead b);
bool alias(real[][] a, real[][] b);
bool alias(bool3 a, bool3 b);
bool alias(bool3[] a, bool3[] b);
-bool alias(pairOrTriple a, pairOrTriple b);
+bool alias(autoscaleT a, autoscaleT b);
bool alias(string[] a, string[] b);
bool alias(frame[] a, frame[] b);
bool alias(scaling a, scaling b);
bool alias(scaling a, scaling b);
bool alias(bounds a, bounds b);
bool alias(light a, light b);
-bool alias(align a, align b);
+bool alias(pairOrTriple a, pairOrTriple b);
bool alias(bool[] a, bool[] b);
bool alias(void()()[] a, void()()[] b);
bool alias(pen[][] a, pen[][] b);
bool alias(filltype a, filltype b);
bool alias(coord[] a, coord[] b);
bool alias(coord[] a, coord[] b);
-bool alias(ScaleT a, ScaleT b);
+bool alias(coords3 a, coords3 b);
bool alias(Label a, Label b);
+bool alias(Legend[] a, Legend[] b);
bool alias(processtime a, processtime b);
bool alias(path[] a, path[] b);
bool alias(triple[] a, triple[] b);
-bool alias(projection a, projection b);
-bool alias(picture a, picture b);
+bool alias(ScaleT a, ScaleT b);
+bool alias(align a, align b);
bool alias(object[] a, object[] b);
bool alias(indexedTransform a, indexedTransform b);
-bool alias(Legend[] a, Legend[] b);
bool alias(real[] a, real[] b);
bool alias(pen[] a, pen[] b);
bool alias(hsv a, hsv b);
bool alias(coords2 a, coords2 b);
bool alias(coords2 a, coords2 b);
bool alias(transformation a, transformation b);
-bool alias(side a, side b);
+bool alias(picture a, picture b);
+bool alias(picture[] a, picture[] b);
bool alias(marker a, marker b);
bool alias(marker[] a, marker[] b);
real pi;
@@ -1118,14 +1118,15 @@ real[] map(real f(pair), pair[] a);
int[] map(int f(real), real[] a);
bool3[] map(bool3 f(bool3), bool3[] a);
frame[] map(frame f(frame), frame[] a);
-picture[] map(picture f(picture), picture[] a);
pen[][] map(pen[] f(pen[]), pen[][] a);
triple[] map(triple f(triple), triple[] a);
pen[] map(pen f(pen), pen[] a);
coord[] map(coord f(coord), coord[] a);
coord[] map(coord f(coord), coord[] a);
+Legend[] map(Legend f(Legend), Legend[] a);
pair[] map(pair f(pair), pair[] a);
string[] map(string f(string), string[] a);
+picture[] map(picture f(picture), picture[] a);
marker[] map(marker f(marker), marker[] a);
void()()[] map(void f()()(void()()), void()()[] a);
pair[][] map(pair[] f(pair[]), pair[][] a);
@@ -1137,7 +1138,6 @@ bool[] map(bool f(bool), bool[] a);
path[] map(path f(path), path[] a);
real[][] map(real[] f(real[]), real[][] a);
object[] map(object f(object), object[] a);
-Legend[] map(Legend f(Legend), Legend[] a);
guide[] map(guide f(guide), guide[] a);
real identity(real x);
real[] identity(real[] a);
@@ -1252,18 +1252,18 @@ int search(int[] a, int key);
int search(real[] a, real key);
int search(string[] a, string key);
int search(void()()[] a, void key()(), bool less(void()(), void()()));
+int search(picture[] a, picture key, bool less(picture, picture));
int search(marker[] a, marker key, bool less(marker, marker));
int search(real[] a, real key, bool less(real, real));
int search(guide[] a, guide key, bool less(guide, guide));
int search(pair[] a, pair key, bool less(pair, pair));
int search(coord[] a, coord key, bool less(coord, coord));
int search(coord[] a, coord key, bool less(coord, coord));
+int search(Legend[] a, Legend key, bool less(Legend, Legend));
int search(frame[] a, frame key, bool less(frame, frame));
-int search(picture[] a, picture key, bool less(picture, picture));
int search(int[] a, int key, bool less(int, int));
int search(bool3[] a, bool3 key, bool less(bool3, bool3));
int search(object[] a, object key, bool less(object, object));
-int search(Legend[] a, Legend key, bool less(Legend, Legend));
int search(string[] a, string key, bool less(string, string));
int search(path[] a, path key, bool less(path, path));
int search(pen[] a, pen key, bool less(pen, pen));
@@ -1282,22 +1282,22 @@ pair[] sort(pair[] a, bool less(pair, pair));
void()()[] sort(void()()[] a, bool less(void()(), void()()));
real[] sort(real[] a, bool less(real, real));
bool[] sort(bool[] a, bool less(bool, bool));
+picture[] sort(picture[] a, bool less(picture, picture));
marker[] sort(marker[] a, bool less(marker, marker));
pen[] sort(pen[] a, bool less(pen, pen));
pen[][] sort(pen[][] a, bool less(pen[], pen[]));
coord[] sort(coord[] a, bool less(coord, coord));
coord[] sort(coord[] a, bool less(coord, coord));
+Legend[] sort(Legend[] a, bool less(Legend, Legend));
guide[] sort(guide[] a, bool less(guide, guide));
real[][] sort(real[][] a, bool less(real[], real[]));
triple[] sort(triple[] a, bool less(triple, triple));
-picture[] sort(picture[] a, bool less(picture, picture));
string[] sort(string[] a, bool less(string, string));
int[] sort(int[] a, bool less(int, int));
string[][] sort(string[][] a, bool less(string[], string[]));
bool3[] sort(bool3[] a, bool less(bool3, bool3));
pair[][] sort(pair[][] a, bool less(pair[], pair[]));
object[] sort(object[] a, bool less(object, object));
-Legend[] sort(Legend[] a, bool less(Legend, Legend));
frame[] sort(frame[] a, bool less(frame, frame));
pair postcontrol(path p, int t);
pair postcontrol(path p, real t);
@@ -1329,8 +1329,8 @@ pair max(frame f);
pair max(explicit path p);
pair max(path[] p);
triple max(path3 p);
-pair max(picture pic, bool user=<default>);
int max(... int[] a);
+pair max(picture pic, bool user=<default>);
real max(... real[] a);
real max(real M, scaling s, coord[] c);
real max(real M, scaling s, coord[] c);
@@ -1364,10 +1364,10 @@ pair min(frame f);
pair min(explicit path p);
pair min(path[] p);
triple min(path3 p);
+pair min(picture pic, bool user=<default>);
real min(... real[] a);
real min(real m, scaling s, coord[] c);
real min(real m, scaling s, coord[] c);
-pair min(picture pic, bool user=<default>);
int min(... int[] a);
void srand(int seed);
bool operator >(int a, int b);
@@ -1435,8 +1435,6 @@ bool[] copy(bool[] a, int depth=<default>);
real[][] copy(real[][] a, int depth=<default>);
pen[] copy(pen[] a, int depth=<default>);
object[] copy(object[] a, int depth=<default>);
-picture[] copy(picture[] a, int depth=<default>);
-Legend[] copy(Legend[] a, int depth=<default>);
pen[][] copy(pen[][] a, int depth=<default>);
path[] copy(path[] a, int depth=<default>);
string[] copy(string[] a, int depth=<default>);
@@ -1448,7 +1446,9 @@ pair[] copy(pair[] a, int depth=<default>);
bool3[] copy(bool3[] a, int depth=<default>);
coord[] copy(coord[] a, int depth=<default>);
coord[] copy(coord[] a, int depth=<default>);
+picture[] copy(picture[] a, int depth=<default>);
marker[] copy(marker[] a, int depth=<default>);
+Legend[] copy(Legend[] a, int depth=<default>);
Label[] copy(Label[] a, int depth=<default>);
pair[][] copy(pair[][] a, int depth=<default>);
real[] abs(pair[] a);
@@ -1536,13 +1536,13 @@ triple operator *(real x, triple v);
triple operator *(triple v, real x);
path3 operator *(real[][] t, path3 g);
Label operator *(transform t, Label L);
-picture operator *(real[][] t, picture orig);
+picture operator *(transform t, picture orig);
bounds operator *(transform t, bounds b);
path[] operator *(transform t, explicit path[] p);
pair[] operator *(transform t, pair[] z);
-side operator *(real x, side s);
Label operator *(real[][] t, Label L);
-picture operator *(transform t, picture orig);
+picture operator *(real[][] t, picture orig);
+side operator *(real x, side s);
object operator *(transform t, explicit object F);
real latitude(triple v, bool warn=<default>);
int sum(int[] a);
@@ -1623,10 +1623,10 @@ void write(file file=<default>, string s=<default>, pen[] p);
void write(void suffix(file)=<default>);
void write(file file, string s=<default>, explicit path[] x, void suffix(file)=<default>);
void write(file file=<default>, align align, void suffix(file)=<default>);
+void write(pairOrTriple a);
void write(file file, string s=<default>, cputime c, string format=<default>, void suffix(file)=<default>);
void write(string s=<default>, bool3 b, void suffix(file)=<default>);
void write(file file, string s=<default>, bool3 b, void suffix(file)=<default>);
-void write(pairOrTriple a);
void write(string s=<default>, explicit guide[] x, void suffix(file)=<default>);
void write(file file=<default>, Label L, void suffix(file)=<default>);
bool operator !=(bool a, bool b);
@@ -1666,39 +1666,39 @@ bool operator !=(file a, file b);
bool operator !=(path a, path b);
bool operator !=(path3 a, path3 b);
bool operator !=(bool3 a, bool3 b);
-bool operator !=(pairOrTriple a, pairOrTriple b);
+bool operator !=(autoscaleT a, autoscaleT b);
bool operator !=(scaling a, scaling b);
bool operator !=(scaling a, scaling b);
bool operator !=(bounds a, bounds b);
bool operator !=(light a, light b);
-bool operator !=(align a, align b);
+bool operator !=(pairOrTriple a, pairOrTriple b);
bool operator !=(filltype a, filltype b);
-bool operator !=(ScaleT a, ScaleT b);
+bool operator !=(coords3 a, coords3 b);
bool operator !=(Label a, Label b);
bool operator !=(processtime a, processtime b);
-bool operator !=(projection a, projection b);
-bool operator !=(picture a, picture b);
+bool operator !=(ScaleT a, ScaleT b);
+bool operator !=(align a, align b);
bool operator !=(indexedTransform a, indexedTransform b);
bool operator !=(hsv a, hsv b);
bool operator !=(coords2 a, coords2 b);
bool operator !=(coords2 a, coords2 b);
bool operator !=(transformation a, transformation b);
-bool operator !=(side a, side b);
+bool operator !=(picture a, picture b);
bool operator !=(marker a, marker b);
bool operator !=(bool3 a, bool b);
bool operator !=(marginT a, marginT b);
-bool operator !=(Legend a, Legend b);
+bool operator !=(scaleT a, scaleT b);
bool operator !=(object a, object b);
bool operator !=(cputime a, cputime b);
bool operator !=(coord a, coord b);
bool operator !=(coord a, coord b);
-bool operator !=(coords3 a, coords3 b);
+bool operator !=(Legend a, Legend b);
+bool operator !=(side a, side b);
bool operator !=(framedTransformStack a, framedTransformStack b);
bool operator !=(bool a, bool3 b);
bool operator !=(slice a, slice b);
bool operator !=(freezableBounds a, freezableBounds b);
-bool operator !=(scaleT a, scaleT b);
-bool operator !=(autoscaleT a, autoscaleT b);
+bool operator !=(projection a, projection b);
bool operator !=(position a, position b);
bool operator !=(arrowhead a, arrowhead b);
bool operator ==(bool a, bool b);
@@ -1738,39 +1738,39 @@ bool operator ==(file a, file b);
bool operator ==(path a, path b);
bool operator ==(path3 a, path3 b);
bool operator ==(bool3 a, bool3 b);
-bool operator ==(pairOrTriple a, pairOrTriple b);
+bool operator ==(autoscaleT a, autoscaleT b);
bool operator ==(scaling a, scaling b);
bool operator ==(scaling a, scaling b);
bool operator ==(bounds a, bounds b);
bool operator ==(light a, light b);
-bool operator ==(align a, align b);
+bool operator ==(pairOrTriple a, pairOrTriple b);
bool operator ==(filltype a, filltype b);
-bool operator ==(ScaleT a, ScaleT b);
+bool operator ==(coords3 a, coords3 b);
bool operator ==(Label a, Label b);
bool operator ==(processtime a, processtime b);
-bool operator ==(projection a, projection b);
-bool operator ==(picture a, picture b);
+bool operator ==(ScaleT a, ScaleT b);
+bool operator ==(align a, align b);
bool operator ==(indexedTransform a, indexedTransform b);
bool operator ==(hsv a, hsv b);
bool operator ==(coords2 a, coords2 b);
bool operator ==(coords2 a, coords2 b);
bool operator ==(transformation a, transformation b);
-bool operator ==(side a, side b);
+bool operator ==(picture a, picture b);
bool operator ==(marker a, marker b);
bool operator ==(bool3 a, bool b);
bool operator ==(marginT a, marginT b);
-bool operator ==(Legend a, Legend b);
+bool operator ==(scaleT a, scaleT b);
bool operator ==(object a, object b);
bool operator ==(cputime a, cputime b);
bool operator ==(coord a, coord b);
bool operator ==(coord a, coord b);
-bool operator ==(coords3 a, coords3 b);
+bool operator ==(Legend a, Legend b);
+bool operator ==(side a, side b);
bool operator ==(framedTransformStack a, framedTransformStack b);
bool operator ==(bool a, bool3 b);
bool operator ==(slice a, slice b);
bool operator ==(freezableBounds a, freezableBounds b);
-bool operator ==(scaleT a, scaleT b);
-bool operator ==(autoscaleT a, autoscaleT b);
+bool operator ==(projection a, projection b);
bool operator ==(position a, position b);
bool operator ==(arrowhead a, arrowhead b);
bool operator ^(bool a, bool b);
@@ -1887,23 +1887,24 @@ string[][][] operator cast(file);
guide operator cast(cycleToken tok);
guide operator cast(curlSpecifier spec);
guide operator cast(tensionSpecifier t);
-align operator cast(side side);
guide[] operator cast(path[] g);
+pair operator cast(pairOrTriple a);
+triple operator cast(pairOrTriple a);
hsv operator cast(pen p);
-align operator cast(triple dir);
bool3[] operator cast(bool[] b);
+align operator cast(pair dir);
object operator cast(Label L);
Label operator cast(object F);
position operator cast(int x);
object operator cast(string s);
guide[] operator cast(pair[] z);
+align operator cast(triple dir);
path[] operator cast(guide[] g);
bool operator cast(bool3 b);
-pair operator cast(pairOrTriple a);
-triple operator cast(pairOrTriple a);
position operator cast(real x);
Label operator cast(string s);
path[] operator cast(guide g);
+align operator cast(side side);
frame operator cast(object F);
path[] operator cast(pair[] z);
path[] operator cast(path p);
@@ -1913,7 +1914,6 @@ pair operator cast(position P);
bool3 operator cast(bool b);
object operator cast(frame f);
pen operator cast(hsv hsv);
-align operator cast(pair dir);
pen deepred;
bool error(file f);
string operator ecast(int);
@@ -1942,38 +1942,39 @@ pen operator init();
frame operator init();
file operator init();
marginT operator init();
-Legend operator init();
+scaleT operator init();
object operator init();
cputime operator init();
filltype operator init();
-ScaleT operator init();
+coords3 operator init();
Label operator init();
processtime operator init();
slice operator init();
-scaleT operator init();
-autoscaleT operator init();
+projection operator init();
position operator init();
arrowhead operator init();
hsv operator init();
coords2 operator init();
coords2 operator init();
transformation operator init();
-side operator init();
+picture operator init();
marker operator init();
scaling operator init();
scaling operator init();
bounds operator init();
light operator init();
-align operator init();
+pairOrTriple operator init();
coord operator init();
coord operator init();
-coords3 operator init();
+Legend operator init();
+side operator init();
framedTransformStack operator init();
-projection operator init();
-picture operator init();
+ScaleT operator init();
+align operator init();
indexedTransform operator init();
bool3 operator init();
-pairOrTriple operator init();
+autoscaleT operator init();
+sCAD operator init();
frame BBox(frame)(real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>);
real animationdelay;
frame NoBox(frame f);
@@ -2002,10 +2003,10 @@ key key(int n, bool active=<default>);
object draw(picture pic=<default>, binarytreeNode node, pair pos, int height, real minDist, real levelDist, real nodeDiameter, pen p=<default>, bool condensed=<default>);
void draw(picture pic=<default>, binarytree tree, real minDist=<default>, real nodeMargin=<default>, pen p=<default>, bool condensed=<default>);
real minDistDefault;
-real nodeMarginDefault;
binarytreeNode operator init();
key operator init();
binarytree operator init();
+real nodeMarginDefault;
key operator cast(int n);
int operator cast(key k);
int[] operator cast(key[] k);
@@ -2020,16 +2021,6 @@ splitface operator init();
bsp operator init();
picture operator cast(face f);
face operator cast(path3 p);
-sCAD operator init();
-surface surface(vertex[][] g);
-real eps;
-vertex[][] contour3(triple[][][] v, real[][][] f, real[][][] midpoint=<default>, projection P=<default>);
-vertex[][] contour3(real[][][] f, real[][][] midpoint=<default>, triple a, triple b, projection P=<default>);
-vertex[][] contour3(real f(real, real, real), triple a, triple b, int nx=<default>, int ny=<default>, int nz=<default>, projection P=<default>);
-weighted operator init();
-bucket operator init();
-vertex operator init();
-object operator init();
void addseg(pair[][] gds, segment seg);
pen[] extend(pen[] palette, pen below, pen above);
guide[][] connect(pair[][][] points, real[] c, guide join(... guide[]));
@@ -2038,33 +2029,42 @@ segment case1(pair p0, pair p1, int edge);
real eps;
segment case3(pair p0, pair p1, pair p2, real v0, real v1, real v2, int edge=<default>);
void fill(picture pic=<default>, guide[][] g, pen[][] palette);
+pen[][] interior(picture pic=<default>, guide[][] g, pen[] palette);
+void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen[] p);
+void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen p=<default>);
guide[][] contour(pair[][] z, real[][] f, real[][] midpoint=<default>, real[] c, guide join(... guide[])=<default>);
guide[][] contour(real[][] f, real[][] midpoint=<default>, pair a, pair b, real[] c, guide join(... guide[])=<default>);
guide[][] contour(real f(real, real), pair a, pair b, real[] c, int nx=<default>, int ny=<default>, guide join(... guide[])=<default>);
guide[][] contour(real f(pair), pair a, pair b, real[] c, int nx=<default>, int ny=<default>, guide join(... guide[])=<default>);
guide[][] contour(pair[] z, real[] f, real[] c, guide join(... guide[])=<default>);
-pen[][] interior(picture pic=<default>, guide[][] g, pen[] palette);
-void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen[] p);
-void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen p=<default>);
segment operator init();
segment checktriangle(pair p0, pair p1, pair p2, real v0, real v1, real v2, int edge=<default>);
segment case2(pair p0, pair p1, pair p2, real v0, real v1, real v2, int edge);
+surface surface(vertex[][] g);
+real eps;
+vertex[][] contour3(triple[][][] v, real[][][] f, real[][][] midpoint=<default>, projection P=<default>);
+vertex[][] contour3(real[][][] f, real[][][] midpoint=<default>, triple a, triple b, projection P=<default>);
+vertex[][] contour3(real f(real, real, real), triple a, triple b, int nx=<default>, int ny=<default>, int nz=<default>, projection P=<default>);
+weighted operator init();
+bucket operator init();
+vertex operator init();
+object operator init();
void drawAll(TreeNode node, frame f);
real layout(int level, TreeNode node);
real treeMinNodeWidth;
-real treeLevelStep;
real treeNodeStep;
-void draw(TreeNode root, pair pos);
void add(TreeNode child, TreeNode parent);
+void draw(TreeNode root, pair pos);
+real treeLevelStep;
TreeNode makeNode(TreeNode parent=<default>, frame f);
TreeNode makeNode(TreeNode parent=<default>, Label label);
TreeNode operator init();
-string embed(string name, string text=<default>, string options=<default>, real width=<default>, real height=<default>);
string link(string label, string text=<default>);
+string embed(string name, string text=<default>, string options=<default>, real width=<default>, real height=<default>);
string embedplayer(string name, string text=<default>, string options=<default>, real width=<default>, real height=<default>);
+string embed(string name, string text=<default>, string options=<default>, real width=<default>, real height=<default>, string image=<default>);
string hyperlink(string url, string text);
string link(string label, string text=<default>);
-string embed(string name, string text=<default>, string options=<default>, real width=<default>, real height=<default>, string image=<default>);
void texshipout(string stem, picture pic=<default>, bool xalign=<default>);
bool XYAlign;
void fmdefaults();
@@ -2102,17 +2102,17 @@ void drawVertexO(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<de
void drawVertexTriangleO(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
void drawVertexOX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
void drawDoubleLine(picture pic=<default>, path p, pen fgpen=<default>, real dlspacing=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>);
-pen backgroundpen;
+bool currentmomarrow(picture, path, pen, marginT(path, pen));
+bool overpaint;
real minvertexangle;
+pen backgroundpen;
pen doublelinepen;
void drawVertexBoxX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
real gluonamplitude;
-pen photonpen;
pen gluonpen;
-real doublelinespacing;
-bool currentmomarrow(picture, path, pen, marginT(path, pen));
+pen photonpen;
real photonamplitude;
-bool overpaint;
+real doublelinespacing;
real vertexsize;
void drawVertexBoxO(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
pen bigvertexpen;
@@ -2135,10 +2135,10 @@ flowdir Horizontal;
real mincirclediameter;
block blockconnector(block, block)(picture pic, transform t, pen p=<default>, marginT margin(path, pen)=<default>);
Dir Left;
-void draw(picture pic=<default>, block block, pen p=<default>);
block operator --(block b1, Label label);
block operator --(block b1, Dir dir);
block operator --(block b, bool arrowbar(picture, path, pen, marginT(path, pen)));
+void draw(picture pic=<default>, block block, pen p=<default>);
flowdir operator init();
block operator init();
Dir operator init();
@@ -2197,7 +2197,6 @@ real arclength(parabola p, real angle1, real angle2);
real arclength(parabola p);
real arclength(arc a);
string conictype(bqe bqe);
-real operator ^(point M, explicit circle c);
point circumcenter(point A, point B, point C);
point circumcenter(triangle t);
parabola parabola(point F, line l);
@@ -2234,6 +2233,7 @@ line bisector(segment s, real angle=<default>);
line bisector(point A, point B, real angle=<default>);
line bisector(vertex V, real angle=<default>);
line bisector(side side);
+real sharpangle(line l1, line l2);
line perpendicular(point M, line l);
line perpendicular(point M, explicit vector normal);
line perpendicular(point M, explicit pair normal);
@@ -2331,11 +2331,11 @@ transform rotate(explicit vector dir);
transform rotate(explicit point dir);
bool isparabola(bqe bqe);
real sharpdegrees(line l1, line l2);
+void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit pair align=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>);
+void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit vector align, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>);
real exradius(point A, point B, point C);
real exradius(side side);
triangle orthic(triangle t);
-void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit pair align=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>);
-void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit vector align, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>);
path square(pair z1, pair z2);
line Oy(coordsys R=<default>);
line Oy;
@@ -2345,16 +2345,18 @@ inversion inversion(circle c1, circle c2, real sgn=<default>);
inversion inversion(circle c1, circle c2, circle c3);
inversion inversion(circle c);
void drawline(picture pic=<default>, triangle t, pen p=<default>);
-path fromCenter(conic co, real angle1, real angle2, int n, bool direction);
-circle circumcircle(point A, point B, point C);
-circle circumcircle(triangle t);
+real operator ^(point M, explicit circle c);
segment segment(point A, point B);
segment segment(line l);
segment segment(explicit side side);
+path fromCenter(conic co, real angle1, real angle2, int n, bool direction);
+circle circumcircle(point A, point B, point C);
+circle circumcircle(triangle t);
triangle symmedial(triangle t);
int curvilinearsystem;
bqe bqe(coordsys R=<default>, real a, real b, real c, real d, real e, real f);
bqe bqe(point M1, point M2, point M3, point M4, point M5);
+real focusToCenter(ellipse el, real a);
point radicalcenter(circle c1, circle c2);
point radicalcenter(circle c1, circle c2, circle c3);
point symmedian(triangle t);
@@ -2384,11 +2386,7 @@ line complementary(explicit line l);
line[] complementary(explicit segment s);
arc complementary(arc a);
triangle triangle(line l1, line l2, line l3);
-void perpendicularmark(picture pic=<default>, point z, explicit pair align, explicit pair dir=<default>, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>);
-void perpendicularmark(picture pic=<default>, point z, vector align, vector dir=<default>, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>);
-void perpendicularmark(picture pic=<default>, point z, explicit pair align, path g, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>);
-void perpendicularmark(picture pic=<default>, point z, vector align, path g, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>);
-void perpendicularmark(picture pic=<default>, line l1, line l2, real size=<default>, pen p=<default>, int quarter=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>);
+int nodesystem;
bool byvertices;
transform scale(real k, point M);
transform scale(real k, point A, point B, point C, point D, bool safe=<default>);
@@ -2421,6 +2419,12 @@ real inradius(point A, point B, point C);
real inradius(triangle t);
int conicnodesnumber(conic co, real angle1, real angle2, bool dir=<default>);
int parabolanodesnumberfactor;
+arc arc(ellipse el, real angle1, real angle2, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>, bool direction=<default>);
+arc arc(ellipse el, explicit abscissa x1, explicit abscissa x2, bool direction=<default>);
+arc arc(ellipse el, point M, point N, bool direction=<default>);
+arc arc(explicit arc a, abscissa x1, abscissa x2);
+arc arc(explicit arc a, point M, point N);
+path arc(explicit pair B, explicit pair A, explicit pair C, real r);
mass masscenter(... mass[] M);
bool finite(explicit point p);
bool defined(point P);
@@ -2443,9 +2447,7 @@ line[] operator ^^(line[] l1, line[] l2);
triangle[] operator ^^(triangle[] t1, triangle t2);
triangle[] operator ^^(... triangle[] t);
point[] standardizecoordsys(coordsys R=<default>, bool warn=<default> ... point[] M);
-real focusToCenter(ellipse el, real a);
real EPS;
-triangle medial(triangle t);
abscissa angabscissa(real x, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>);
abscissa angabscissa(int x, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>);
abscissa angabscissa(circle c, point M);
@@ -2526,10 +2528,13 @@ bool operator @(point M, conic co);
bool operator @(point M, explicit circle c);
bool operator @(point M, arc a);
triangle triangleAbc(real alpha, real b, real c, real angle=<default>, point A=<default>);
-line reverse(line l);
-arc reverse(arc a);
-bool operator !=(explicit point M, explicit point N);
-bool operator !=(line l1, line l2);
+real elle(real phi, real k);
+trilinear trilinear(triangle t, real a, real b, real c);
+trilinear trilinear(triangle t, point M);
+trilinear trilinear(triangle t, real f(real, real, real), real a=<default>, real b=<default>, real c=<default>);
+point bisectorpoint(side side);
+line median(vertex V);
+line median(side side);
abscissa curabscissa(real x);
abscissa curabscissa(int x);
abscissa curabscissa(line l, point M);
@@ -2538,9 +2543,6 @@ abscissa curabscissa(ellipse el, point M);
abscissa curabscissa(parabola p, point M);
abscissa curabscissa(conic co, point M);
abscissa curabscissa(arc a, point M);
-line median(vertex V);
-line median(side side);
-real elle(real phi, real k);
void draw(picture pic=<default>, Label L=<default>, line l, bool dirA=<default>, bool dirB=<default>, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label legend=<default>, marker marker=<default>, path pathModifier(path)=<default>);
void draw(picture pic=<default>, Label[] L=<default>, line[] l, align align=<default>, pen[] p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label[] legend=<default>, marker marker=<default>, path pathModifier(path)=<default>);
void draw(picture pic=<default>, Label[] L=<default>, line[] l, align align=<default>, pen p, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label[] legend=<default>, marker marker=<default>, path pathModifier(path)=<default>);
@@ -2592,11 +2594,16 @@ point[] intersectionpoints(arc a, conic co);
point[] intersectionpoints(arc a1, arc a2);
point[] intersectionpoints(line l, arc a);
point[] intersectionpoints(arc a, line l);
-trilinear trilinear(triangle t, real a, real b, real c);
-trilinear trilinear(triangle t, point M);
-trilinear trilinear(triangle t, real f(real, real, real), real a=<default>, real b=<default>, real c=<default>);
-point bisectorpoint(side side);
-real rd(real x, real y, real z);
+arc arccircle(point A, point M, point B);
+arc arccircle(point A, point B, real angle, bool direction=<default>);
+point relpoint(line l, real x);
+point relpoint(explicit circle c, real x);
+point relpoint(explicit ellipse el, real x);
+point relpoint(explicit parabola p, real x);
+point relpoint(explicit hyperbola h, real x);
+point relpoint(explicit conic co, explicit real x);
+point relpoint(explicit conic co, explicit int x);
+point relpoint(arc a, real x);
point point(coordsys R, pair p, real m=<default>);
point point(explicit pair p, real m);
point point(coordsys R, explicit point M, real m=<default>);
@@ -2627,22 +2634,20 @@ point point(explicit vertex V);
point point(trilinear tri);
point point(circle c, point M);
point point(circle c, explicit vector v);
+line reverse(line l);
+arc reverse(arc a);
+bool operator !=(explicit point M, explicit point N);
+bool operator !=(line l1, line l2);
int[] numarray;
-arc arccircle(point A, point M, point B);
-arc arccircle(point A, point B, real angle, bool direction=<default>);
-point relpoint(line l, real x);
-point relpoint(explicit circle c, real x);
-point relpoint(explicit ellipse el, real x);
-point relpoint(explicit parabola p, real x);
-point relpoint(explicit hyperbola h, real x);
-point relpoint(explicit conic co, explicit real x);
-point relpoint(explicit conic co, explicit int x);
-point relpoint(arc a, real x);
bool operator ==(coordsys c1, coordsys c2);
bool operator ==(explicit point M, explicit point N);
bool operator ==(explicit vector u, explicit vector v);
bool operator ==(line l1, line l2);
-int nodesystem;
+point excenter(point A, point B, point C);
+point excenter(side side);
+mass mass(point M, real m);
+mass mass(explicit point P);
+mass mass(coordsys R, explicit pair p, real m);
transform yscaleO(real x);
coordsys operator init();
point operator init();
@@ -2661,7 +2666,6 @@ mass operator init();
triangle operator init();
trilinear operator init();
inversion operator init();
-real sharpangle(line l1, line l2);
point isogonal(side side, point M);
line isogonal(vertex V, point M);
triangle isogonal(triangle t, point M);
@@ -2675,12 +2679,6 @@ real dot(point A, explicit pair B);
real dot(explicit pair A, point B);
void dot(picture pic=<default>, Label L, explicit mass M, align align=<default>, string format=<default>, pen p=<default>);
void dot(picture pic=<default>, triangle t, pen p=<default>);
-arc arc(ellipse el, real angle1, real angle2, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>, bool direction=<default>);
-arc arc(ellipse el, explicit abscissa x1, explicit abscissa x2, bool direction=<default>);
-arc arc(ellipse el, point M, point N, bool direction=<default>);
-arc arc(explicit arc a, abscissa x1, abscissa x2);
-arc arc(explicit arc a, point M, point N);
-path arc(explicit pair B, explicit pair A, explicit pair C, real r);
triangle antipedal(triangle t, point M);
line tangent(circle c, abscissa x);
line tangent(circle c, point M);
@@ -2753,6 +2751,11 @@ real centerToFocus(ellipse el, real a);
pen addpenarc;
pen addpenarc(pen p);
int[] tricoef(side side);
+void perpendicularmark(picture pic=<default>, point z, explicit pair align, explicit pair dir=<default>, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>);
+void perpendicularmark(picture pic=<default>, point z, vector align, vector dir=<default>, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>);
+void perpendicularmark(picture pic=<default>, point z, explicit pair align, path g, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>);
+void perpendicularmark(picture pic=<default>, point z, vector align, path g, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>);
+void perpendicularmark(picture pic=<default>, line l1, line l2, real size=<default>, pen p=<default>, int quarter=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>);
real[] intersect(path g, explicit pair p, real fuzz=<default>);
real[] intersect(path g, explicit point P, real fuzz=<default>);
point incenter(point A, point B, point C);
@@ -2791,13 +2794,9 @@ int relativesystem;
real[] bangles(picture pic=<default>, parabola p);
real[][] bangles(picture pic=<default>, hyperbola h);
bool onpath(picture pic=<default>, path g, point M, pen p=<default>);
+real rd(real x, real y, real z);
int circlenodesnumberfactor;
transform xscale(real k, point M);
-point excenter(point A, point B, point C);
-point excenter(side side);
-mass mass(point M, real m);
-mass mass(explicit point P);
-mass mass(coordsys R, explicit pair p, real m);
circle circle(explicit point C, real r);
circle circle(point A, point B);
circle circle(segment s);
@@ -2809,6 +2808,7 @@ ellipse ellipse(point F1, point F2, point M);
ellipse ellipse(point C, real a, real b, real angle=<default>);
ellipse ellipse(bqe bqe);
ellipse ellipse(point M1, point M2, point M3, point M4, point M5);
+triangle medial(triangle t);
transform projection(point A, point B);
transform projection(point A, point B, point C, point D, bool safe=<default>);
transform projection(line l);
@@ -2819,146 +2819,40 @@ hyperbola hyperbola(point P1, point P2, real ae, bool byfoci=<default>);
hyperbola hyperbola(point C, real a, real b, real angle=<default>);
hyperbola hyperbola(bqe bqe);
hyperbola hyperbola(point M1, point M2, point M3, point M4, point M5);
-void(flatguide3)[][] lift(real f(real x, real y), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[][] lift(real f(pair z), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void labelz3(picture pic=<default>, Label L=<default>, real z, align align=<default>, string format=<default>, pen p=<default>);
-void labelz(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
-void ztick3(picture pic=<default>, real z, triple dir=<default>, real size=<default>, pen p=<default>);
-void ztick3(picture pic=<default>, Label L, real z, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void ytick3(picture pic=<default>, real y, triple dir=<default>, real size=<default>, pen p=<default>);
-void ytick3(picture pic=<default>, Label L, real y, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void xtick3(picture pic=<default>, real x, triple dir=<default>, real size=<default>, pen p=<default>);
-void xtick3(picture pic=<default>, Label L, real x, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-real ScaleZ(picture pic=<default>, real z);
-void zlimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>);
-void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
-void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
-void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
-void autoscale3(picture pic=<default>, void axis(picture, axisT));
-void yaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
-triple defaultdir(triple X, triple Y, triple Z, bool opposite=<default>, projection P);
-void YZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
-void YZZero(picture, axisT);
-void XYEquals(picture, axisT)(real x, real y, triple align=<default>, bool extend=<default>);
-void XZEquals(picture, axisT)(real x, real z, triple align=<default>, bool extend=<default>);
-void YZEquals(picture, axisT)(real y, real z, triple align=<default>, bool extend=<default>);
-void Bounds(picture, axisT)(int type=<default>, int type2=<default>, triple align=<default>, bool extend=<default>);
-void Bounds(picture, axisT);
-void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
-void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
-void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks=<default>, real[] ticks=<default>, int N=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-triple Dir(real)(triple dir);
-void labelx3(picture pic=<default>, Label L=<default>, real x, align align=<default>, string format=<default>, pen p=<default>);
-surface bispline(real[][] z, real[][] p, real[][] q, real[][] r, real[] x, real[] y, bool[][] cond=<default>);
-triple tickMax3(picture pic);
-triple tickMin3(picture pic);
-real ztrans(real[][] t, real z);
-void graph(flatguide3)(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]));
-void(flatguide3)[] graph(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]), bool3 cond(real));
-void graph(flatguide3)(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, triple v(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, triple v(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, triple[] v, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, triple[] v, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, real[] x, real[] y, real[] z, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, real[] x, real[] y, real[] z, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(triple F(path, real), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(triple F(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, real f(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(real f(pair), path p, int n=<default>, real T(pair), void join(flatguide3)(... void(flatguide3)[])=<default>);
-void label(picture pic, Label L, triple v, real x, align align, string format, pen p);
-void xtick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
-void xtick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)();
-void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
-void Spline(flatguide3)(... void(flatguide3)[]);
-void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen[] p, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>);
-void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen p=<default>, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>);
-triple ticklabelshift(triple align, pen p=<default>);
-void xaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
-void zaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
-void ztick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
-void ztick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-triple Scale(picture pic=<default>, triple v);
-triple polar(real r, real theta, real phi);
-picture vectorfield(path3 vector(pair v), triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, string name=<default>, render render=<default>);
-void axes3(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, Label zlabel=<default>, bool extend=<default>, triple min=<default>, triple max=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>);
-void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
-void labely3(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>);
-locateT operator init();
-path3[] segment(triple[] v, bool[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void XZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
-void XZZero(picture, axisT);
-void labeltick(picture pic, real[][] T, path3 g, ticklocate locate, real val, int sign, real Size, string ticklabel(real), Label F, real norm=<default>);
-path3 Arc(triple c, triple v1, triple v2, triple normal=<default>, bool direction=<default>, int n=<default>);
-path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, bool direction, int n=<default>);
-path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, int n=<default>);
-bool vperiodic(triple[][] a);
-void ytick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
-void ytick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-surface surface(triple[][] f, bool[][] cond=<default>);
-surface surface(real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
-surface surface(real[][] f, pair a, pair b, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
-surface surface(real[][] f, pair a, pair b, bool[][] cond=<default>);
-surface surface(triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool cond(pair z)=<default>);
-surface surface(triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, real[](real[], real[])[] usplinetype, real[](real[], real[])[] vsplinetype=<default>, bool cond(pair z)=<default>);
-surface surface(real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, bool cond(pair z)=<default>);
-surface surface(real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool cond(pair z)=<default>);
-void labelx(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
-void axis(picture pic=<default>, Label L=<default>, path3 g, path3 g2=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>), ticklocate locate, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>);
-void labelaxis(picture pic, real[][] T, Label L, path3 g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>);
-void labely(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
-void Straight(flatguide3)(... void(flatguide3)[]);
-real xtrans(real[][] t, real x);
-void tick(picture pic=<default>, triple v, triple dir, real size=<default>, pen p=<default>);
-void tick(picture pic=<default>, Label L, real value, triple v, triple dir, string format=<default>, real size=<default>, pen p=<default>);
-real ytrans(real[][] t, real y);
-path3 Circle(triple c, real r, triple normal=<default>, int n=<default>);
-ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, triple dir(real));
-real maxlength(triple f(pair z), pair a, pair b, int nu, int nv);
-void drawtick(picture pic, real[][] T, path3 g, path3 g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend);
-bool uperiodic(triple[][] a);
-void polargraph(flatguide3)(real r(real, real), real theta(real), real phi(real), int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void limits(picture pic=<default>, triple min, triple max);
-void XYZero(picture, axisT)(triple align=<default>, bool extend=<default>);
-void XYZero(picture, axisT);
path Circle(pair c, real r, int n=<default>);
-path Arc(pair c, real r, real angle1, real angle2, bool direction, int n=<default>);
-path Arc(pair c, real r, real angle1, real angle2, int n=<default>);
-path Arc(pair c, explicit pair z1, explicit pair z2, bool direction=<default>, int n=<default>);
real maxlength(pair a, pair b, int nx, int ny);
void errorbar(picture pic, pair z, pair dp, pair dm, pen p=<default>, real size=<default>);
guide polargraph(picture pic=<default>, real r(real), real a, real b, int n=<default>, guide join(... guide[])=<default>);
guide polargraph(picture pic=<default>, real[] r, real[] theta, guide join(... guide[])=<default>);
void checkconditionlength(int x, int y);
+guide Straight(... guide[]);
picture secondaryY(picture primary=<default>, void f(picture));
-picture secondaryX(picture primary=<default>, void f(picture));
string noprimary;
+path Arc(pair c, real r, real angle1, real angle2, bool direction, int n=<default>);
+path Arc(pair c, real r, real angle1, real angle2, int n=<default>);
+path Arc(pair c, explicit pair z1, explicit pair z2, bool direction=<default>, int n=<default>);
void labely(picture pic=<default>, Label L=<default>, explicit pair z, align align=<default>, string format=<default>, pen p=<default>);
void labely(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>);
void labely(picture pic=<default>, Label L, string format=<default>, explicit pen p=<default>);
void labelx(picture pic=<default>, Label L=<default>, explicit pair z, align align=<default>, string format=<default>, pen p=<default>);
void labelx(picture pic=<default>, Label L=<default>, real x, align align=<default>, string format=<default>, pen p=<default>);
void labelx(picture pic=<default>, Label L, string format=<default>, explicit pen p=<default>);
-void ytick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>);
-void ytick(picture pic=<default>, real y, pair dir=<default>, real size=<default>, pen p=<default>);
-void ytick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void ytick(picture pic=<default>, Label L, real y, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void xtick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>);
+void xtick(picture pic=<default>, real x, pair dir=<default>, real size=<default>, pen p=<default>);
+void xtick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void xtick(picture pic=<default>, Label L, real x, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
void tick(picture pic=<default>, pair z, pair dir, real size=<default>, pen p=<default>);
void tick(picture pic=<default>, Label L, real value, explicit pair z, pair dir, string format=<default>, real size=<default>, pen p=<default>);
+real ScaleX(picture pic=<default>, real x);
+picture secondaryX(picture primary=<default>, void f(picture));
+void yaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool autorotate=<default>);
void xaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
void limits(picture pic=<default>, pair min, pair max, bool crop=<default>);
void crop(picture pic=<default>);
string conditionlength;
void ylimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>);
+void yaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
+void xaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
real ytrans(transform t, real y);
void YEquals(picture, axisT)(real y, bool extend=<default>);
real xtrans(transform t, real x);
@@ -2973,10 +2867,7 @@ int Value;
void RightTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
void RightTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
void RightTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>);
-guide Straight(... guide[]);
tickvalues OmitTick(tickvalues)(... real[] x);
-tickvalues OmitTickInterval(tickvalues)(real a, real b);
-tickvalues OmitTickIntervals(tickvalues)(real[] a, real[] b);
void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks=<default>, real[] ticks=<default>, int N=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
@@ -2995,41 +2886,44 @@ scaleT Broken(real a, real b, bool automin=<default>, bool automax=<default>);
bool axiscoverage(int N, transform T, path g, ticklocate locate, real Step, pair side, int sign, real Size, Label F, string ticklabel(real), real norm, real limit);
void xequals(picture pic=<default>, Label L=<default>, real x, bool extend=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
void XEquals(picture, axisT)(real x, bool extend=<default>);
-pair zero(real);
path[] segment(pair[] z, bool[] cond, guide join(... guide[])=<default>);
-pair ticklabelshift(pair align, pen p=<default>);
+pair zero(real);
+tickvalues OmitTickIntervals(tickvalues)(real[] a, real[] b);
void Right(picture, axisT)(bool extend=<default>);
void Right(picture, axisT);
-real ScaleY(picture pic=<default>, real y);
guide Hermite(... guide[])(real[] splinetype(real[], real[]));
guide Hermite(... guide[]);
scaleT Logarithmic;
-string OmitFormat(real)(string s=<default> ... real[] x);
void scale(picture pic=<default>, scaleT x, scaleT y=<default>, scaleT z=<default>);
void scale(picture pic=<default>, bool xautoscale=<default>, bool yautoscale=<default>, bool zautoscale=<default>);
tickvalues None(tickvalues v);
-void axes(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, bool extend=<default>, pair min=<default>, pair max=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
-pair polar(real r, real theta);
-void yaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool autorotate=<default>);
void NoTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)();
void NoTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>);
+pair polar(real r, real theta);
void Left(picture, axisT)(bool extend=<default>);
void Left(picture, axisT);
+void yequals(picture pic=<default>, Label L=<default>, real y, bool extend=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
+string OmitFormat(real)(string s=<default> ... real[] x);
+tickvalues OmitTickInterval(tickvalues)(real a, real b);
void drawtick(frame f, transform T, path g, path g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend);
+void axes(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, bool extend=<default>, pair min=<default>, pair max=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
+picture vectorfield(path vector(real), path g, int n, bool truesize=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>);
+picture vectorfield(path vector(pair), pair a, pair b, int nx=<default>, int ny=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>);
pair tickMax(picture pic);
real linear(real)(real S(real x)=<default>, real Min, real Max);
int Both;
pair tickMin(picture pic);
-void yequals(picture pic=<default>, Label L=<default>, real y, bool extend=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
-picture vectorfield(path vector(real), path g, int n, bool truesize=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>);
-picture vectorfield(path vector(pair), pair a, pair b, int nx=<default>, int ny=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>);
-void xaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
+pair ticklabelshift(pair align, pen p=<default>);
+int Min;
scaleT Linear;
scaleT Linear(bool automin=<default>, bool automax=<default>, real s=<default>, real intercept=<default>);
string LogFormat(real)(int base);
string LogFormat(real);
Label Break;
tickvalues Break(tickvalues)(real, real);
+void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>);
tickvalues NoZero(tickvalues);
int[] divisors(int a, int b);
scientific operator init();
@@ -3041,21 +2935,17 @@ axisT operator init();
string signedtrailingzero;
void XZero(picture, axisT)(bool extend=<default>);
void XZero(picture, axisT);
-void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>);
-void xtick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>);
-void xtick(picture pic=<default>, real x, pair dir=<default>, real size=<default>, pen p=<default>);
-void xtick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void xtick(picture pic=<default>, Label L, real x, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
string trailingzero;
-void yaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
-real ScaleX(picture pic=<default>, real x);
+real ScaleY(picture pic=<default>, real y);
void xlimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>);
pair labeltick(frame d, transform T, path g, ticklocate locate, real val, pair side, int sign, real Size, string ticklabel(real), Label F, real norm=<default>);
tickvalues generateticks(int sign, Label F=<default>, string ticklabel(real)=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, real Size=<default>, real size=<default>, transform T, pair side, path g, real limit, pen p, ticklocate locate, int[] divisor, bool opposite);
string autoformat(string format=<default>, real norm ... real[] a);
pair Scale(picture pic=<default>, pair z);
+void ytick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>);
+void ytick(picture pic=<default>, real y, pair dir=<default>, real size=<default>, pen p=<default>);
+void ytick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void ytick(picture pic=<default>, Label L, real y, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
guide graph(pair f(real), real, real, int)(guide join(... guide[]));
guide[] graph(pair f(real), real, real, int)(guide join(... guide[]), bool3 cond(real));
guide graph(picture pic=<default>, real f(real), real a, real b, int n=<default>, real T(real)=<default>, guide join(... guide[])=<default>);
@@ -3068,7 +2958,6 @@ guide graph(picture pic=<default>, pair[] z, guide join(... guide[])=<default>);
guide[] graph(picture pic=<default>, pair[] z, bool3[] cond, guide join(... guide[])=<default>);
guide graph(picture pic=<default>, real[] x, real[] y, guide join(... guide[])=<default>);
guide[] graph(picture pic=<default>, real[] x, real[] y, bool3[] cond, guide join(... guide[])=<default>);
-int Min;
scaleT BrokenLog(real a, real b, bool automin=<default>, bool automax=<default>);
void YZero(picture, axisT)(bool extend=<default>);
void YZero(picture, axisT);
@@ -3089,16 +2978,127 @@ void BottomTop(picture, axisT);
real zerotickfuzz;
void LeftRight(picture, axisT)(bool extend=<default>);
void LeftRight(picture, axisT);
+void(flatguide3)[][] lift(real f(real x, real y), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[][] lift(real f(pair z), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void labelz3(picture pic=<default>, Label L=<default>, real z, align align=<default>, string format=<default>, pen p=<default>);
+void labelz(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
+void ztick3(picture pic=<default>, real z, triple dir=<default>, real size=<default>, pen p=<default>);
+void ztick3(picture pic=<default>, Label L, real z, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void ytick3(picture pic=<default>, real y, triple dir=<default>, real size=<default>, pen p=<default>);
+void ytick3(picture pic=<default>, Label L, real y, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void xtick3(picture pic=<default>, real x, triple dir=<default>, real size=<default>, pen p=<default>);
+void xtick3(picture pic=<default>, Label L, real x, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+real ScaleZ(picture pic=<default>, real z);
+void zlimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>);
+void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
+void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
+void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
+void autoscale3(picture pic=<default>, void axis(picture, axisT));
+void xaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
+triple defaultdir(triple X, triple Y, triple Z, bool opposite=<default>, projection P);
+void YZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
+void YZZero(picture, axisT);
+void XYEquals(picture, axisT)(real x, real y, triple align=<default>, bool extend=<default>);
+void XZEquals(picture, axisT)(real x, real z, triple align=<default>, bool extend=<default>);
+void YZEquals(picture, axisT)(real y, real z, triple align=<default>, bool extend=<default>);
+void Bounds(picture, axisT)(int type=<default>, int type2=<default>, triple align=<default>, bool extend=<default>);
+void Bounds(picture, axisT);
+void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
+void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
+void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks=<default>, real[] ticks=<default>, int N=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+triple Dir(real)(triple dir);
+surface bispline(real[][] z, real[][] p, real[][] q, real[][] r, real[] x, real[] y, bool[][] cond=<default>);
+void XYZero(picture, axisT)(triple align=<default>, bool extend=<default>);
+void XYZero(picture, axisT);
+triple tickMax3(picture pic);
+triple tickMin3(picture pic);
+void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)();
+void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
+real ztrans(real[][] t, real z);
+void Spline(flatguide3)(... void(flatguide3)[]);
+void graph(flatguide3)(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]));
+void(flatguide3)[] graph(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]), bool3 cond(real));
+void graph(flatguide3)(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, triple v(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, triple v(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, triple[] v, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, triple[] v, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, real[] x, real[] y, real[] z, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, real[] x, real[] y, real[] z, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(triple F(path, real), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(triple F(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, real f(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(real f(pair), path p, int n=<default>, real T(pair), void join(flatguide3)(... void(flatguide3)[])=<default>);
+void label(picture pic, Label L, triple v, real x, align align, string format, pen p);
+void ytick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
+void ytick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen[] p, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>);
+void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen p=<default>, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>);
+triple ticklabelshift(triple align, pen p=<default>);
+void ztick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
+void ztick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+triple Scale(picture pic=<default>, triple v);
+triple polar(real r, real theta, real phi);
+picture vectorfield(path3 vector(pair v), triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, string name=<default>, render render=<default>);
+void axes3(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, Label zlabel=<default>, bool extend=<default>, triple min=<default>, triple max=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>);
+void labelx3(picture pic=<default>, Label L=<default>, real x, align align=<default>, string format=<default>, pen p=<default>);
+void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
+void labely3(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>);
+locateT operator init();
+void zaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
+bool vperiodic(triple[][] a);
+path3[] segment(triple[] v, bool[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void XZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
+void XZZero(picture, axisT);
+void labeltick(picture pic, real[][] T, path3 g, ticklocate locate, real val, int sign, real Size, string ticklabel(real), Label F, real norm=<default>);
+surface surface(triple[][] f, bool[][] cond=<default>);
+surface surface(real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
+surface surface(real[][] f, pair a, pair b, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
+surface surface(real[][] f, pair a, pair b, bool[][] cond=<default>);
+surface surface(triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool cond(pair z)=<default>);
+surface surface(triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, real[](real[], real[])[] usplinetype, real[](real[], real[])[] vsplinetype=<default>, bool cond(pair z)=<default>);
+surface surface(real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, bool cond(pair z)=<default>);
+surface surface(real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool cond(pair z)=<default>);
+path3 Arc(triple c, triple v1, triple v2, triple normal=<default>, bool direction=<default>, int n=<default>);
+path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, bool direction, int n=<default>);
+path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, int n=<default>);
+void labely(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
+void labelx(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
+void xtick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
+void xtick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void axis(picture pic=<default>, Label L=<default>, path3 g, path3 g2=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>), ticklocate locate, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>);
+void labelaxis(picture pic, real[][] T, Label L, path3 g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>);
+void tick(picture pic=<default>, triple v, triple dir, real size=<default>, pen p=<default>);
+void tick(picture pic=<default>, Label L, real value, triple v, triple dir, string format=<default>, real size=<default>, pen p=<default>);
+void Straight(flatguide3)(... void(flatguide3)[]);
+real xtrans(real[][] t, real x);
+real ytrans(real[][] t, real y);
+ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, triple dir(real));
+real maxlength(triple f(pair z), pair a, pair b, int nu, int nv);
+void drawtick(picture pic, real[][] T, path3 g, path3 g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend);
+void yaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
+bool uperiodic(triple[][] a);
+path3 Circle(triple c, real r, triple normal=<default>, int n=<default>);
+void polargraph(flatguide3)(real r(real, real), real theta(real), real phi(real), int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void limits(picture pic=<default>, triple min, triple max);
real axiscoverage;
real ylabelwidth;
real Ticksize;
int nmesh;
int ngraph;
bool Crop;
-real epsilon;
-bool NoCrop;
int nCircle;
real ticksize;
+bool NoCrop;
+real epsilon;
real axislabelfactor;
real[] monotonic(real[] x, real[] y);
real[] clamped(real[], real[])(real slopea, real slopeb);
@@ -3113,7 +3113,6 @@ guide hermite(real[] x, real[] y, real[] splinetype(real[], real[])=<default>);
void checkincreasing(real[] x);
real[] Spline(real[] x, real[] y);
real[](real[], real[])[] Spline;
-position middle;
void grid3(picture pic=<default>, grid3(picture pic)[][] gridroutine=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, pen pGrid=<default>, pen pgrid=<default>, bool above=<default>);
void grid3(picture pic=<default>, grid3(picture pic)[][] gridroutine, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, pen[] pGrid, pen[] pgrid, bool above=<default>);
grid3(picture pic)[] ZX_ZYgrid(position posa=<default>, position posb=<default>);
@@ -3132,15 +3131,12 @@ grid3 ZYgrid(picture pic)(position pos=<default>);
grid3 ZYgrid(picture pic);
grid3 YZgrid(picture pic)(position pos=<default>);
grid3 YZgrid(picture pic);
-grid3 ZXgrid(picture pic)(position pos=<default>);
-grid3 ZXgrid(picture pic);
grid3 XZgrid(picture pic)(position pos=<default>);
grid3 XZgrid(picture pic);
grid3 YXgrid(picture pic)(position pos=<default>);
grid3 YXgrid(picture pic);
-void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
-void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
-void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
+grid3(picture pic)[] ZYZgrid(position pos=<default>);
+grid3(picture pic)[] ZYZgrid;
triple YZ(picture pic);
grid3(picture pic)[] operator cast(grid3 gridroutine(picture pic));
grid3(picture pic)[][] operator cast(grid3(picture pic)[] gridroutine);
@@ -3148,13 +3144,18 @@ grid3(picture pic)[][] operator cast(grid3 gridroutine(picture pic));
grid3(picture pic)[] YZYgrid(position pos=<default>);
grid3(picture pic)[] YZYgrid;
triple Y(picture pic);
+void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
grid3(picture pic)[][] XYZgrid(position pos=<default>);
grid3(picture pic)[][] XYZgrid;
position top;
grid3 XYgrid(picture pic)(position pos=<default>);
grid3 XYgrid(picture pic);
+void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
ticksgridT InTicks()(Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, pen pTick=<default>, pen ptick=<default>, grid3(picture pic)[][] gridroutine, pen pGrid=<default>, pen pgrid=<default>);
triple X(picture pic);
+position middle;
+grid3 ZXgrid(picture pic)(position pos=<default>);
+grid3 ZXgrid(picture pic);
triple XY(picture pic);
grid3(picture pic)[] XY_XZgrid(position posa=<default>, position posb=<default>);
grid3(picture pic)[] XY_XZgrid;
@@ -3162,27 +3163,26 @@ ticksgridT OutTicks()(Label F=<default>, string ticklabel(real)=<default>, bool
grid3 operator init();
ticksgridT operator init();
ticksgridT InOutTicks()(Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, pen pTick=<default>, pen ptick=<default>, grid3(picture pic)[][] gridroutine, pen pGrid=<default>, pen pgrid=<default>);
+void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
triple ZX(picture pic);
triple Z(picture pic);
position bottom;
-grid3(picture pic)[] ZYZgrid(position pos=<default>);
-grid3(picture pic)[] ZYZgrid;
real pwhermite(real)(real[] x, real[] y, real[] dy);
horner hdiffdiv(real[] x, real[] y, real[] dy);
horner diffdiv(real[] x, real[] y);
real fhorner(real)(horner sh);
-real fspline(real)(real[] x, real[] y, real[] splinetype(real[], real[])=<default>);
horner operator init();
-surface labelpath(string s, path3 p, real angle=<default>, triple optional=<default>);
-triple[] nextframe(path3 p, real reltimestart, triple[] start, real reltimeend, int subdiv=<default>);
-triple nextnormal(triple p, triple q);
-real eps;
-triple[] firstframe(path3 p, triple optional=<default>);
+real fspline(real)(real[] x, real[] y, real[] splinetype(real[], real[])=<default>);
void labelpath(frame f, Label L, path g, string justify=<default>, pen p=<default>);
void labelpath(picture pic=<default>, Label L, path g, string justify=<default>, pen p=<default>);
string Centered;
string RightJustified;
string LeftJustified;
+surface labelpath(string s, path3 p, real angle=<default>, triple optional=<default>);
+triple[] nextframe(path3 p, real reltimestart, triple[] start, real reltimeend, int subdiv=<default>);
+triple nextnormal(triple p, triple q);
+real eps;
+triple[] firstframe(path3 p, triple optional=<default>);
FitControl defaultControl;
void lm_lmdif(int m, int n, real[] x, real[] fvec, real ftol, real xtol, real gtol, int maxfev, real epsfcn, real[] diag, int mode, real factor, lm_int_type info, lm_int_type nfev, real[] fjac, int[] ipvt, real[] qtf, real[] wa1, real[] wa2, real[] wa3, real[] wa4, void evaluate(real[] par, int m_dat, real[] fvec, lm_data_type data, lm_int_type info), void printout(int n_par, real[] par, int m_dat, real[] fvec, lm_data_type data, int iflag, int iter, int nfev), lm_data_type data);
void lm_lmpar(int n, real[] r, int ldr, int[] ipvt, real[] diag, real[] qtb, real delta, lm_real_type par, real[] x, real[] sdiag, real[] wa1, real[] wa2);
@@ -3195,20 +3195,20 @@ void lm_evaluate_default(real[] par, int m_dat, real[] fvec, lm_data_type data,
real LM_DWARF;
real LM_MACHEP;
void lm_qrfac(int m, int n, real[] a, bool pivot, int[] ipvt, real[] rdiag, real[] acnorm, real[] wa);
-real LM_USERTOL;
real LM_SQRT_GIANT;
real SQR(real x);
string[] lm_shortmsg;
-string[] lm_infmsg;
+FitResult fit(real[] xdata, real[] ydata, real[] errors, real function(real[], real), real[] parameters, FitControl control=<default>);
+FitResult fit(real[] xdata, real[] ydata, real function(real[], real), real[] parameters, FitControl control=<default>);
+real LM_USERTOL;
lm_data_type operator init();
lm_int_type operator init();
lm_real_type operator init();
lm_control_type operator init();
FitControl operator init();
FitResult operator init();
+string[] lm_infmsg;
real LM_SQRT_DWARF;
-FitResult fit(real[] xdata, real[] ydata, real[] errors, real function(real[], real), real[] parameters, FitControl control=<default>);
-FitResult fit(real[] xdata, real[] ydata, real function(real[], real), real[] parameters, FitControl control=<default>);
void lm_minimize(int m_dat, int n_par, real[] par, void evaluate(real[] par, int m_dat, real[] fvec, lm_data_type data, lm_int_type info), void printout(int n_par, real[] par, int m_dat, real[] fvec, lm_data_type data, int iflag, int iter, int nfev), lm_data_type data, lm_control_type control);
void lm_print_default(int n_par, real[] par, int m_dat, real[] fvec, lm_data_type data, int iflag, int iter, int nfev);
real lm_enorm(int n, real[] x, int offset=<default>);
@@ -3236,14 +3236,14 @@ frame tildeframe(int n=<default>, real size=<default>, pair space=<default>, rea
frame tildeframe;
real tildemarksizefactor;
void markinterval(picture pic=<default>, frame f, path g)(int n=<default>, frame f, bool rotated=<default>);
+real tildemarksize(pen p=<default>);
frame duplicate(path g, int n=<default>, pair space=<default>, pen p=<default>);
marker operator *(transform T, marker m);
marker CrossIntervalMarker(int i=<default>, int n=<default>, real size=<default>, real space=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, frame uniform=<default>, bool above=<default>);
-marker StickIntervalMarker(int i=<default>, int n=<default>, real size=<default>, real space=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, frame uniform=<default>, bool above=<default>);
frame crossframe(int n=<default>, real size=<default>, pair space=<default>, real angle=<default>, pair offset=<default>, pen p=<default>);
-real tildemarksize(pen p=<default>);
-real barmarksize(pen p=<default>);
+marker StickIntervalMarker(int i=<default>, int n=<default>, real size=<default>, real space=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, frame uniform=<default>, bool above=<default>);
real barmarksizefactor;
+real barmarksize(pen p=<default>);
real findroot(real f(real), real a, real b, real tolerance=<default>, real fa=<default>, real fb=<default>);
real value(path g, real x, int n=<default>);
real value(path g, explicit pair z, int n=<default>);
@@ -3260,6 +3260,7 @@ bool lexorder(pair a, pair b);
bool lexorder(triple a, triple b);
int unique(real[] a, real x);
int unique(string[] a, string x);
+int[][] segment(bool[] b);
int[][] segmentlimits(bool[] b);
bool increasing(real[] a, bool strict=<default>);
real[] partialsum(real[] a);
@@ -3271,32 +3272,31 @@ real asec(real x);
real acsc(real x);
real sec(real x);
real csc(real x);
-int[][] segment(bool[] b);
pair exp(explicit pair z);
int quadrant(real degrees);
pair[] quarticroots(real a, real b, real c, real d, real e);
+picture grid(int Nx, int Ny, pen p=<default>);
+real[] leastsquares(real[][] A, real[] b, bool warn=<default>);
+pair log(explicit pair z);
pair[][] fft(pair[][] a, int sign=<default>);
real slope(path g, real x, int n=<default>);
real slope(path g, explicit pair z, int n=<default>);
-real[] leastsquares(real[][] A, real[] b, bool warn=<default>);
-pair log(explicit pair z);
triple intersectionpoint(triple n0, triple P0, triple n1, triple P1);
-picture grid(int Nx, int Ny, pen p=<default>);
pair unityroot(int n, int k=<default>);
-real frac(real x);
bool rectangular(real[][] m);
bool rectangular(pair[][] m);
bool rectangular(triple[][] m);
-bool polygon(path p);
+real frac(real x);
rootfinder_settings operator init();
+bool polygon(path p);
real cot(real x);
real intersect(pair p, pair q, pair z);
real intersect(triple P, triple Q, triple n, triple Z);
path cuttings;
path cutafter(path p, path q);
path cutbefore(path p, path q);
-obj operator *(real[][] T, obj o);
void draw(picture pic=<default>, obj o, light light=<default>);
+obj operator *(real[][] T, obj o);
obj operator init();
real[] solveBVP(real[] f(real, real[]), real a, real b=<default>, real h=<default>, int n=<default>, bool dynamic=<default>, real tolmin=<default>, real tolmax=<default>, real dtmin=<default>, real dtmax=<default>, RKTableau tableau, bool verbose=<default>, real[] initial(real[]), real[] discrepancy(real[]), real[] guess, int iterations=<default>);
solution integrate(real y, real c=<default>, real f(real t, real y), real a, real b=<default>, real h=<default>, int n=<default>, bool dynamic=<default>, real tolmin=<default>, real tolmax=<default>, real dtmin=<default>, real dtmax=<default>, RKTableau tableau, bool verbose=<default>);
@@ -3314,19 +3314,19 @@ real[] Coeff;
real stepfactor;
real[][] finiteDifferenceJacobian(real[] f(real[]), real[] t, real[] h=<default>);
RKTableau E_RK2;
-RKTableau RK5F;
real error(real error, real initial, real lowOrder, real norm, real diff);
+RKTableau RK5F;
+void report(real old, real h, real t);
RKTableau PC;
RKTableau RK2;
-void report(real old, real h, real t);
real phi2(real x);
real[] newton(int iterations=<default>, real[] f(real[]), real[][] jacobian(real[]), real[] t);
-RKTableau RK3BS;
coefficients operator init();
RKTableau operator init();
solution operator init();
Solution operator init();
RKTableau RK5;
+RKTableau RK3BS;
real phi3(real x);
void write(solution S);
void write(Solution S);
@@ -3348,6 +3348,7 @@ void NoTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path,
real[] sequencereal;
pen[] BWRainbow2(int NColors=<default>);
pen[] Wheel(int NColors=<default>);
+pen[] Rainbow(int NColors=<default>);
pen[] Grayscale(int NColors=<default>);
bounds Full(picture pic, real min, real max);
void image(frame f, real[][] data, pair initial, pair final, pen[] palette, bool transpose=<default>, transform t=<default>, bool copy=<default>, bool antialias=<default>);
@@ -3359,7 +3360,6 @@ void image(picture pic=<default>, pen f(int, int), int width, int height, pair i
bounds image(picture pic=<default>, pair[] z, real[] f, bounds range(picture pic, real min, real max)=<default>, pen[] palette);
bounds image(picture pic=<default>, real[] x, real[] y, real[] f, bounds range(picture pic, real min, real max)=<default>, pen[] palette);
pen[] quantize(pen[] Palette, int n);
-pen[] Rainbow(int NColors=<default>);
picture hatch(real H=<default>, pair dir=<default>, pen p=<default>);
picture checker(real Hx=<default>, real Hy=<default>, pen p=<default>);
picture tile(real Hx=<default>, real Hy=<default>, pen p=<default>, filltype filltype=<default>);
@@ -3428,31 +3428,33 @@ void subitem(string s, pen p=<default>);
void setpens(pen red=<default>, pen blue=<default>, pen steppen=<default>);
bool firststep;
void remark(bool center=<default>, string s, pair align=<default>, pen p=<default>, real indent=<default>, bool minipage=<default>, real skip=<default>, filltype filltype=<default>, bool step=<default>);
-void asyfigure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, filltype filltype=<default>, bool newslide=<default>);
void usersetting();
pen institutionpen;
void title(string s, pair position=<default>, pair align=<default>, pen p=<default>, bool newslide=<default>);
void asyfilecode(bool center=<default>, string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>, bool newslide=<default>);
void center(string s, pen p=<default>);
-real minipagemargin;
+pair currentposition;
+void currentexitfunction();
void skip(real n=<default>);
void exitfunction();
void step();
pair pagenumberposition;
-void currentexitfunction();
+int[] firstnode;
+real minipagemargin;
+bool reverse;
void asyinclude(string s, real xsize=<default>, real ysize=<default>);
-string bullet;
void vbox(string s, pen p=<default>);
-bool reverse;
-int[] firstnode;
+string bullet;
string oldbulletcolor;
void figure(string[] s, string options=<default>, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void figure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
+void asyfigure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, filltype filltype=<default>, bool newslide=<default>);
void display(frame[] f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void display(frame f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void display(string[] s, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void display(string s, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void equation(string s, pen p=<default>);
+void asycode(bool center=<default>, string s, string options=<default>, string caption=<default>, string preamble=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>, bool newslide=<default>);
picture background;
void background();
void multifigure(string[] slist, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool step=<default>);
@@ -3465,9 +3467,7 @@ void equations(string s, pen p=<default>);
string cropcode(string s);
string newbulletcolor;
bool stepping;
-pair currentposition;
string asywrite(string s, string preamble=<default>);
-void asycode(bool center=<default>, string s, string options=<default>, string caption=<default>, string preamble=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>, bool newslide=<default>);
void normalvideo();
path curve(pair c, real f(real, real), pair a, pair b);
path curve(pair c, real f(real), pair a, pair b);
@@ -3507,6 +3507,7 @@ path3 pathbetween(positionedvector v1, positionedvector v2);
path3 pathbetween(path3 edgecycle, int vertex1, int vertex2);
bool check_fpt_zero(triple testpoint, real f(triple), triple grad(triple));
triple projecttospan(triple toproject, triple v1, triple v2, real mincoeff=<default>);
+int ZLOW;
bool operator ==(edge a, edge b);
pathwithnormals_settings operator init();
intset operator init();
@@ -3522,7 +3523,6 @@ string operator cast(edge[] edges);
string operator cast(positionedvector vv);
triple operator cast(evaluatedpoint p);
real B23(real t);
-int ZLOW;
real B03(real t);
revolution sphere(triple c=<default>, real r, int n=<default>);
real[] tangent(path p, path q, bool side);
@@ -3537,6 +3537,8 @@ skeleton operator init();
revolution operator init();
surface surface(revolution r, int n=<default>, pen color(int i, real j)=<default>);
pair Gaussrandpair();
+void histogram(picture pic=<default>, real[] bins, real[] count, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
+void histogram(picture pic=<default>, real[] data, real a, real b, int n, bool normalize=<default>, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
path topbox(pair a, pair b);
path halfbox(pair a, pair b);
int[] frequency(real[] data, real[] bins);
@@ -3553,8 +3555,6 @@ real variancebiased(real[] A);
real stdev(real[] A);
real variance(real[] A);
real legendmarkersize;
-void histogram(picture pic=<default>, real[] bins, real[] count, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
-void histogram(picture pic=<default>, real[] data, real a, real b, int n, bool normalize=<default>, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
real mean(real[] A);
real skewness(real[] A);
linefit leastsquares(real[] x, real[] y);
@@ -3569,17 +3569,17 @@ Braid apply(Relation r, Braid b, int step, int place);
real gapfactor;
real hwratio;
Component bp;
-Component phi;
Relation operator -(Relation r);
+Component phi;
pair max(pair[] z);
pair[] endpoints(guide[] a);
Component operator init();
Braid operator init();
Relation operator init();
Syzygy operator init();
+Component bm;
Component wye;
pair min(pair[] z);
-Component bm;
pen Tan;
pen OliveGreen;
pen LimeGreen;
@@ -3608,45 +3608,45 @@ pen Apricot;
pen Goldenrod;
pen GreenYellow;
pen RedViolet;
+pen Bittersweet;
pen VioletRed;
pen Violet;
pen Sepia;
pen Mahogany;
+pen RubineRed;
pen WildStrawberry;
pen Black;
pen RawSienna;
pen Thistle;
-pen Bittersweet;
pen Blue;
pen Maroon;
pen Yellow;
+pen SeaGreen;
pen Rhodamine;
pen Fuchsia;
-pen Cyan;
+pen YellowGreen;
pen Green;
-pen Orchid;
-pen SeaGreen;
+pen ForestGreen;
+pen Cerulean;
+pen Cyan;
pen PineGreen;
pen Dandelion;
-pen RoyalBlue;
-pen Melon;
pen BlueViolet;
pen RedOrange;
pen CadetBlue;
-pen RubineRed;
-pen Cerulean;
-pen Brown;
+pen Orchid;
pen Magenta;
pen Emerald;
-pen YellowGreen;
pen JungleGreen;
pen SpringGreen;
pen BurntOrange;
+pen Gray;
+pen Brown;
pen MidnightBlue;
-pen ForestGreen;
pen Orange;
-pen Gray;
pen ProcessBlue;
+pen RoyalBlue;
+pen Melon;
pen Peach;
int lookup(tree t, int key);
bool contains(tree t, int key);
@@ -3658,16 +3658,16 @@ real trembleRandom;
real magneticRadius;
real trembleAngle;
real trembleFrequency;
-tremble operator init();
real trembleFuzz();
+tremble operator init();
int coloredSegments;
path3 roundedpath(path3 A, real r);
surface tube(path3 g, coloredpath section, transform T(real)=<default>, real corner=<default>, real relstep=<default>);
-int coloredNodes;
surface surface(rmf[] R, real[] t, coloredpath cp, transform T(real), bool cyclic);
+int coloredNodes;
real degrees(rmf a, rmf b);
-coloredpath operator init();
real[] sample(path3 g, real r, real relstep=<default>);
+coloredpath operator init();
coloredpath operator cast(path p);
coloredpath operator cast(guide p);
string VERSION;
@@ -3782,10 +3782,10 @@ pen SteelBlue;
pen DarkSalmon;
pen SeaGreen;
pen Peru;
+pen AliceBlue;
pen Cyan;
pen BlueViolet;
pen CadetBlue;
-pen AliceBlue;
pen Magenta;
pen Aqua;
pen GhostWhite;
diff --git a/Build/source/utils/asymptote/asymptote.nsi b/Build/source/utils/asymptote/asymptote.nsi
index 2ab28843c1b..a3561569443 100644
--- a/Build/source/utils/asymptote/asymptote.nsi
+++ b/Build/source/utils/asymptote/asymptote.nsi
@@ -74,6 +74,8 @@ Section "Asymptote" SEC01
SetOutPath "$INSTDIR"
${EnvVarUpdate} $0 "PATH" "A" "HKLM" "$INSTDIR"
Delete "$INSTDIR\_imagingtk.pyd"
+ Delete "$INSTDIR\opengl32.dll"
+ Delete "$INSTDIR\glu32.dll"
SetOverwrite try
File /r build-${PRODUCT_VERSION}\*
diff --git a/Build/source/utils/asymptote/asymptote.spec b/Build/source/utils/asymptote/asymptote.spec
index cd3b73f896a..b232f40d4c1 100644
--- a/Build/source/utils/asymptote/asymptote.spec
+++ b/Build/source/utils/asymptote/asymptote.spec
@@ -1,7 +1,7 @@
%{!?_texmf: %global _texmf %(eval "echo `kpsewhich -expand-var '$TEXMFLOCAL'`")}
Name: asymptote
-Version: 2.40
+Version: 2.41
Release: 1%{?dist}
Summary: Descriptive vector graphics language
diff --git a/Build/source/utils/asymptote/base/geometry.asy b/Build/source/utils/asymptote/base/geometry.asy
index 580c49e2e69..2bc062f3560 100644
--- a/Build/source/utils/asymptote/base/geometry.asy
+++ b/Build/source/utils/asymptote/base/geometry.asy
@@ -1295,7 +1295,7 @@ void perpendicularmark(picture pic = currentpicture, point z,
{/*<asyxml></code><documentation>Draw a perpendicular symbol at z aligned in the direction align
relative to the path z--z + dir.
dir(45 + n * 90), where n in N*, are common values for 'align'.</documentation></function></asyxml>*/
- p = squarecap + p;
+ p = squarecap + miterjoin + p;
if(size == 0) size = perpfactor * 3mm + sqrt(1 + linewidth(p)) - 1;
frame apic;
pair d1 = size * align * unit(dir) * dir(-45);
@@ -1354,8 +1354,6 @@ void markrightangle(picture pic = currentpicture, point A, point O,
pair dir = Ap - Op;
real a1 = degrees(dir);
pair align = rotate(-a1) * unit(dir(Op--Ap, Op--Bp));
- if (margin == NoMargin)
- margin = TrueMargin(linewidth(currentpen)/2, linewidth(currentpen)/2);
perpendicularmark(pic = pic, z = O, align = align,
dir = dir, size = size, p = p,
margin = margin, filltype = filltype);
diff --git a/Build/source/utils/asymptote/bezierpatch.cc b/Build/source/utils/asymptote/bezierpatch.cc
index c75989c40df..f076d4643ac 100644
--- a/Build/source/utils/asymptote/bezierpatch.cc
+++ b/Build/source/utils/asymptote/bezierpatch.cc
@@ -31,6 +31,7 @@ GLuint BezierPatch::Ntvertices=0;
extern const double Fuzz2;
const double FillFactor=0.1;
+const double BezierFactor=0.4;
// Partially work around OpenGL transparency bug by sorting transparent
// triangles by their centroid depth.
@@ -58,7 +59,7 @@ void BezierPatch::init(double res, const triple& Min, const triple& Max,
{
empty=false;
res2=res*res;
- res3=res2;
+ Res2=BezierFactor*BezierFactor*res2;
Epsilon=FillFactor*res;
this->Min=Min;
this->Max=Max;
@@ -219,28 +220,28 @@ void BezierPatch::render(const triple *p,
triple m0=0.5*(P0+P1);
if(!flat0) {
- if((flat0=Straightness(p0,p[4],p[8],p12) < res3))
+ if((flat0=Straightness(p0,p[4],p[8],p12) < res2))
m0 -= Epsilon*unit(derivative(s1[0],s1[1],s1[2],s1[3]));
else m0=s0[12];
}
triple m1=0.5*(P1+P2);
if(!flat1) {
- if((flat1=Straightness(p12,p[13],p[14],p15) < res3))
+ if((flat1=Straightness(p12,p[13],p[14],p15) < res2))
m1 -= Epsilon*unit(derivative(s2[12],s2[8],s2[4],s2[0]));
else m1=s1[15];
}
triple m2=0.5*(P2+P3);
if(!flat2) {
- if((flat2=Straightness(p15,p[11],p[7],p3) < res3))
+ if((flat2=Straightness(p15,p[11],p[7],p3) < res2))
m2 -= Epsilon*unit(derivative(s3[15],s2[14],s2[13],s1[12]));
else m2=s2[3];
}
triple m3=0.5*(P3+P0);
if(!flat3) {
- if((flat3=Straightness(p0,p[1],p[2],p3) < res3))
+ if((flat3=Straightness(p0,p[1],p[2],p3) < res2))
m3 -= Epsilon*unit(derivative(s0[3],s0[7],s0[11],s0[15]));
else m3=s3[0];
}
@@ -356,7 +357,7 @@ void BezierTriangle::render(const triple *p,
bool flat0, bool flat1, bool flat2,
GLfloat *C0, GLfloat *C1, GLfloat *C2)
{
- if(Distance(p) < res2) { // Triangle is flat
+ if(Distance(p) < Res2) { // Triangle is flat
triple P[]={P0,P1,P2};
if(!offscreen(3,P)) {
std::vector<GLuint> &p=*pindices;
@@ -490,7 +491,7 @@ void BezierTriangle::render(const triple *p,
triple p0=0.5*(P1+P2);
if(!flat0) {
- if((flat0=Straightness(r300,p210,p120,u030) < res3))
+ if((flat0=Straightness(r300,p210,p120,u030) < res2))
p0 -= Epsilon*unit(derivative(c[0],c[2],c[5],c[9])+
derivative(c[0],c[1],c[3],c[6]));
else p0=r030;
@@ -498,7 +499,7 @@ void BezierTriangle::render(const triple *p,
triple p1=0.5*(P2+P0);
if(!flat1) {
- if((flat1=Straightness(l003,p012,p021,u030) < res3))
+ if((flat1=Straightness(l003,p012,p021,u030) < res2))
p1 -= Epsilon*unit(derivative(c[6],c[3],c[1],c[0])+
derivative(c[6],c[7],c[8],c[9]));
else p1=l030;
@@ -506,7 +507,7 @@ void BezierTriangle::render(const triple *p,
triple p2=0.5*(P0+P1);
if(!flat2) {
- if((flat2=Straightness(l003,p102,p201,r300) < res3))
+ if((flat2=Straightness(l003,p102,p201,r300) < res2))
p2 -= Epsilon*unit(derivative(c[9],c[8],c[7],c[6])+
derivative(c[9],c[5],c[2],c[0]));
else p2=l300;
diff --git a/Build/source/utils/asymptote/bezierpatch.h b/Build/source/utils/asymptote/bezierpatch.h
index 7c82d57df9d..826f65ac2c1 100644
--- a/Build/source/utils/asymptote/bezierpatch.h
+++ b/Build/source/utils/asymptote/bezierpatch.h
@@ -37,7 +37,8 @@ struct BezierPatch
triple u,v,w;
double epsilon;
double Epsilon;
- double res2,res3;
+ double res2;
+ double Res2; // Reduced resolution for Bezier triangles flatness test.
triple Min,Max;
typedef GLuint vertexFunction(const triple &v, const triple& n);
typedef GLuint VertexFunction(const triple &v, const triple& n, GLfloat *c);
@@ -149,15 +150,15 @@ struct BezierPatch
triple p12=p[12];
triple p15=p[15];
+ // Check the flatness of the quad.
+ double d=Distance2(p15,p0,normal(p3,p[2],p[1],p0,p[4],p[8],p12));
+
// Determine how straight the edges are.
- double d=Straightness(p0,p[1],p[2],p3);
+ d=max(d,Straightness(p0,p[1],p[2],p3));
d=max(d,Straightness(p0,p[4],p[8],p12));
d=max(d,Straightness(p3,p[7],p[11],p15));
d=max(d,Straightness(p12,p[13],p[14],p15));
- triple n0=normal(p3,p[2],p[1],p0,p[4],p[8],p12);
- d=max(d,Distance2(p15,p0,n0));
-
// Determine how straight the interior control curves are.
d=max(d,Straightness(p[4],p[5],p[6],p[7]));
d=max(d,Straightness(p[8],p[9],p[10],p[11]));
@@ -237,12 +238,9 @@ public:
triple p0=p[0];
triple p6=p[6];
triple p9=p[9];
-
- // Only the internal point is tested for deviance from the triangle
- // formed by the vertices. We assume that the Jacobian is nonzero so
- // that we only need to calculate the perpendicular distance of the
- // internal point from this triangle.
- double d=Distance2(p[4],p0,normal(p9,p[5],p[2],p0,p[1],p[3],p6));
+
+ // Check how far the internal point is from the centroid of the vertices.
+ double d=abs2((p0+p6+p9)*third-p[4]);
// Determine how straight the edges are.
d=max(d,Straightness(p0,p[1],p[3],p6));
diff --git a/Build/source/utils/asymptote/config.sub b/Build/source/utils/asymptote/config.sub
index 7203bf1e64b..59bb593f109 100644
--- a/Build/source/utils/asymptote/config.sub
+++ b/Build/source/utils/asymptote/config.sub
@@ -1,18 +1,24 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2017 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
-timestamp='2017-03-21'
+timestamp='2012-04-18'
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
@@ -20,12 +26,11 @@ timestamp='2017-03-21'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program. This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
+# the same distribution terms that you use for the rest of that program.
-# Please send patches to <config-patches@gnu.org>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -33,7 +38,7 @@ timestamp='2017-03-21'
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -53,7 +58,8 @@ timestamp='2017-03-21'
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
Canonicalize a configuration name.
@@ -67,7 +73,9 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2017 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -115,9 +123,9 @@ esac
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
- kopensolaris*-gnu* | cloudabi*-eabi* | \
+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -148,7 +156,7 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze*)
+ -apple | -axis | -knuth | -cray | -microblaze)
os=
basic_machine=$1
;;
@@ -251,25 +259,21 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arceb \
- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
- | avr | avr32 \
- | ba \
- | be32 | be64 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | be32 | be64 \
| bfin \
- | c4x | c8051 | clipper \
+ | c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
- | e2k | epiphany \
- | fido | fr30 | frv | ft32 \
+ | epiphany \
+ | fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
- | k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+ | maxq | mb | microblaze | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -283,30 +287,26 @@ case $basic_machine in
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
- | mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
- | mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
- | mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
- | nios | nios2 | nios2eb | nios2el \
+ | nios | nios2 \
| ns16k | ns32k \
- | open8 | or1k | or1knd | or32 \
+ | open8 \
+ | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
- | pru \
| pyramid \
- | riscv32 | riscv64 \
| rl78 | rx \
| score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
@@ -314,8 +314,6 @@ case $basic_machine in
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- | visium \
- | wasm32 \
| we32k \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
@@ -330,10 +328,7 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
- leon|leon[3-9])
- basic_machine=sparc-$basic_machine
- ;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -375,29 +370,26 @@ case $basic_machine in
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
- | ba-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
- | c8051-* | clipper-* | craynv-* | cydra-* \
+ | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
- | e2k-* | elxsi-* \
+ | elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
- | k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
- | microblaze-* | microblazeel-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -411,34 +403,28 @@ case $basic_machine in
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa32r6-* | mipsisa32r6el-* \
| mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64r6-* | mipsisa64r6el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* | nios2eb-* | nios2el-* \
+ | nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
- | or1k*-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
- | pru-* \
| pyramid-* \
- | riscv32-* | riscv64-* \
| rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
| tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile*-* \
@@ -446,8 +432,6 @@ case $basic_machine in
| ubicom32-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
- | visium-* \
- | wasm32-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
@@ -524,9 +508,6 @@ case $basic_machine in
basic_machine=i386-pc
os=-aros
;;
- asmjs)
- basic_machine=asmjs-unknown
- ;;
aux)
basic_machine=m68k-apple
os=-aux
@@ -647,14 +628,6 @@ case $basic_machine in
basic_machine=m68k-bull
os=-sysv3
;;
- e500v[12])
- basic_machine=powerpc-unknown
- os=$os"spe"
- ;;
- e500v[12]-*)
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=$os"spe"
- ;;
ebmon29k)
basic_machine=a29k-amd
os=-ebmon
@@ -796,9 +769,6 @@ case $basic_machine in
basic_machine=m68k-isi
os=-sysv
;;
- leon-*|leon[3-9]-*)
- basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
- ;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
@@ -818,15 +788,11 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze*)
+ microblaze)
basic_machine=microblaze-xilinx
;;
- mingw64)
- basic_machine=x86_64-pc
- os=-mingw64
- ;;
mingw32)
- basic_machine=i686-pc
+ basic_machine=i386-pc
os=-mingw32
;;
mingw32ce)
@@ -854,10 +820,6 @@ case $basic_machine in
basic_machine=powerpc-unknown
os=-morphos
;;
- moxiebox)
- basic_machine=moxie-unknown
- os=-moxiebox
- ;;
msdos)
basic_machine=i386-pc
os=-msdos
@@ -866,7 +828,7 @@ case $basic_machine in
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
- basic_machine=i686-pc
+ basic_machine=i386-pc
os=-msys
;;
mvs)
@@ -950,9 +912,6 @@ case $basic_machine in
nsr-tandem)
basic_machine=nsr-tandem
;;
- nsx-tandem)
- basic_machine=nsx-tandem
- ;;
op50n-* | op60c-*)
basic_machine=hppa1.1-oki
os=-proelf
@@ -1037,7 +996,7 @@ case $basic_machine in
ppc-* | ppcbe-*)
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
- ppcle | powerpclittle)
+ ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
;;
ppcle-* | powerpclittle-*)
@@ -1047,7 +1006,7 @@ case $basic_machine in
;;
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
- ppc64le | powerpc64little)
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
;;
ppc64le-* | powerpc64little-*)
@@ -1060,11 +1019,7 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- os=-rdos
- ;;
- rdos32)
+ rdos)
basic_machine=i386-pc
os=-rdos
;;
@@ -1248,9 +1203,6 @@ case $basic_machine in
basic_machine=a29k-wrs
os=-vxworks
;;
- wasm32)
- basic_machine=wasm32-unknown
- ;;
w65*)
basic_machine=w65-wdc
os=-none
@@ -1394,30 +1346,29 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* | -plan9* \
+ | -sym* | -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* | -cloudabi* | -sortix* \
+ | -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
+ | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
+ | -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
+ | -mingw32* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
- | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1541,6 +1492,9 @@ case $os in
-aros*)
os=-aros
;;
+ -kaos*)
+ os=-kaos
+ ;;
-zvmoe)
os=-zvmoe
;;
@@ -1549,8 +1503,6 @@ case $os in
;;
-nacl*)
;;
- -ios)
- ;;
-none)
;;
*)
@@ -1591,12 +1543,6 @@ case $basic_machine in
c4x-* | tic4x-*)
os=-coff
;;
- c8051-*)
- os=-elf
- ;;
- hexagon-*)
- os=-elf
- ;;
tic54x-*)
os=-coff
;;
@@ -1646,9 +1592,6 @@ case $basic_machine in
sparc-* | *-sun)
os=-sunos4.1.1
;;
- pru-*)
- os=-elf
- ;;
*-be)
os=-beos
;;
diff --git a/Build/source/utils/asymptote/configure b/Build/source/utils/asymptote/configure
index f41951c2a6c..5187810ff20 100755
--- a/Build/source/utils/asymptote/configure
+++ b/Build/source/utils/asymptote/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for Asymptote 2.40.
+# Generated by GNU Autoconf 2.69 for Asymptote 2.41.
#
# Report bugs to <http://sourceforge.net/projects/asymptote>.
#
@@ -580,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Asymptote'
PACKAGE_TARNAME='asymptote'
-PACKAGE_VERSION='2.40'
-PACKAGE_STRING='Asymptote 2.40'
+PACKAGE_VERSION='2.41'
+PACKAGE_STRING='Asymptote 2.41'
PACKAGE_BUGREPORT='http://sourceforge.net/projects/asymptote'
PACKAGE_URL=''
@@ -1283,7 +1283,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Asymptote 2.40 to adapt to many kinds of systems.
+\`configure' configures Asymptote 2.41 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1348,7 +1348,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Asymptote 2.40:";;
+ short | recursive ) echo "Configuration of Asymptote 2.41:";;
esac
cat <<\_ACEOF
@@ -1462,7 +1462,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Asymptote configure 2.40
+Asymptote configure 2.41
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2048,7 +2048,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Asymptote $as_me 2.40, which was
+It was created by Asymptote $as_me 2.41, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -8526,7 +8526,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by Asymptote $as_me 2.40, which was
+This file was extended by Asymptote $as_me 2.41, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -8588,7 +8588,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-Asymptote config.status 2.40
+Asymptote config.status 2.41
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/utils/asymptote/configure.ac b/Build/source/utils/asymptote/configure.ac
index 92670e6b21d..86842a22d92 100644
--- a/Build/source/utils/asymptote/configure.ac
+++ b/Build/source/utils/asymptote/configure.ac
@@ -3,12 +3,12 @@
# this file.
AC_PREREQ(2)
-AC_INIT([Asymptote],[2.40],[http://sourceforge.net/projects/asymptote])
+AC_INIT([Asymptote],[2.41],[http://sourceforge.net/projects/asymptote])
VERSION=$PACKAGE_VERSION
AC_SUBST(VERSION)
m4_include([ax_pthread.m4])
-test "$CXXFLAGS" || CXXFLAGS="-std=c++11"
+test "$CXXFLAGS" || CXXFLAGS=""
test "$CFLAGS" || CFLAGS="-g -O3"
diff --git a/Build/source/utils/asymptote/doc/CAD.pdf b/Build/source/utils/asymptote/doc/CAD.pdf
index d860754a68e..30932b86142 100644
--- a/Build/source/utils/asymptote/doc/CAD.pdf
+++ b/Build/source/utils/asymptote/doc/CAD.pdf
Binary files differ
diff --git a/Build/source/utils/asymptote/doc/FAQ/asy-faq.info b/Build/source/utils/asymptote/doc/FAQ/asy-faq.info
index 9611808e431..67729d0b5f3 100644
--- a/Build/source/utils/asymptote/doc/FAQ/asy-faq.info
+++ b/Build/source/utils/asymptote/doc/FAQ/asy-faq.info
@@ -10,7 +10,7 @@ END-INFO-DIR-ENTRY
File: asy-faq.info, Node: Top, Next: Question 1.1, Up: (dir)
ASYMPTOTE FREQUENTLY ASKED QUESTIONS
- 01 Mar 2017
+ 22 Mar 2017
This is the list of Frequently Asked Questions about Asymptote (asy).
diff --git a/Build/source/utils/asymptote/doc/Makefile.in b/Build/source/utils/asymptote/doc/Makefile.in
index 56b916ea16d..2e502cca4cd 100644
--- a/Build/source/utils/asymptote/doc/Makefile.in
+++ b/Build/source/utils/asymptote/doc/Makefile.in
@@ -10,8 +10,9 @@ infodir = $(DESTDIR)@infodir@
datarootdir = @datarootdir@
INSTALL = @INSTALL@
TEXI2DVI = @TEXI2DVI@
+PERL5LIB = ./
-export docdir infodir INSTALL
+export docdir infodir INSTALL PERL5LIB
all: doc
diff --git a/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf b/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf
index 469c6676b58..1f5a1b68f65 100644
--- a/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf
+++ b/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf
Binary files differ
diff --git a/Build/source/utils/asymptote/doc/asy-latex.pdf b/Build/source/utils/asymptote/doc/asy-latex.pdf
index d8c9d9f570e..a4175f6eefb 100644
--- a/Build/source/utils/asymptote/doc/asy-latex.pdf
+++ b/Build/source/utils/asymptote/doc/asy-latex.pdf
Binary files differ
diff --git a/Build/source/utils/asymptote/doc/asyRefCard.pdf b/Build/source/utils/asymptote/doc/asyRefCard.pdf
index 82dcd2049d1..208c4eedc18 100644
--- a/Build/source/utils/asymptote/doc/asyRefCard.pdf
+++ b/Build/source/utils/asymptote/doc/asyRefCard.pdf
Binary files differ
diff --git a/Build/source/utils/asymptote/doc/asymptote.pdf b/Build/source/utils/asymptote/doc/asymptote.pdf
index b92d6b9aa61..49d678f6514 100644
--- a/Build/source/utils/asymptote/doc/asymptote.pdf
+++ b/Build/source/utils/asymptote/doc/asymptote.pdf
Binary files differ
diff --git a/Build/source/utils/asymptote/doc/png/asymptote.info b/Build/source/utils/asymptote/doc/png/asymptote.info
index 6acdfabd1fd..186c4c7f000 100644
--- a/Build/source/utils/asymptote/doc/png/asymptote.info
+++ b/Build/source/utils/asymptote/doc/png/asymptote.info
@@ -1,7 +1,7 @@
This is asymptote.info, produced by makeinfo version 6.0 from
asymptote.texi.
-This file documents 'Asymptote', version 2.40.
+This file documents 'Asymptote', version 2.41.
<http://asymptote.sourceforge.net>
@@ -22,7 +22,7 @@ File: asymptote.info, Node: Top, Next: Description, Prev: (dir), Up: (dir)
Asymptote
*********
-This file documents 'Asymptote', version 2.40.
+This file documents 'Asymptote', version 2.41.
<http://asymptote.sourceforge.net>
diff --git a/Build/source/utils/asymptote/picture.cc b/Build/source/utils/asymptote/picture.cc
index 8799274be04..026e4fba043 100644
--- a/Build/source/utils/asymptote/picture.cc
+++ b/Build/source/utils/asymptote/picture.cc
@@ -33,10 +33,13 @@ texstream::~texstream() {
unlink((name+"aux").c_str());
unlink((name+"log").c_str());
unlink((name+"out").c_str());
- unlink((name+"m9").c_str());
- if(settings::pdf(texengine))
+ if(settings::pdf(texengine)) {
unlink((name+"pdf").c_str());
+ unlink((name+"m9").c_str());
+ } else
+ unlink((name+"pbsdat").c_str());
if(context) {
+ unlink("cont-new.log");
unlink((name+"tex").c_str());
unlink((name+"top").c_str());
unlink((name+"tua").c_str());
@@ -599,6 +602,35 @@ int picture::epstopdf(const string& epsname, const string& pdfname)
return status;
}
+int picture::pdftoeps(const string& pdfname, const string& epsname)
+{
+ mem::vector<string> cmd;
+ cmd.push_back(getSetting<string>("gs"));
+ cmd.push_back("-q");
+ cmd.push_back("-dNOCACHE");
+ cmd.push_back("-dNOPAUSE");
+ cmd.push_back("-dBATCH");
+ cmd.push_back("-P");
+ if(safe)
+ cmd.push_back("-dSAFER");
+ string texengine=getSetting<string>("tex");
+ cmd.push_back("-sDEVICE="+getSetting<string>("epsdriver"));
+
+ cmd.push_back("-sOutputFile="+stripDir(epsname));
+ cmd.push_back(stripDir(pdfname));
+
+ char *oldPath=NULL;
+ string dir=stripFile(epsname);
+ if(!dir.empty()) {
+ oldPath=getPath();
+ setPath(dir.c_str());
+ }
+ int status=System(cmd,0,true,"gs","Ghostscript");
+ if(oldPath != NULL)
+ setPath(oldPath);
+ return status;
+}
+
bool picture::reloadPDF(const string& Viewer, const string& outname) const
{
static bool needReload=true;
@@ -647,6 +679,8 @@ bool picture::postprocess(const string& prename, const string& outname,
if(status != 0)
reportError("Cannot rename "+prename+" to "+outname);
} else status=epstopdf(prename,outname);
+ } else if(epsformat) {
+ status=pdftoeps(prename,outname);
} else {
mem::vector<string> cmd;
double render=fabs(getSetting<double>("render"));
@@ -678,8 +712,9 @@ bool picture::postprocess(const string& prename, const string& outname,
if(expand == 1.0)
cmd.push_back("+antialias");
push_split(cmd,getSetting<string>("convertOptions"));
- cmd.push_back("-geometry");
+ cmd.push_back("-resize");
cmd.push_back(String(100.0/expand)+"%x");
+ if(outputformat == "jpg") cmd.push_back("-flatten");
cmd.push_back(nativeformat()+":"+prename);
cmd.push_back(outputformat+":"+outname);
status=System(cmd,0,true,"convert");
@@ -1039,8 +1074,10 @@ bool picture::shipout(picture *preamble, const string& Prefix,
if(context) prename=stripDir(prename);
status=postprocess(prename,outname,outputformat,magnification,wait,
view,pdf && Labels,svgformat);
- if(pdfformat && !getSetting<bool>("keep"))
+ if(pdfformat && !getSetting<bool>("keep")) {
unlink(auxname(prefix,"m9").c_str());
+ unlink(auxname(prefix,"pbsdat").c_str());
+ }
}
}
}
diff --git a/Build/source/utils/asymptote/picture.h b/Build/source/utils/asymptote/picture.h
index a25bcd93cdf..44fd72363d4 100644
--- a/Build/source/utils/asymptote/picture.h
+++ b/Build/source/utils/asymptote/picture.h
@@ -68,6 +68,7 @@ public:
}
int epstopdf(const string& epsname, const string& pdfname);
+ int pdftoeps(const string& pdfname, const string& epsname);
bool texprocess(const string& texname, const string& tempname,
const string& prefix, const pair& bboxshift, bool svgformat);
diff --git a/Build/source/utils/asymptote/revision.cc b/Build/source/utils/asymptote/revision.cc
index 214710aad16..514775b02ab 100644
--- a/Build/source/utils/asymptote/revision.cc
+++ b/Build/source/utils/asymptote/revision.cc
@@ -1 +1 @@
-const char *REVISION="2.40";
+const char *REVISION="2.41";
diff --git a/Build/source/utils/asymptote/triple.h b/Build/source/utils/asymptote/triple.h
index 193c1a2fcef..de6767a29f1 100644
--- a/Build/source/utils/asymptote/triple.h
+++ b/Build/source/utils/asymptote/triple.h
@@ -328,12 +328,13 @@ inline void boundstriples(double& x, double& y, double& z,
}
}
+extern const double third;
+
// return the maximum distance squared of points c0 and c1 from
// the respective internal control points of z0--z1.
inline double Straightness(const triple& z0, const triple& c0,
const triple& c1, const triple& z1)
{
- static const double third=1.0/3.0;
triple v=third*(z1-z0);
return std::max(abs2(c0-v-z0),abs2(z1-v-c1));
}