summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Build/source/utils/asymptote/binaries/i386-win32/README9
-rw-r--r--Build/source/utils/asymptote/binaries/i386-win32/cygwin1.dllbin0 -> 1872884 bytes
-rw-r--r--Build/source/utils/asymptote/binaries/i386-win32/freeglut.dllbin0 -> 195072 bytes
-rw-r--r--Build/source/utils/asymptote/binaries/i386-win32/glu32.dllbin0 -> 307200 bytes
-rw-r--r--Build/source/utils/asymptote/binaries/i386-win32/texlive/README6
-rwxr-xr-xBuild/source/utils/asymptote/binaries/i386-win32/texlive/asy.exebin0 -> 5684224 bytes
-rwxr-xr-xMaster/bin/i386-cygwin/asy.exebin5703680 -> 5684224 bytes
-rwxr-xr-xMaster/texmf/asymptote/GUI/xasyVersion.py2
-rw-r--r--Master/texmf/asymptote/asy-keywords.el4
-rw-r--r--Master/texmf/asymptote/obj.asy9
-rw-r--r--Master/texmf/asymptote/splinetype.asy240
-rw-r--r--Master/texmf/asymptote/three.asy121
-rw-r--r--Master/texmf/asymptote/three_surface.asy67
-rw-r--r--Master/texmf/asymptote/version.asy2
-rw-r--r--Master/texmf/doc/asymptote/CAD.pdfbin67399 -> 67399 bytes
-rw-r--r--Master/texmf/doc/asymptote/asymptote.pdfbin1568843 -> 1572915 bytes
-rw-r--r--Master/texmf/doc/asymptote/examples/Klein.asy4
-rw-r--r--Master/texmf/doc/asymptote/examples/bigdiagonal.asy2
-rw-r--r--Master/texmf/doc/asymptote/examples/bigsquare.asy2
-rw-r--r--Master/texmf/doc/asymptote/examples/billboard.asy5
-rw-r--r--Master/texmf/doc/asymptote/examples/fequlogo.asy40
-rw-r--r--Master/texmf/doc/asymptote/examples/labelsquare.asy2
-rw-r--r--Master/texmf/doc/asymptote/examples/slidedemo.asy1
-rw-r--r--Master/texmf/doc/asymptote/examples/square.asy3
-rw-r--r--Master/texmf/doc/asymptote/examples/truncatedIcosahedron.asy66
-rw-r--r--Master/texmf/doc/asymptote/examples/worksheet.asy45
-rw-r--r--Master/texmf/doc/info/asy-faq.info2
-rw-r--r--Master/texmf/doc/man/man1/asy.14
-rwxr-xr-xMaster/tlpkg/asymptote/asy.exebin5703680 -> 5684224 bytes
29 files changed, 346 insertions, 290 deletions
diff --git a/Build/source/utils/asymptote/binaries/i386-win32/README b/Build/source/utils/asymptote/binaries/i386-win32/README
new file mode 100644
index 00000000000..2744b4cd583
--- /dev/null
+++ b/Build/source/utils/asymptote/binaries/i386-win32/README
@@ -0,0 +1,9 @@
+Source code for cygwin1.dll is available under the GPL license here:
+ftp://ftp.cygwin.com/pub/cygwin/release/cygwin/cygwin-1.5.25-15.tar.bz2
+
+Source code for freeglut.dll is available under the X-Consortium license here:
+http://prdownloads.sourceforge.net/freeglut/freeglut-2.6.0-rc1.tar.gz
+
+Links to the source code for glu32.dll and SGI license are available here:
+http://www.geocities.com/vmelkon/glu.html
+http://oss.sgi.com/projects/ogl-sample
diff --git a/Build/source/utils/asymptote/binaries/i386-win32/cygwin1.dll b/Build/source/utils/asymptote/binaries/i386-win32/cygwin1.dll
new file mode 100644
index 00000000000..0296b95d7fb
--- /dev/null
+++ b/Build/source/utils/asymptote/binaries/i386-win32/cygwin1.dll
Binary files differ
diff --git a/Build/source/utils/asymptote/binaries/i386-win32/freeglut.dll b/Build/source/utils/asymptote/binaries/i386-win32/freeglut.dll
new file mode 100644
index 00000000000..db63513e7c5
--- /dev/null
+++ b/Build/source/utils/asymptote/binaries/i386-win32/freeglut.dll
Binary files differ
diff --git a/Build/source/utils/asymptote/binaries/i386-win32/glu32.dll b/Build/source/utils/asymptote/binaries/i386-win32/glu32.dll
new file mode 100644
index 00000000000..a27605870f0
--- /dev/null
+++ b/Build/source/utils/asymptote/binaries/i386-win32/glu32.dll
Binary files differ
diff --git a/Build/source/utils/asymptote/binaries/i386-win32/texlive/README b/Build/source/utils/asymptote/binaries/i386-win32/texlive/README
new file mode 100644
index 00000000000..e37f06d0bde
--- /dev/null
+++ b/Build/source/utils/asymptote/binaries/i386-win32/texlive/README
@@ -0,0 +1,6 @@
+The MSWindows executable file included in this directory can only be
+released under the GNU General Public License (GPL) as it is linked against
+the GNU Scientific Library, GNU Readline library and other GPL
+libraries. The Asymptote source itself is released under the GNU Lesser
+General Public License.
+
diff --git a/Build/source/utils/asymptote/binaries/i386-win32/texlive/asy.exe b/Build/source/utils/asymptote/binaries/i386-win32/texlive/asy.exe
new file mode 100755
index 00000000000..a8b10612361
--- /dev/null
+++ b/Build/source/utils/asymptote/binaries/i386-win32/texlive/asy.exe
Binary files differ
diff --git a/Master/bin/i386-cygwin/asy.exe b/Master/bin/i386-cygwin/asy.exe
index 120d18610f9..a8b10612361 100755
--- a/Master/bin/i386-cygwin/asy.exe
+++ b/Master/bin/i386-cygwin/asy.exe
Binary files differ
diff --git a/Master/texmf/asymptote/GUI/xasyVersion.py b/Master/texmf/asymptote/GUI/xasyVersion.py
index 9c236521c06..c1a6f3f54eb 100755
--- a/Master/texmf/asymptote/GUI/xasyVersion.py
+++ b/Master/texmf/asymptote/GUI/xasyVersion.py
@@ -1,2 +1,2 @@
#!/usr/bin/env python
-xasyVersion = "1.87-r15549"
+xasyVersion = "1.88"
diff --git a/Master/texmf/asymptote/asy-keywords.el b/Master/texmf/asymptote/asy-keywords.el
index 7df3abc56d0..d3704119f9b 100644
--- a/Master/texmf/asymptote/asy-keywords.el
+++ b/Master/texmf/asymptote/asy-keywords.el
@@ -2,7 +2,7 @@
;; This file is automatically generated by asy-list.pl.
;; Changes will be overwritten.
;;
-(defvar asy-keywords-version "1.86")
+(defvar asy-keywords-version "1.88")
(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 ))
@@ -11,7 +11,7 @@ and controls tension atleast curl if else while for do return break continue str
Braid FitResult Label Legend TreeNode abscissa arc arrowhead binarytree binarytreeNode block bool bool3 bounds bqe circle conic coord coordsys cputime ellipse file filltype frame grid3 guide horner hsv hyperbola indexedTransform int inversion key light line linefit marginT marker mass object pair parabola path path3 pen picture point position projection real revolution scaleT scientific segment side slice splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void ))
(defvar asy-function-name '(
-AND Arc ArcArrow ArcArrows Arrow Arrows Automatic AvantGarde BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks J Label Landscape Left LeftRight LeftTicks Legend Linear Link Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RadialShade Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _cputime _draw _eval _image _labelpath _strokepath _texpath aCos aSin aTan abort abs accel acos acosh acot acsc add addArrow addMargins addSaveFunction addnode addnodes addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize asec asin asinh ask assert asy asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit atime attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial binput bins bisector bisectorpoint blend boutput box bqe breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment checkconditionlength checker checklengths checkposition checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawline drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 empty enclose end endScript endclip endgroup endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitXasyMode exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image incenter incentral incircle increasing incrementposition indexedTransform indexedfigure initXasyMode initdefaults input inradius insert inside integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isogonal isogonalconjugate isotomic isotomicconjugate isparabola italic item key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout ldexp leastsquares legend legenditem length lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p logaxiscoverage longitude lookup magnetize makeNode makedraw makepen map margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markuniform mass masscenter massformat math max max3 maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minbezier minbound minipage minratio mintimes miterlimit momArrowPath momarrowsize monotonic multifigure nativeformat natural needshipout newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa none norm normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orientation orig_circlenodesnumber orig_circlenodesnumber1 orig_draw orig_ellipsenodesnumber orig_ellipsenodesnumber1 orig_hyperbolanodesnumber orig_parabolanodesnumber origin orthic orthocentercenter outformat outline outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel partialsum path path3 pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon postcontrol postscript pow10 ppoint prc prc0 precision precontrol prepend print_random_addresses project projection purge pwhermite quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show side simeq simpson sin single sinh size size3 skewness skip slant sleep slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys startScript startTrembling stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox transform transformation transpose tremble trembleFuzz tremble_circlenodesnumber tremble_circlenodesnumber1 tremble_draw tremble_ellipsenodesnumber tremble_ellipsenodesnumber1 tremble_hyperbolanodesnumber tremble_marknodes tremble_markuniform tremble_parabolanodesnumber triangle triangleAbc triangleabc triangulate tricoef tridiagonal trilinear trim trueMagnetize truepoint tube uncycle unfill uniform unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xaxis xaxis3 xaxis3At xaxisAt xequals xinput xlimits xoutput xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zero3 zlimits zpart ztick ztick3 ztrans ))
+AND Arc ArcArrow ArcArrows Arrow Arrows Automatic AvantGarde BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks J Label Landscape Left LeftRight LeftTicks Legend Linear Link Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RadialShade Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _cputime _draw _eval _image _labelpath _projection _strokepath _texpath aCos aSin aTan abort abs accel acos acosh acot acsc add addArrow addMargins addSaveFunction addnode addnodes addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize asec asin asinh ask assert asy asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit atime attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial binput bins bisector bisectorpoint blend boutput box bqe breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment checkconditionlength checker checklengths checkposition checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawline drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 empty enclose end endScript endclip endgroup endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitXasyMode exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image incenter incentral incircle increasing incrementposition indexedTransform indexedfigure initXasyMode initdefaults input inradius insert inside integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isogonal isogonalconjugate isotomic isotomicconjugate isparabola italic item key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout ldexp leastsquares legend legenditem length lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p logaxiscoverage longitude lookup magnetize makeNode makedraw makepen map margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markuniform mass masscenter massformat math max max3 maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minbezier minbound minipage minratio mintimes miterlimit momArrowPath momarrowsize monotonic multifigure nativeformat natural needshipout newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa none norm normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orientation orig_circlenodesnumber orig_circlenodesnumber1 orig_draw orig_ellipsenodesnumber orig_ellipsenodesnumber1 orig_hyperbolanodesnumber orig_parabolanodesnumber origin orthic orthocentercenter outformat outline outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel partialsum path path3 pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon postcontrol postscript pow10 ppoint prc prc0 precision precontrol prepend print_random_addresses project projection purge pwhermite quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show side simeq simpson sin single sinh size size3 skewness skip slant sleep slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys startScript startTrembling stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox transform transformation transpose tremble trembleFuzz tremble_circlenodesnumber tremble_circlenodesnumber1 tremble_draw tremble_ellipsenodesnumber tremble_ellipsenodesnumber1 tremble_hyperbolanodesnumber tremble_marknodes tremble_markuniform tremble_parabolanodesnumber triangle triangleAbc triangleabc triangulate tricoef tridiagonal trilinear trim trueMagnetize truepoint tube uncycle unfill uniform unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xaxis xaxis3 xaxis3At xaxisAt xequals xinput xlimits xoutput xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zero3 zlimits zpart ztick ztick3 ztrans ))
(defvar asy-variable-name '(
AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Both Break BrickRed Brown BurlyWood BurntOrange CCW CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite Gold Goldenrod Gray Green GreenYellow Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen Orange OrangeRed Orchid Ox Oy PC PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Peach PeachPuff Periwinkle Peru PineGreen Pink Plum PowderBlue ProcessBlue Purple RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna Red RedOrange RedViolet Rhodamine RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XYAlign YAlign Yellow YellowGreen YellowOrange addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor authorpen axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate beveljoin bigvertexpen bigvertexsize black blue bm bottom bp brown bullet byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred default defaultControl defaultS defaultbackpen defaultcoordsys defaultfilename defaultformat defaultmassformat defaultpen diagnostics differentlengths dot dotfactor dotframe dotted doublelinepen doublelinespacing down duplicateFuzz ellipsenodesnumberfactor eps epsgeo epsilon evenodd extendcap fermionpen figureborder figuremattpen firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hwratio hyperbolanodesnumberfactor identity4 ignore inXasyMode inch inches includegraphicscommand inf infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magneticPoints magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle newbulletcolor ngraph nil nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen sequencereal settings shipped signedtrailingzero solid springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tremblingMode undefined unitcircle unitsquare up urlpen urlskip version vertexpen vertexsize viewportmargin viewportsize vline white wye xformStack yellow ylabelwidth zerotickfuzz zerowinding ))
diff --git a/Master/texmf/asymptote/obj.asy b/Master/texmf/asymptote/obj.asy
index 158d417c136..0a6c4ab047c 100644
--- a/Master/texmf/asymptote/obj.asy
+++ b/Master/texmf/asymptote/obj.asy
@@ -98,6 +98,15 @@ struct obj {
}
}
+obj operator * (transform3 T, obj o)
+{
+ obj ot;
+ ot.s=T*o.s;
+ ot.surfacepen=copy(o.surfacepen);
+ ot.meshpen=copy(o.meshpen);
+ return ot;
+}
+
void draw(picture pic=currentpicture, obj o, light light=currentlight)
{
draw(pic,o.s,o.surfacepen,o.meshpen,light);
diff --git a/Master/texmf/asymptote/splinetype.asy b/Master/texmf/asymptote/splinetype.asy
deleted file mode 100644
index 08263ddf4ca..00000000000
--- a/Master/texmf/asymptote/splinetype.asy
+++ /dev/null
@@ -1,240 +0,0 @@
-typedef real[] splinetype(real[], real[]);
-
-restricted real[] defaultspline(real[] x, real[] y);
-restricted real[] Spline(real[] x, real[] y);
-restricted splinetype[] Spline;
-
-string morepoints="interpolation requires at least 2 points";
-string differentlengths="arrays have different lengths";
-void checklengths(int x, int y, string text=differentlengths)
-{
- if(x != y)
- abort(text+": "+string(x)+" != "+string(y));
-}
-
-// Standard cubic spline interpolation with not-a-knot condition:
-// s'''(x_2^-)=s'''(x_2^+) et s'''(x_(n_2)^-)=s'''(x_(n-2)^+)
-// if n=2, linear interpolation is returned
-// if n=3, an interpolation polynomial of degree <= 2 is returned:
-// p(x_1)=y_1, p(x_2)=y_2, p(x_3)=y_3
-real[] notaknot(real[] x, real[] y)
-{
- int n=x.length;
- checklengths(n,y.length);
- real[] d;
- if(n > 3) {
- real[] a=new real[n];
- real[] b=new real[n];
- real[] c=new real[n];
- real[] g=new real[n];
- b[0]=x[2]-x[1];
- c[0]=x[2]-x[0];
- a[0]=0;
- g[0]=((x[1]-x[0])^2*(y[2]-y[1])/b[0]+b[0]*(2*b[0]+3*(x[1]-x[0]))*
- (y[1]-y[0])/(x[1]-x[0]))/c[0];
- for(int i=1; i < n-1; ++i) {
- a[i]=x[i+1]-x[i];
- c[i]=x[i]-x[i-1];
- b[i]=2*(a[i]+c[i]);
- g[i]=3*(c[i]*(y[i+1]-y[i])/a[i]+a[i]*(y[i]-y[i-1])/c[i]);
- }
- c[n-1]=0;
- b[n-1]=x[n-2]-x[n-3];
- a[n-1]=x[n-1]-x[n-3];
- g[n-1]=((x[n-1]-x[n-2])^2*(y[n-2]-y[n-3])/b[n-1]+
- b[n-1]*(2*b[n-1]+3(x[n-1]-x[n-2]))*
- (y[n-1]-y[n-2])/(x[n-1]-x[n-2]))/a[n-1];
- d=tridiagonal(a,b,c,g);
- } else if(n == 2) {
- real val=(y[1]-y[0])/(x[1]-x[0]);
- d=new real[] {val,val};
- } else if(n == 3) {
- real a=(y[1]-y[0])/(x[1]-x[0]);
- real b=(y[2]-y[1])/(x[2]-x[1]);
- real c=(b-a)/(x[2]-x[0]);
- d=new real[] {a+c*(x[0]-x[1]),a+c*(x[1]-x[0]),a+c*(2*x[2]-x[0]-x[1])};
- } else abort(morepoints);
- return d;
-}
-
-// Standard cubic spline interpolation with periodic condition
-// s'(a)=s'(b), s''(a)=s''(b), assuming that f(a)=f(b)
-// if n=2, linear interpolation is returned
-real[] periodic(real[] x, real[] y)
-{
- int n=x.length;
- checklengths(n,y.length);
- if(abs(y[n-1]-y[0]) > sqrtEpsilon*max(abs(y)))
- abort("function values are not periodic");
- real[] d;
- if(n > 2) {
- real[] a=new real[n-1];
- real[] b=new real[n-1];
- real[] c=new real[n-1];
- real[] g=new real[n-1];
- c[0]=x[n-1]-x[n-2];
- a[0]=x[1]-x[0];
- b[0]=2*(a[0]+c[0]);
- g[0]=3*c[0]*(y[1]-y[0])/a[0]+3*a[0]*(y[n-1]-y[n-2])/c[0];
- for(int i=1; i < n-1; ++i) {
- a[i]=x[i+1]-x[i];
- c[i]=x[i]-x[i-1];
- b[i]=2*(a[i]+c[i]);
- g[i]=3*(c[i]*(y[i+1]-y[i])/a[i]+a[i]*(y[i]-y[i-1])/c[i]);
- }
- d=tridiagonal(a,b,c,g);
- d.push(d[0]);
- } else if(n == 2) {
- d=new real[] {0,0};
- } else abort(morepoints);
- return d;
-}
-
-// Standard cubic spline interpolation with the natural condition
-// s''(a)=s''(b)=0.
-// if n=2, linear interpolation is returned
-// Don't use the natural type unless the underlying function
-// has zero second end points derivatives.
-real[] natural(real[] x, real[] y)
-{
- int n=x.length;
- checklengths(n,y.length);
- real[] d;
- if(n > 2) {
- real[] a=new real[n];
- real[] b=new real[n];
- real[] c=new real[n];
- real[] g=new real[n];
- b[0]=2*(x[1]-x[0]);
- c[0]=x[1]-x[0];
- a[0]=0;
- g[0]=3*(y[1]-y[0]);
- for(int i=1; i < n-1; ++i) {
- a[i]=x[i+1]-x[i];
- c[i]=x[i]-x[i-1];
- b[i]=2*(a[i]+c[i]);
- g[i]=3*(c[i]*(y[i+1]-y[i])/a[i]+a[i]*(y[i]-y[i-1])/c[i]);
- }
- c[n-1]=0;
- a[n-1]=x[n-1]-x[n-2];
- b[n-1]=2*a[n-1];
- g[n-1]=3*(y[n-1]-y[n-2]);
- d=tridiagonal(a,b,c,g);
- } else if(n == 2) {
- real val=(y[1]-y[0])/(x[1]-x[0]);
- d=new real[] {val,val};
- } else abort(morepoints);
- return d;
-}
-
-// Standard cubic spline interpolation with clamped conditions f'(a), f'(b)
-splinetype clamped(real slopea, real slopeb)
-{
- return new real[] (real[] x, real[] y) {
- int n=x.length;
- checklengths(n,y.length);
- real[] d;
- if(n > 2) {
- real[] a=new real[n];
- real[] b=new real[n];
- real[] c=new real[n];
- real[] g=new real[n];
- b[0]=x[1]-x[0];
- g[0]=b[0]*slopea;
- c[0]=0;
- a[0]=0;
- for(int i=1; i < n-1; ++i) {
- a[i]=x[i+1]-x[i];
- c[i]=x[i]-x[i-1];
- b[i]=2*(a[i]+c[i]);
- g[i]=3*(c[i]*(y[i+1]-y[i])/a[i]+a[i]*(y[i]-y[i-1])/c[i]);
- }
- c[n-1]=0;
- a[n-1]=0;
- b[n-1]=x[n-1]-x[n-2];
- g[n-1]=b[n-1]*slopeb;
- d=tridiagonal(a,b,c,g);
- } else if(n == 2) {
- d=new real[] {slopea,slopeb};
- } else abort(morepoints);
- return d;
- };
-}
-
-// Piecewise Cubic Hermite Interpolating Polynomial (PCHIP)
-// Modified MATLAB code
-// [1] Fritsch, F. N. and R. E. Carlson,
-// "Monotone Piecewise Cubic Interpolation,"
-// SIAM J. Numerical Analysis, Vol. 17, 1980, pp.238-246.
-// [2] Kahaner, David, Cleve Moler, Stephen Nash,
-// Numerical Methods and Software, Prentice Hall, 1988.
-real[] monotonic(real[] x, real[] y)
-{
- int n=x.length;
- checklengths(n,y.length);
- real[] d=new real[n];
- if(n > 2) {
- real[] h=new real[n-1];
- real[] del=new real[n-1];
- for(int i=0; i < n-1; ++i) {
- h[i]=x[i+1]-x[i];
- del[i]=(y[i+1]-y[i])/h[i];
- }
- int j=0;
- int k[]=new int[];
- for(int i=0; i < n-2; ++i)
- if((sgn(del[i])*sgn(del[i+1])) > 0) {k[j]=i; j=j+1;}
-
- real[] hs=new real[j];
- for(int i=0; i < j; ++i) hs[i]=h[k[i]]+h[k[i]+1];
- real w1[]=new real[j];
- real w2[]=new real[j];
- real dmax[]=new real[j];
- real dmin[]=new real[j];
- for(int i=0; i < j; ++i) {
- w1[i]=(h[k[i]]+hs[i])/(3*hs[i]);
- w2[i]=(h[k[i]+1]+hs[i])/(3*hs[i]);
- dmax[i]=max(abs(del[k[i]]),abs(del[k[i]+1]));
- dmin[i]=min(abs(del[k[i]]),abs(del[k[i]+1]));
- }
- for(int i=0; i < n; ++i) d[i]=0;
- for(int i=0; i < j; ++i)
- d[k[i]+1]=dmin[i]/(w1[i]*(del[k[i]]/dmax[i])+w2[i]*(del[k[i]+1]/dmax[i]));
- d[0]=((2*h[0]+h[1])*del[0]-h[0]*del[1])/(h[0]+h[1]);
- if(sgn(d[0]) != sgn(del[0])) {d[0]=0;}
- else if((sgn(del[0]) != sgn(del[1])) && (abs(d[0]) > abs(3*del[0])))
- d[0]=3*del[0];
-
- d[n-1]=((2*h[n-2]+h[n-3])*del[n-2]-h[n-2]*del[n-2])/(h[n-2]+h[n-3]);
- if(sgn(d[n-1]) != sgn(del[n-2])) {d[n-1]=0;}
- else if((sgn(del[n-2]) != sgn(del[n-3])) &&
- (abs(d[n-1]) > abs(3*del[n-2])))
- d[n-1]=3*del[n-2];
- } else if(n == 2) {
- d[0]=d[1]=(y[1]-y[0])/(x[1]-x[0]);
- } else abort(morepoints);
- return d;
-}
-
-// Return standard cubic spline interpolation as a guide
-guide hermite(real[] x, real[] y, splinetype splinetype=null)
-{
- int n=x.length;
- if(n == 0) return nullpath;
-
- guide g=(x[0],y[0]);
- if(n == 1) return g;
- if(n == 2) return g--(x[1],y[1]);
-
- if(splinetype == null)
- splinetype=(x[0] == x[x.length-1] && y[0] == y[y.length-1]) ?
- periodic : notaknot;
-
- real[] dy=splinetype(x,y);
- for(int i=1; i < n; ++i) {
- pair z=(x[i],y[i]);
- real dx=x[i]-x[i-1];
- g=g..controls((x[i-1],y[i-1])+dx*(1,dy[i-1])/3) and (z-dx*(1,dy[i])/3)..z;
- }
- return g;
-}
diff --git a/Master/texmf/asymptote/three.asy b/Master/texmf/asymptote/three.asy
index 23a23223141..5c3a404514f 100644
--- a/Master/texmf/asymptote/three.asy
+++ b/Master/texmf/asymptote/three.asy
@@ -23,17 +23,9 @@ string defaultembed3Doptions;
string defaultembed3Dscript;
real defaulteyetoview=63mm/1000mm;
-string defaultlabelname="label";
-string Billboard=" "+defaultlabelname;
-
-string defaultlabelname()
-{
- return settings.billboard ? Billboard : defaultlabelname;
-}
-
string partname(string s, int i=0)
{
- return s == "" ? s : s+"-"+string(i);
+ return s == "" ? "" : s+"-"+string(i);
}
triple O=(0,0,0);
@@ -331,7 +323,7 @@ projection projection()
{
projection P;
real[] a=_projection();
- if(a[10] == 0.0) return currentprojection;
+ if(a.length == 0 || a[10] == 0.0) return currentprojection;
int k=0;
return a[0] == 1 ?
orthographic((a[++k],a[++k],a[++k]),(a[++k],a[++k],a[++k]),
@@ -2349,6 +2341,11 @@ private string Format(real[] c)
return Format((c[0],c[1],c[2]));
}
+private string format(triple v, string sep=" ")
+{
+ return string(v.x)+sep+string(v.y)+sep+string(v.z);
+}
+
private string[] file3;
private string projection(bool infinity, real viewplanesize)
@@ -2372,6 +2369,97 @@ handler.onEvent=function(event)
}";
}
+private string projection(bool infinity, real viewplanesize)
+{
+ return "activeCamera=scene.cameras.getByIndex(0);
+function asyProjection() {"+
+ (infinity ? "activeCamera.projectionType=activeCamera.TYPE_ORTHOGRAPHIC;" :
+ "activeCamera.projectionType=activeCamera.TYPE_PERSPECTIVE;")+"
+activeCamera.viewPlaneSize="+string(viewplanesize)+";
+activeCamera.binding=activeCamera.BINDING_"+(infinity ? "MAX" : "VERTICAL")+";
+}
+
+asyProjection();
+
+handler=new CameraEventHandler();
+runtime.addEventHandler(handler);
+handler.onEvent=function(event)
+{
+ asyProjection();
+ scene.update();
+}";
+}
+
+private string billboard(int[] index, triple[] center)
+{
+ if(index.length == 0) return "";
+ string s="
+var zero=new Vector3(0,0,0);
+var meshes=scene.meshes;
+var count=meshes.count;
+
+var index=new Array();
+for(i=0; i < count; i++) {
+ var mesh=meshes.getByIndex(i);
+ var name=mesh.name;
+ end=name.lastIndexOf(\".\")-1;
+ if(end > 0) {
+ if(name.substr(end,1) == \"\001\") {
+ start=name.lastIndexOf(\"-\")+1;
+ n=end-start;
+ if(n > 0) {
+ index[name.substr(start,n)]=i;
+ mesh.name=name.substr(0,start-1);
+ }
+ }
+ }
+}
+
+var center=new Array(
+";
+ for(int i=0; i < center.length; ++i)
+ s += "Vector3("+format(center[i],",")+"),
+";
+ s += ");
+
+billboardHandler=new RenderEventHandler();
+billboardHandler.onEvent=function(event)
+{
+ var camera=scene.cameras.getByIndex(0);
+ var position=camera.position;
+ var direction=position.subtract(camera.targetPosition);
+ var up=camera.up.subtract(position);
+
+ function f(i,k) {
+ j=index[i];
+ if(j >= 0) {
+ var mesh=meshes.getByIndex(j);
+ var name=mesh.name;
+ var R=Matrix4x4();
+ R.setView(zero,direction,up);
+ var c=center[k];
+ var T=mesh.transform;
+ T.setIdentity();
+ T.translateInPlace(c.scale(-1));
+ T.multiplyInPlace(R);
+ T.translateInPlace(c);
+ }
+ }
+";
+ for(int i=0; i < index.length; ++i)
+ s += "f("+string(i)+","+string(index[i])+");
+";
+ s += "
+ runtime.refresh();
+}
+
+runtime.addEventHandler(billboardHandler);
+
+runtime.refresh();
+";
+return s;
+}
+
string lightscript(light light) {
string script="for(var i=scene.lights.count-1; i >= 0; i--)
scene.lights.removeByIndex(i);"+'\n\n';
@@ -2379,8 +2467,8 @@ string lightscript(light light) {
string Li="L"+string(i);
real[] diffuse=light.diffuse[i];
script += Li+"=scene.createLight();"+'\n'+
- Li+".direction.set("+Format(-light.position[i],",")+");"+'\n'+
- Li+".color.set("+Format((diffuse[0],diffuse[1],diffuse[2]),",")+");"+'\n';
+ Li+".direction.set("+format(-light.position[i],",")+");"+'\n'+
+ Li+".color.set("+format((diffuse[0],diffuse[1],diffuse[2]),",")+");"+'\n';
}
// Work around initialization bug in Adobe Reader 8.0:
return script +"
@@ -2437,10 +2525,13 @@ string embed3D(string label="", string text=label, string prefix,
} else
if(!P.absolute) P.angle=2*aTan(Tan(0.5*P.angle));
- string name=prefix+".js";
- writeJavaScript(name,lightscript+projection(P.infinity,viewplanesize),script);
+ int[] index;
+ triple[] center;
+ shipout3(prefix,f,index,center);
- shipout3(prefix,f);
+ string name=prefix+".js";
+ writeJavaScript(name,lightscript+projection(P.infinity,viewplanesize)+
+ billboard(index,center),script);
prefix += ".prc";
if(!settings.inlinetex)
diff --git a/Master/texmf/asymptote/three_surface.asy b/Master/texmf/asymptote/three_surface.asy
index b60a9be6156..e520229371f 100644
--- a/Master/texmf/asymptote/three_surface.asy
+++ b/Master/texmf/asymptote/three_surface.asy
@@ -1130,8 +1130,27 @@ real PRCshininess(real shininess)
return s(shininess);
}
+struct interaction
+{
+ int type;
+ bool targetsize;
+ void operator init(int type, bool targetsize=false) {
+ this.type=type;
+ this.targetsize=targetsize;
+ }
+}
+
+restricted interaction Embedded=interaction(0);
+restricted interaction Billboard=interaction(1);
+
+interaction LabelInteraction()
+{
+ return settings.autobillboard ? Billboard : Embedded;
+}
+
void draw3D(frame f, patch s, triple center=O, material m,
- light light=currentlight, string name="")
+ light light=currentlight, string name="",
+ interaction interaction=Embedded)
{
if(s.colors.length > 0)
m=mean(s.colors);
@@ -1143,7 +1162,8 @@ void draw3D(frame f, patch s, triple center=O, material m,
PRCshininess=PRCshininess(m.shininess);
real granularity=m.granularity >= 0 ? m.granularity : defaultgranularity;
draw(f,s.P,center,s.straight,m.p,m.opacity,m.shininess,PRCshininess,
- granularity,s.planar ? s.normal(0.5,0.5) : O,s.colors,lighton,name);
+ granularity,s.planar ? s.normal(0.5,0.5) : O,s.colors,lighton,name,
+ interaction.type);
}
void tensorshade(transform t=identity(), frame f, patch s,
@@ -1227,11 +1247,18 @@ void draw(picture pic=currentpicture, surface s, int nu=1, int nv=1,
{
if(s.empty()) return;
+ bool cyclic=surfacepen.cyclic;
+ surfacepen=copy(surfacepen);
+ surfacepen.cyclic=cyclic;
+ cyclic=meshpen.cyclic;
+ meshpen=copy(meshpen);
+ meshpen.cyclic=cyclic;
+
pic.add(new void(frame f, transform3 t, picture pic, projection P) {
surface S=t*s;
- if(is3D()) {
+ if(is3D())
draw(f,S,nu,nv,surfacepen,meshpen,light,meshlight,name);
- } else if(pic != null)
+ else if(pic != null)
pic.add(new void(frame f, transform T) {
draw(T,f,S,nu,nv,surfacepen,meshpen,light,meshlight,P);
},true);
@@ -1354,20 +1381,21 @@ path[] path(Label L, pair z=0, projection P)
}
void label(frame f, Label L, triple position, align align=NoAlign,
- pen p=currentpen, bool targetsize=false, light light=nolight,
- string name=defaultlabelname(), projection P=currentprojection)
+ pen p=currentpen, light light=nolight,
+ string name=L.s, interaction interaction=LabelInteraction(),
+ projection P=currentprojection)
{
Label L=L.copy();
L.align(align);
L.p(p);
- if(targetsize && settings.render != 0)
+ if(interaction.targetsize && settings.render != 0)
L.T=L.T*scale(abs(P.camera-position)/abs(P.vector()));
if(L.defaulttransform3)
L.T3=transform3(P);
if(is3D()) {
int i=-1;
for(patch S : surface(L,position).s)
- draw3D(f,S,position,L.p,light,partname(name,++i));
+ draw3D(f,S,position,L.p,light,partname(name,++i),interaction);
} else {
if(L.filltype == NoFill)
fill(f,path(L,project(position,P.t),P),
@@ -1382,8 +1410,9 @@ void label(frame f, Label L, triple position, align align=NoAlign,
}
void label(picture pic=currentpicture, Label L, triple position,
- align align=NoAlign, pen p=currentpen, bool targetsize=false,
- light light=nolight, string name=defaultlabelname())
+ align align=NoAlign, pen p=currentpen,
+ light light=nolight, string name=L.s,
+ interaction interaction=LabelInteraction())
{
Label L=L.copy();
L.align(align);
@@ -1397,14 +1426,14 @@ void label(picture pic=currentpicture, Label L, triple position,
determinant(P.t) != 0)
L.align(L.align.dir*unit(project(v+L.align.dir3,P.t)-project(v,P.t)));
- if(targetsize && settings.render != 0)
+ if(interaction.targetsize && settings.render != 0)
L.T=L.T*scale(abs(P.camera-v)/abs(P.vector()));
if(L.defaulttransform3)
L.T3=transform3(P);
if(is3D()) {
int i=-1;
for(patch S : surface(L,v).s)
- draw3D(f,S,v,L.p,light,partname(name,++i));
+ draw3D(f,S,v,L.p,light,partname(name,++i),interaction);
}
if(pic != null) {
if(L.filltype == NoFill)
@@ -1420,7 +1449,7 @@ void label(picture pic=currentpicture, Label L, triple position,
},!L.defaulttransform3);
Label L=L.copy();
- if(targetsize && settings.render != 0)
+ if(interaction.targetsize && settings.render != 0)
L.T=L.T*scale(abs(currentprojection.camera-position)/
abs(currentprojection.vector()));
path[] g=texpath(L);
@@ -1433,7 +1462,8 @@ void label(picture pic=currentpicture, Label L, triple position,
}
void label(picture pic=currentpicture, Label L, path3 g, align align=NoAlign,
- bool targetsize=false, pen p=currentpen)
+ pen p=currentpen, string name=L.s,
+ interaction interaction=LabelInteraction())
{
Label L=L.copy();
L.align(align);
@@ -1449,7 +1479,7 @@ void label(picture pic=currentpicture, Label L, path3 g, align align=NoAlign,
a.dir3=dir(g,position); // Pass 3D direction via unused field.
L.align(a);
}
- label(pic,L,point(g,position),targetsize);
+ label(pic,L,point(g,position),name,interaction);
}
surface extrude(Label L, triple axis=Z)
@@ -1467,7 +1497,7 @@ restricted surface nullsurface;
// Embed a Label onto a surface.
surface surface(Label L, surface s, real uoffset, real voffset,
- real height=0, bool bottom=false, bool top=true)
+ real height=0, bool bottom=true, bool top=true)
{
int nu=s.index.length;
int nv;
@@ -1689,6 +1719,11 @@ void draw(picture pic=currentpicture, triple[][] P, real[] uknot, real[] vknot,
if(colors.length > 0)
m=mean(colors);
bool lighton=light.on();
+ P=copy(P);
+ uknot=copy(uknot);
+ vknot=copy(vknot);
+ weights=copy(weights);
+ colors=copy(colors);
pic.add(new void(frame f, transform3 t, picture pic, projection Q) {
if(is3D()) {
triple[][] P=t*P;
diff --git a/Master/texmf/asymptote/version.asy b/Master/texmf/asymptote/version.asy
index c40fcb370f8..adb68a2c9db 100644
--- a/Master/texmf/asymptote/version.asy
+++ b/Master/texmf/asymptote/version.asy
@@ -1 +1 @@
-string VERSION="1.87-r15549";
+string VERSION="1.88";
diff --git a/Master/texmf/doc/asymptote/CAD.pdf b/Master/texmf/doc/asymptote/CAD.pdf
index c0710dfa00b..8cee0cb9c7d 100644
--- a/Master/texmf/doc/asymptote/CAD.pdf
+++ b/Master/texmf/doc/asymptote/CAD.pdf
Binary files differ
diff --git a/Master/texmf/doc/asymptote/asymptote.pdf b/Master/texmf/doc/asymptote/asymptote.pdf
index cb9f66d0168..318bcae923c 100644
--- a/Master/texmf/doc/asymptote/asymptote.pdf
+++ b/Master/texmf/doc/asymptote/asymptote.pdf
Binary files differ
diff --git a/Master/texmf/doc/asymptote/examples/Klein.asy b/Master/texmf/doc/asymptote/examples/Klein.asy
index 06ef4271660..4c8089dd86a 100644
--- a/Master/texmf/doc/asymptote/examples/Klein.asy
+++ b/Master/texmf/doc/asymptote/examples/Klein.asy
@@ -34,8 +34,8 @@ z=(2-\cos u)\sin v.\cr}$";
real h=0.0125;
-draw(surface(xscale(-0.38)*yscale(-0.18)*lo,s,0,1.7,h));
-draw(surface(xscale(0.26)*yscale(0.1)*rotate(90)*hi,s,4.9,1.4,h));
+draw(surface(xscale(-0.38)*yscale(-0.18)*lo,s,0,1.7,h,bottom=false));
+draw(surface(xscale(0.26)*yscale(0.1)*rotate(90)*hi,s,4.9,1.4,h,bottom=false));
draw(s.uequals(0),blue+dashed);
draw(s.uequals(pi),blue+dashed);
diff --git a/Master/texmf/doc/asymptote/examples/bigdiagonal.asy b/Master/texmf/doc/asymptote/examples/bigdiagonal.asy
new file mode 100644
index 00000000000..7242b7ae845
--- /dev/null
+++ b/Master/texmf/doc/asymptote/examples/bigdiagonal.asy
@@ -0,0 +1,2 @@
+size(0,100.5);
+draw((0,0)--(2,1),Arrow);
diff --git a/Master/texmf/doc/asymptote/examples/bigsquare.asy b/Master/texmf/doc/asymptote/examples/bigsquare.asy
deleted file mode 100644
index ae1f3046c7a..00000000000
--- a/Master/texmf/doc/asymptote/examples/bigsquare.asy
+++ /dev/null
@@ -1,2 +0,0 @@
-size(3cm,3cm);
-draw(unitsquare);
diff --git a/Master/texmf/doc/asymptote/examples/billboard.asy b/Master/texmf/doc/asymptote/examples/billboard.asy
index 13cc69bc7df..e126c1c5157 100644
--- a/Master/texmf/doc/asymptote/examples/billboard.asy
+++ b/Master/texmf/doc/asymptote/examples/billboard.asy
@@ -1,11 +1,8 @@
import three;
-// Billboard support in PRC is not yet implemented.
-settings.outformat="eps";
-
size(100);
draw(unitbox);
label("Billboard",X,red,Billboard);
-label("Fixed",Y,blue);
+label("Embedded",Y,blue,Embedded);
diff --git a/Master/texmf/doc/asymptote/examples/fequlogo.asy b/Master/texmf/doc/asymptote/examples/fequlogo.asy
new file mode 100644
index 00000000000..29cae0be720
--- /dev/null
+++ b/Master/texmf/doc/asymptote/examples/fequlogo.asy
@@ -0,0 +1,40 @@
+// A compressed version of the required data file may be obtained from:
+// http://www-roc.inria.fr/gamma/download/counter.php?dir=ARCHITEC/&get_obj=uhrturm.obj.gz
+
+import graph3;
+import obj;
+
+size(200,0);
+size3(200);
+
+settings.render=8;
+
+texpreamble("\usepackage[T1]{fontenc}");
+texpreamble("\usepackage{ccfonts,eulervm}");
+
+currentprojection=perspective(4,1,2);
+currentlight=(4,0,2);
+currentlight.background=blue;
+
+real R=4;
+
+triple f1(pair t) {return (R*cos(t.x),R*sin(t.x),t.y);}
+
+draw(shift(-0.6Z)*scale3(0.66)*rotate(55,Z)*rotate(90,X)*
+ obj("uhrturm.obj",orange));
+
+surface s=surface(f1,(0,0),(2pi,2),8,8,Spline);
+
+string lo="$\displaystyle f(x+y)=f(x)+f(y)$";
+string hi="$\displaystyle F_{t+s}=F_t\circ F_s$";
+
+real h=0.0125;
+
+draw(surface(rotate(2)*xscale(0.32)*yscale(0.6)*lo,s,-pi/4-1.5*pi/20,0.5,h));
+draw(surface(rotate(0)*xscale(-0.45)*yscale(0.3)*hi,s,0.8*pi,0.25,h),blue);
+
+currentpicture.add(new void(frame f, transform3 t, picture pic, projection P) {
+ draw(f,surface(invert(box(min(f,P),max(f,P)),min3(f),P),
+ new pen[] {orange,red,yellow,brown}));
+ }
+);
diff --git a/Master/texmf/doc/asymptote/examples/labelsquare.asy b/Master/texmf/doc/asymptote/examples/labelsquare.asy
index 193314ae4d4..9531792b6a1 100644
--- a/Master/texmf/doc/asymptote/examples/labelsquare.asy
+++ b/Master/texmf/doc/asymptote/examples/labelsquare.asy
@@ -1,4 +1,4 @@
-size(0,3cm);
+size(3cm);
draw(unitsquare);
label("$A$",(0,0),SW);
label("$B$",(1,0),SE);
diff --git a/Master/texmf/doc/asymptote/examples/slidedemo.asy b/Master/texmf/doc/asymptote/examples/slidedemo.asy
index c57c60adf7e..ae2f48c33a2 100644
--- a/Master/texmf/doc/asymptote/examples/slidedemo.asy
+++ b/Master/texmf/doc/asymptote/examples/slidedemo.asy
@@ -7,7 +7,6 @@ orientation=Landscape;
import slide;
import three;
-settings.toolbar=false;
viewportsize=pagewidth-2pagemargin;
usersetting();
diff --git a/Master/texmf/doc/asymptote/examples/square.asy b/Master/texmf/doc/asymptote/examples/square.asy
index f3f34a4c628..1bff4e438f5 100644
--- a/Master/texmf/doc/asymptote/examples/square.asy
+++ b/Master/texmf/doc/asymptote/examples/square.asy
@@ -1 +1,2 @@
-draw((0,0)--(100,0)--(100,100)--(0,100)--cycle);
+size(100,100);
+draw((0,0)--(1,0)--(1,1)--(0,1)--cycle);
diff --git a/Master/texmf/doc/asymptote/examples/truncatedIcosahedron.asy b/Master/texmf/doc/asymptote/examples/truncatedIcosahedron.asy
new file mode 100644
index 00000000000..436c6121b9f
--- /dev/null
+++ b/Master/texmf/doc/asymptote/examples/truncatedIcosahedron.asy
@@ -0,0 +1,66 @@
+import graph3;
+
+size(200);
+
+real c=(1+sqrt(5))/2;
+
+triple[] z={(c,1,0),(-c,1,0),(-c,-1,0),(c,-1,0)};
+triple[] x={(0,c,1),(0,-c,1),(0,-c,-1),(0,c,-1)};
+triple[] y={(1,0,c),(1,0,-c),(-1,0,-c),(-1,0,c)};
+
+triple[][] Q={
+ {(c,1,0),(1,0,-c),(0,c,-1),(0,c,1),(1,0,c),(c,-1,0)},
+ {(-c,1,0),(0,c,1),(0,c,-1),(-1,0,-c),(-c,-1,0),(-1,0,c)},
+ {(-c,-1,0),(-c,1,0),(-1,0,-c),(0,-c,-1),(0,-c,1),(-1,0,c)},
+ {(c,-1,0),(c,1,0),(1,0,c),(0,-c,1),(0,-c,-1),(1,0,-c)},
+ {(0,c,1),(0,c,-1),(-c,1,0),(-1,0,c),(1,0,c),(c,1,0)},
+ {(0,-c,1),(0,-c,-1),(-c,-1,0),(-1,0,c),(1,0,c),(c,-1,0)},
+ {(0,-c,-1),(0,-c,1),(c,-1,0),(1,0,-c),(-1,0,-c),(-c,-1,0)},
+ {(0,c,-1),(0,c,1),(c,1,0),(1,0,-c),(-1,0,-c),(-c,1,0)},
+ {(1,0,c),(-1,0,c),(0,-c,1),(c,-1,0),(c,1,0),(0,c,1)},
+ {(1,0,-c),(-1,0,-c),(0,-c,-1),(c,-1,0),(c,1,0),(0,c,-1)},
+ {(-1,0,-c),(1,0,-c),(0,c,-1),(-c,1,0),(-c,-1,0),(0,-c,-1)},
+ {(-1,0,c),(1,0,c),(0,c,1),(-c,1,0),(-c,-1,0),(0,-c,1)}
+};
+
+real R=abs(interp(Q[0][0],Q[0][1],1/3));
+
+triple[][] P;
+for(int i=0; i < Q.length; ++i) {
+ P[i]=new triple[] ;
+ for(int j=0; j < Q[i].length; ++j) {
+ P[i][j]=Q[i][j]/R;
+ }
+}
+
+for(int i=0; i < P.length; ++i) {
+ for(int j=1; j < P[i].length; ++j) {
+ triple C=P[i][0];
+ triple A=P[i][j];
+ triple B=P[i][j % 5+1];
+ triple[] sixout=new
+ triple[] {interp(C,A,1/3),interp(C,A,2/3),interp(A,B,1/3),interp(A,B,2/3),
+ interp(B,C,1/3),interp(B,C,2/3)};
+ triple M=(sum(sixout))/6;
+ triple[] sixin=sequence(new triple(int k) {
+ return interp(sixout[k],M,0.1);
+ },6);
+ draw(surface(reverse(operator--(...sixout)--cycle)^^
+ operator--(...sixin)--cycle,planar=true),magenta);
+ }
+}
+
+for(int i=0; i < P.length; ++i) {
+ triple[] fiveout=sequence(new triple(int k) {
+ return interp(P[i][0],P[i][k+1],1/3);
+ },5);
+ triple M=(sum(fiveout))/5;
+ triple[] fivein=sequence(new triple(int k) {
+ return interp(fiveout[k],M,0.1);
+ },5);
+ draw(surface(reverse(operator--(...fiveout)--cycle)^^
+ operator--(...fivein)--cycle,planar=true),cyan);
+}
+
+
+
diff --git a/Master/texmf/doc/asymptote/examples/worksheet.asy b/Master/texmf/doc/asymptote/examples/worksheet.asy
new file mode 100644
index 00000000000..b3aa2dba8a0
--- /dev/null
+++ b/Master/texmf/doc/asymptote/examples/worksheet.asy
@@ -0,0 +1,45 @@
+import fontsize;
+
+defaultpen(Helvetica());
+
+picture pic;
+unitsize(pic,mm);
+
+pair z=(0,0);
+real length=88;
+real height=8;
+pair step=height*S;
+
+label(pic,"Word Wall Spelling",z,Align);
+z += step;
+frame f;
+label(f,"Name:");
+pair z0=(max(f).x,min(f).y);
+draw(f,z0--z0+50mm);
+add(pic,f,z,Align);
+z += step;
+
+for(int i=1; i <= 14; ++i) {
+ draw(pic,z--z+length);
+ z += step;
+ draw(pic,z--z+length,dashed);
+ z += step;
+ void label(int i) {
+ label(pic,string(i)+".",z,0.2NE,fontsize(0.8*1.5*2*height*mm)+gray);
+ }
+ if(i <= 10) label(i);
+ else if(i == 11) {
+ pair z0=z+length/2;
+ pen p=fontsize(20pt);
+ label(pic,"Challenge Word",z0+N*height,I*Align.y,p+basealign);
+ label(pic,"(optional)",z0,I*Align.y,p);
+ }
+ else if(i == 12) label(1);
+ else if(i == 13) label(2);
+}
+draw(pic,z--z+length);
+
+add(pic.fit(),(0,0),W);
+add(pic.fit(),(0,0),E);
+
+
diff --git a/Master/texmf/doc/info/asy-faq.info b/Master/texmf/doc/info/asy-faq.info
index a32e2e9a481..41a897b34e5 100644
--- a/Master/texmf/doc/info/asy-faq.info
+++ b/Master/texmf/doc/info/asy-faq.info
@@ -9,7 +9,7 @@ END-INFO-DIR-ENTRY
File: $prefix.info, Node: Top, Next: Question 1.1, Up: (dir)
ASYMPTOTE FREQUENTLY ASKED QUESTIONS
- 28 Sep 2009
+ 02 Oct 2009
This is the list of Frequently Asked Questions about Asymptote (asy).
diff --git a/Master/texmf/doc/man/man1/asy.1 b/Master/texmf/doc/man/man1/asy.1
index 5dfac3a04f2..ea02a81a622 100644
--- a/Master/texmf/doc/man/man1/asy.1
+++ b/Master/texmf/doc/man/man1/asy.1
@@ -43,6 +43,7 @@ Antialiasing width for rasterized output [2].
.TP
.B \-auto3D
Automatically activate 3D scene [true].
+-autobillboard 3D labels always face viewer by default [true]
.TP
.B \-autoimport string
Module to automatically import.
@@ -62,9 +63,6 @@ Mask fpu exceptions in batch mode [false].
.B \-batchView
View output in batch mode [false].
.TP
-.B \-billboard
-Force unnamed labels to always face viewer [false].
-.TP
.B \-bw
Convert all colors to black and white [false].
.TP
diff --git a/Master/tlpkg/asymptote/asy.exe b/Master/tlpkg/asymptote/asy.exe
index 120d18610f9..a8b10612361 100755
--- a/Master/tlpkg/asymptote/asy.exe
+++ b/Master/tlpkg/asymptote/asy.exe
Binary files differ