diff options
Diffstat (limited to 'Master/texmf/doc/info/asymptote.info')
-rw-r--r-- | Master/texmf/doc/info/asymptote.info | 2063 |
1 files changed, 1077 insertions, 986 deletions
diff --git a/Master/texmf/doc/info/asymptote.info b/Master/texmf/doc/info/asymptote.info index 0df4062ecf3..108efc52ce3 100644 --- a/Master/texmf/doc/info/asymptote.info +++ b/Master/texmf/doc/info/asymptote.info @@ -1,7 +1,7 @@ This is asymptote.info, produced by makeinfo version 4.13 from ../asymptote.texi. -This file documents `Asymptote', version 1.77. +This file documents `Asymptote', version 1.88. `http://asymptote.sourceforge.net' @@ -23,7 +23,7 @@ File: asymptote.info, Node: Top, Next: Description, Up: (dir) Asymptote ********* -This file documents `Asymptote', version 1.77. +This file documents `Asymptote', version 1.88. `http://asymptote.sourceforge.net' @@ -40,6 +40,7 @@ This file documents `Asymptote', version 1.77. * Installation:: Downloading and installing * Tutorial:: Getting started * Drawing commands:: Four primitive graphics commands +* Bezier curves:: Path connectors and direction specifiers * Programming:: The `Asymptote' vector graphics language * LaTeX usage:: Embedding `Asymptote' commands within `LaTeX' * Base modules:: Base modules shipped with `Asymptote' @@ -153,8 +154,8 @@ Base modules Graphical User Interface -* GUI Installation:: Installing `xasy' -* GUI Usage:: +* GUI installation:: Installing `xasy' +* GUI usage:: File: asymptote.info, Node: Description, Next: Installation, Prev: Top, Up: Top @@ -195,6 +196,9 @@ weaker syntax and capabilities) called `MetaPost'. * `LaTeX' typesetting of labels, for overall document consistency; + * the ability to generate and embed 3D vector PRC graphics within + PDF files; + * a natural coordinate-based framework for technical drawings, inspired by `MetaPost', with a much cleaner, powerful C++-like programming syntax; @@ -260,7 +264,7 @@ We recommend subscribing to new release announcements at `http://freshmeat.net/projects/asy' Users may also wish to monitor the `Asymptote' forum: - `http://sourceforge.net/forum/monitor.php?forum_id=409349' + `http://sourceforge.net/projects/asymptote/forums/forum/409349' File: asymptote.info, Node: UNIX binary distributions, Next: MacOS X binary distributions, Up: Installation @@ -308,10 +312,9 @@ source: `http://sourceforge.net/project/showfiles.php?group_id=120000' -Note that many `MacOS X' (and FreeBSD) systems inexplicably ship with -an extremely old GNU `readline' version (4.1, dated 21 March 2000). For -full interactive functionality, `readline' version 4.2 or later (16 -April 2001) is required. +Note that many `MacOS X' (and FreeBSD) systems lack the GNU `readline' +library. For full interactive functionality, GNU `readline' version 4.3 +or later must be installed. File: asymptote.info, Node: Microsoft Windows, Next: Configuring, Prev: MacOS X binary distributions, Up: Installation @@ -326,9 +329,19 @@ where `x.xx' denotes the latest version. A working TeX implementation (such as the one available at `http://www.miktex.org') will be required to typeset labels. You will also need to install `GPL Ghostscript' from -`http://sourceforge.net/projects/ghostscript/'. To view the default -`PostScript' output, you can install the program `gsview' available from -`http://www.cs.wisc.edu/~ghost/gsview/'. +`http://sourceforge.net/projects/ghostscript/'. + + To view the default `PostScript' output, you can install the program +`gsview' available from `http://www.cs.wisc.edu/~ghost/gsview/'. A +better (and free) `PostScript' viewer available at +`http://psview.sourceforge.net/' (which in particular works properly in +interactive mode) unfortunately currently requires some manual +configuration. Specifically, if version `x.xx' of `psview' is extracted +to the directory `c:\Program Files' one needs to put +import settings; +psviewer="c:\Program Files\psview-x.xx\psv.exe"; + in the optional `Asymptote' configuration file; *note configuration +file::). The `ImageMagick' package from @@ -362,24 +375,26 @@ interactive mode to work properly. Users of `ggv' will need to enable `Watch file' under `Edit/Postscript Viewer Preferences'. Users of `gsview' will need to enable `Options/Auto Redisplay' (however, under `MSDOS' it is still necessary to click on the `gsview' window; under -`UNIX' one must manually redisplay by pressing the `r' key). +`UNIX' one must manually redisplay by pressing the `r' key). A better +(and free) multiplatform alternative to `gsview' is `psview' (*note +psview::). Configuration variables are most easily set as `Asymptote' variables -in an optional configuration file (by default, `.asy/config.asy' in the -user's home directory or `%USERPROFILE%\.asy\config.asy' under -`MSDOS'); *note configuration file::. Here are the default values of -several important configuration variables under `UNIX': +in an optional configuration file `config.asy' *note configuration +file::). Here are the default values of several important configuration +variables under `UNIX': import settings; psviewer="gv"; pdfviewer="acroread"; gs="gs"; -python=""; -The (installation-dependent) default values of these configuration -variables under `MSDOS' are determined automatically from the -`Microsoft Windows' registry. +Under `MSDOS', the (installation-dependent) default values of these +configuration variables are determined automatically from the +`Microsoft Windows' registry. Viewer settings (such as `psviewer' and +`pdfviewer') can be set to the string `cmd' to request the application +normally associated with the corresponding file type. For PDF format output, the `gs' setting specifies the location of the `PostScript'-to-PDF processor `Ghostscript', available from @@ -399,9 +414,6 @@ pdfreloadOptions="-tempFile"; useful under `MSDOS' since the document cannot be updated anyway on that operating system until it is first closed by `Adobe Reader'. - The graphical user interface may also require setting the variable -`python' if `Python' is installed in a nonstandard location. - The configuration variable `dir' can be used to adjust the search path (*note Search paths::). @@ -415,15 +427,17 @@ variables `paperwidth' and `paperheight'. adjustment: texpath texcommand -texdvicommand dvips +dvisvg convert display animate -xasy - The `texdvicommand' is used for `3D' label typesetting, which requires -`dvips' output. An empty string indicates the default setting of -`latex'/`tex', depending on the setting of `texengine'. + Warnings (such as "writeoverloaded") may be enabled or disabled with +the functions +warn(string s); +nowarn(string s); + or by directly modifying the string array `settings.suppress', which +lists all disabled warnings. Configuration variables may also be set or overwritten with a command-line option: @@ -459,8 +473,10 @@ following paths, in the order listed: 2. A list of one or more directories specified by the configuration variable `dir' (separated by `:' under UNIX and `;' under `MSDOS'); - 3. The directory `.asy' in the user's home directory - (`%USERPROFILE%\.asy' under `MSDOS'); + 3. The directory specified by the environment variable + `ASYMPTOTE_HOME'; if this variable is not set, the directory + `.asy' in the user's home directory (`%USERPROFILE%\.asy' under + `MSDOS') is used; 4. The `Asymptote' system directory (by default, `/usr/local/share/asymptote' under `UNIX' and `C:\Program @@ -482,17 +498,16 @@ used; if it is old we recommend first putting `http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.1.tar.gz' in the `Asymptote' source directory. -If your graphics card supports multisampling, we recommend using SVN -revision 761 (or later) of `freeglut' to support antialiasing in +If your graphics card supports multisampling, we recommend using version +`2.6.0-rc1' (or later) of `freeglut' to support antialiasing in `Asymptote''s adaptive `OpenGL' 3D renderer (`MacOS X' users can skip this step since `Asymptote' is configured to use the native glut library on that platform). Download - `http://freeglut.svn.sourceforge.net/viewvc/freeglut/trunk/freeglut/freeglut.tar.gz' + `http://prdownloads.sourceforge.net/freeglut/freeglut-2.6.0-rc1.tar.gz' and type (as the root user): -tar -zxf freeglut.tar.gz -cd freeglut -sh autogen.sh +tar -zxf freeglut-2.6.0-rc1.tar.gz +cd freeglut-2.6.0 ./configure --prefix=/usr make install cd .. @@ -520,7 +535,7 @@ for header files and libraries in nonstandard locations: If you are compiling `Asymptote' with `gcc', you will need a relatively recent version (e.g. 3.4.4 or later). For full interactive -functionality, you will need version 4.2 or later of the GNU `readline' +functionality, you will need version 4.3 or later of the GNU `readline' library. The file `gcc3.3.2curses.patch' in the `patches' directory can be used to patch the broken curses.h header file (or a local copy thereof in the current directory) on some `AIX' and `IRIX' systems. @@ -584,6 +599,11 @@ add to `~/.vim/ftplugin/asy.vim': setlocal makeprg=asy\ % setlocal errorformat=%f:\ %l.%c:\ %m + Syntax highlighting support for the KDE editor `Kate' can be enabled +by running `asy-kate.sh' in the `/usr/local/share/asymptote' directory +and putting the generated `asymptote.xml' file in +`~/.kde/share/apps/katepart/syntax/'. + File: asymptote.info, Node: Subversion, Next: Uninstall, Prev: Editing modes, Up: Installation @@ -591,7 +611,7 @@ File: asymptote.info, Node: Subversion, Next: Uninstall, Prev: Editing modes, ==================== The following commands are needed to install the latest development -version of `Asymptote' using Subversion: +version of `Asymptote' using `Subversion': svn co http://asymptote.svn.sourceforge.net/svnroot/asymptote/trunk/asymptote cd asymptote ./autogen.sh @@ -621,86 +641,96 @@ File: asymptote.info, Node: Tutorial, Next: Drawing commands, Prev: Installat 3 Tutorial ********** -_An excellent user-written `Asymptote' tutorial is also available from_ +3.1 Drawing in batch mode +========================= - `http://www.artofproblemsolving.com/Wiki/index.php/Asymptote:_Basics' +To draw a line from coordinate (0,0) to coordinate (100,100), create a +text file `test.asy' containing -To draw a line from coordinate (0,0) to coordinate (100,100) using -`Asymptote''s interactive mode, type at the command prompt: -asy draw((0,0)--(100,100)); + Then execute the command +asy -V test + Alternatively, `MSDOS' users can drag and drop `test.asy' onto the +Desktop `asy' icon (or make `Asymptote' the default application for the +extension `asy'). +This method, known as _batch mode_, outputs a `PostScript' file +`test.eps'. The `-V' option opens up a `PostScript' viewer window so +you can immediately view the result: -The units here are `PostScript' "big points" (1 `bp' = 1/72 `inch'); -`--' means join with a linear segment. In `Asymptote' coordinates like -`(0,0)' and `(1000,100)' are called _pairs_. - - At this point you can type in further draw commands, which will be -added to the displayed figure, or type `quit' to exit interactive mode. -You can use the arrow keys in interactive mode to edit previous lines -(assuming that you have support for the GNU `readline' library -enabled). The tab key will automatically complete unambiguous words; -otherwise, hitting tab again will show the possible choices. Further -commands specific to interactive mode are described in *note -Interactive mode::. +The `--' connector joins the two points `(0,0)' and `(100,100)' with a +line segment. - In batch mode, `Asymptote' reads commands directly from a file. To -try this out, type +3.2 Drawing in interactive mode +=============================== +Another method is _interactive mode_, where `Asymptote' reads +individual commands as they are entered by the user. To try this out, +enter `Asymptote''s interactive mode by clicking on the `Asymptote' +icon or typing the command `asy'. Then type draw((0,0)--(100,100)); - into a file, say test.asy. Then execute this file with the `MSDOS' or -`UNIX' command -asy -V test - `MSDOS' users can drag and drop the file onto the Desktop `asy' icon -or make `Asymptote' the default application for files with the -extension `asy'. + followed by `Enter', to obtain the above image. At this point you can +type further `draw' commands, which will be added to the displayed +figure, `erase' to clear the canvas, +input test; + to execute all of the commands contained in the file `test.asy', or +`quit' to exit interactive mode. You can use the arrow keys in +interactive mode to edit previous lines. The tab key will +automatically complete unambiguous words; otherwise, hitting tab again +will show the possible choices. Further commands specific to +interactive mode are described in *note Interactive mode::. + +3.3 Figure size +=============== -The `-V' option opens up a `PostScript' viewer window so you can -immediately view the encapsulated `PostScript' output. By default the -output will be written to the file `test.eps'; the prefix of the output -file may be changed with the `-o' command-line option. +In `Asymptote', coordinates like `(0,0)' and `(100,100)', called +_pairs_, are expressed in `PostScript' "big points" (1 `bp' = 1/72 +`inch') and the default line width is `0.5bp'. However, it is often +inconvenient to work directly in `PostScript' coordinates. The next +example produces identical output to the previous example, by scaling +the line `(0,0)--(1,1)' to fit a rectangle of width `100.5 bp' and +height `100.5 bp' (the extra `0.5bp' accounts for the line width): +size(100.5,100.5); +draw((0,0)--(1,1)); - One can draw a line with more than two points and create a cyclic -path like this square: -draw((0,0)--(100,0)--(100,100)--(0,100)--cycle); +One can also specify the size in `pt' (1 `pt' = 1/72.27 `inch'), `cm', +`mm', or `inches'. Two nonzero size arguments (or a single size +argument) restrict the size in both directions, preserving the aspect +ratio. If 0 is given as a size argument, no restriction is made in +that direction; the overall scaling will be determined by the other +direction (*note size::): +size(0,100.5); +draw((0,0)--(2,1),Arrow); -It is often inconvenient to work directly with `PostScript' coordinates. -The next example draws a unit square scaled to width 101 bp and height -101 bp. The output is identical to that of the previous example. -size(101,101); -draw((0,0)--(1,0)--(1,1)--(0,1)--cycle); - For convenience, the path `(0,0)--(1,0)--(1,1)--(0,1)--cycle' may be -replaced with the predefined variable `unitsquare', or equivalently, -`box((0,0),(1,1))'. - One can also specify the size in `pt' (1 `pt' = 1/72.27 `inch'), -`cm', `mm', or `inches'. If 0 is given as a size argument, no -restriction is made in that direction; the overall scaling will be -determined by the other direction (*note size::): +To connect several points and create a cyclic path, use the `cycle' +keyword: -size(0,3cm); -draw(unitsquare); +size(100,100); +draw((0,0)--(1,0)--(1,1)--(0,1)--cycle); +For convenience, the path `(0,0)--(1,0)--(1,1)--(0,1)--cycle' may be +replaced with the predefined variable `unitsquare', or equivalently, +`box((0,0),(1,1))'. -To make the user coordinates represent multiples of exactly `1cm': + To make the user coordinates represent multiples of exactly `1cm': unitsize(1cm); draw(unitsquare); - One can also specify different x and y unit sizes: -unitsize(1cm,2cm); -draw(unitsquare); +3.4 Labels +========== - Adding labels is easy in `Asymptote'; one specifies the label as a +Adding labels is easy in `Asymptote'; one specifies the label as a double-quoted `LaTeX' string, a coordinate, and an optional alignment direction: -size(0,3cm); +size(3cm); draw(unitsquare); label("$A$",(0,0),SW); label("$B$",(1,0),SE); @@ -712,107 +742,32 @@ label("$D$",(0,1),NW); `Asymptote' uses the standard compass directions `E=(1,0)', `N=(0,1)', `NE=unit(N+E)', and `ENE=unit(E+NE)', etc., which along with the directions `up', `down', `right', and `left' are defined as pairs in -the `Asymptote' base module `plain'. A user who has a local variable +the `Asymptote' base module `plain' (a user who has a local variable named `E' may access the compass direction `E' by prefixing it with the -name of the module where it is defined: `plain.E'. +name of the module where it is defined: `plain.E'). - This example draws a path that approximates a quarter circle: +3.5 Paths +========= + +This example draws a path that approximates a quarter circle, +terminated with an arrowhead: size(100,0); -draw((1,0){up}..{left}(0,1)); +draw((1,0){up}..{left}(0,1),Arrow); +Here the directions `up' and `left' in braces specify the incoming and +outgoing directions at the points `(1,0)' and `(0,1)', respectively. -In general, a path is specified as a list of pairs (or other paths) + In general, a path is specified as a list of points (or other paths) interconnected with `--', which denotes a straight line segment, or -`..', which denotes a cubic spline. Specifying a final node `cycle' -creates a cyclic path that connects smoothly back to the initial node, -as in this approximation (accurate to within 0.06%) of a unit circle: +`..', which denotes a cubic spline (*note Bezier curves::). Specifying +a final `..cycle' creates a cyclic path that connects smoothly back to +the initial node, as in this approximation (accurate to within 0.06%) +of a unit circle: path unitcircle=E..N..W..S..cycle; - Each interior node of a cubic spline may be given a direction prefix -or suffix `{dir}': the direction of the pair `dir' specifies the -direction of the incoming or outgoing tangent, respectively, to the -curve at that node. Exterior nodes may be given direction specifiers -only on their interior side. - - A cubic spline between the node z_0, with postcontrol point c_0, and -the node z_1, with precontrol point c_1, is computed as the Bezier curve - - - -As illustrated in the diagram below, the third-order midpoint (m_5) -constructed from two endpoints z_0 and z_1 and two control points c_0 -and c_1, is the point corresponding to t=1/2 on the Bezier curve formed -by the quadruple (z_0, c_0, c_1, z_1). This allows one to recursively -construct the desired curve, by using the newly extracted third-order -midpoint as an endpoint and the respective second- and first-order -midpoints as control points: - - - -Here m_0, m_1 and m_2 are the first-order midpoints, m_3 and m_4 are -the second-order midpoints, and m_5 is the third-order midpoint. The -curve is then constructed by recursively applying the algorithm to -(z_0, m_0, m_3, m_5) and (m_5, m_4, m_2, z_1). - - In fact, an analogous property holds for points located at any -fraction t in [0,1] of each segment, not just for midpoints (t=1/2). - - The Bezier curve constructed in this manner has the following -properties: - * It is entirely contained in the convex hull of the given four - points. - - * It starts heading from the first endpoint to the first control - point and finishes heading from the second control point to the - second endpoint. - - - The user can specify explicit control points between two nodes like -this: -draw((0,0)..controls (0,100) and (100,100)..(100,0)); - - However, it is usually more convenient to just use the `..' -operator, which tells `Asymptote' to choose its own control points -using the algorithms described in Donald Knuth's monograph, The -MetaFontbook, Chapter 14. The user can still customize the guide (or -path) by specifying direction, tension, and curl values. - - The higher the tension, the straighter the curve is, and the more it -approximates a straight line. One can change the spline tension from -its default value of 1 to any real value greater than or equal to 0.75 -(cf. John D. Hobby, Discrete and Computational Geometry 1, 1986): -draw((100,0)..tension 2 ..(100,100)..(0,100)); -draw((100,0)..tension 2 and 1 ..(100,100)..(0,100)); -draw((100,0)..tension atleast 1 ..(100,100)..(0,100)); - - The curl parameter specifies the curvature at the endpoints of a path -(0 means straight; the default value of 1 means approximately circular): -draw((100,0){curl 0}..(100,100)..{curl 0}(0,100)); - - The `MetaPost ...' path connector, which requests, when possible, an -inflection-free curve confined to a triangle defined by the endpoints -and directions, is implemented in `Asymptote' as the convenient -abbreviation `::' for `..tension atleast 1 ..' (the ellipsis `...' is -used in `Asymptote' to indicate a variable number of arguments; *note -Rest arguments::). For example, compare - -draw((0,0){up}..(100,25){right}..(200,0){down}); - - -with - -draw((0,0){up}::(100,25){right}::(200,0){down}); - - - -The `---' connector is an abbreviation for `..tension atleast -infinity..' and the `&' connector concatenates two paths, after first -stripping off the last node of the first path (which normally should -coincide with the first node of the second path). - - An `Asymptote' path, being connected, is equivalent to a `Postscript +An `Asymptote' path, being connected, is equivalent to a `Postscript subpath'. The `^^' binary operator, which requests that the pen be moved (without drawing or affecting endpoint curvatures) from the final point of the left-hand path to the initial point of the right-hand @@ -834,8 +789,8 @@ orientation of the paths: filldraw(unitcircle^^reverse(g),yellow,black); The `^^' operator is used by the `box(triple, triple)' function in -`three.asy' to construct the edges of a cube `unitbox' without -retracing steps: +the module `three.asy' to construct the edges of a cube `unitbox' +without retracing steps (*note three::): import three; dotgranularity=0; // Render dots as spheres. @@ -858,12 +813,14 @@ label("(0,0,1)",(0,0,1),Z); See section *note graph:: (or the online `Asymptote' gallery and external links posted at `http://asymptote.sourceforge.net') for -further examples, including two and three-dimensional scientific -graphs. Additional examples have been posted by Philippe Ivaldi at -`http://piprim.tuxfamily.org/asymptote/'. +further examples, including two-dimensional and interactive +three-dimensional scientific graphs. Additional examples have been +posted by Philippe Ivaldi at `http://www.piprime.fr/asymptote'. A +user-written `Asymptote' tutorial is available at +http://www.artofproblemsolving.com/Wiki/index.php/Asymptote:_Basics -File: asymptote.info, Node: Drawing commands, Next: Programming, Prev: Tutorial, Up: Top +File: asymptote.info, Node: Drawing commands, Next: Bezier curves, Prev: Tutorial, Up: Top 4 Drawing commands ****************** @@ -935,12 +892,12 @@ arrowhead styles `DefaultHead', `SimpleHead', `HookHead', `TeXHead'), real `size' (arrowhead size in `PostScript' coordinates), real `angle' (arrowhead angle in degrees), filltype `filltype' (one of `FillDraw', `Fill', `NoFill', `UnFill', `Draw') and (except for `MidArrow' and -`Arrows') a relative real `position' along the path (an `arctime') where -the tip of the arrow should be placed. The default arrowhead size when -drawn with a pen `p' is `arrowsize(p)'. There are also arrow versions -with slightly modified default values of `size' and `angle' suitable for -curved arrows: `BeginArcArrow', `EndArcArrow' (or equivalently -`ArcArrow'), `MidArcArrow', and `ArcArrows'. +`Arrows') a real `position' (in the sense of `point(path p, real t)') +along the path where the tip of the arrow should be placed. The default +arrowhead size when drawn with a pen `p' is `arrowsize(p)'. There are +also arrow versions with slightly modified default values of `size' and +`angle' suitable for curved arrows: `BeginArcArrow', `EndArcArrow' (or +equivalently `ArcArrow'), `MidArcArrow', and `ArcArrows'. Margins can be used to shrink the visible portion of a path by `labelmargin(p)' to avoid overlap with other drawn objects. Typical @@ -1195,11 +1152,11 @@ Label should transform with the embedding picture: void label(picture pic=currentpicture, Label L, path g, align align=NoAlign, pen p=nullpen, filltype filltype=NoFill); By default the label will be positioned at the midpoint of the path. -An alternative label location (an `arctime' value between 0 and -`length(g)' *note arctime::) may be specified as real value for -`position' in constructing the Label. The position `Relative(real)' -specifies a location relative to the total arclength of the path. These -convenient abbreviations are predefined: +An alternative label position (in the sense of `point(path p, real t)') +may be specified as a real value for `position' in constructing the +Label. The position `Relative(real)' specifies a location relative to +the total arclength of the path. These convenient abbreviations are +predefined: position BeginPoint=Relative(0); position MidPoint=Relative(0.5); position EndPoint=Relative(1); @@ -1282,9 +1239,97 @@ label(graphic("logo."+nativeformat(),"height=7cm"),(0,-0.22)); clip(unitcircle^^(scale(2/11.7)*unitcircle),evenodd); -File: asymptote.info, Node: Programming, Next: LaTeX usage, Prev: Drawing commands, Up: Top +File: asymptote.info, Node: Bezier curves, Next: Programming, Prev: Drawing commands, Up: Top + +5 Bezier curves +*************** + +Each interior node of a cubic spline may be given a direction prefix or +suffix `{dir}': the direction of the pair `dir' specifies the direction +of the incoming or outgoing tangent, respectively, to the curve at that +node. Exterior nodes may be given direction specifiers only on their +interior side. + + A cubic spline between the node z_0, with postcontrol point c_0, and +the node z_1, with precontrol point c_1, is computed as the Bezier curve + + + +As illustrated in the diagram below, the third-order midpoint (m_5) +constructed from two endpoints z_0 and z_1 and two control points c_0 +and c_1, is the point corresponding to t=1/2 on the Bezier curve formed +by the quadruple (z_0, c_0, c_1, z_1). This allows one to recursively +construct the desired curve, by using the newly extracted third-order +midpoint as an endpoint and the respective second- and first-order +midpoints as control points: + + + +Here m_0, m_1 and m_2 are the first-order midpoints, m_3 and m_4 are +the second-order midpoints, and m_5 is the third-order midpoint. The +curve is then constructed by recursively applying the algorithm to +(z_0, m_0, m_3, m_5) and (m_5, m_4, m_2, z_1). + + In fact, an analogous property holds for points located at any +fraction t in [0,1] of each segment, not just for midpoints (t=1/2). + + The Bezier curve constructed in this manner has the following +properties: + * It is entirely contained in the convex hull of the given four + points. + + * It starts heading from the first endpoint to the first control + point and finishes heading from the second control point to the + second endpoint. + + + The user can specify explicit control points between two nodes like +this: +draw((0,0)..controls (0,100) and (100,100)..(100,0)); + + However, it is usually more convenient to just use the `..' +operator, which tells `Asymptote' to choose its own control points +using the algorithms described in Donald Knuth's monograph, The +MetaFontbook, Chapter 14. The user can still customize the guide (or +path) by specifying direction, tension, and curl values. + + The higher the tension, the straighter the curve is, and the more it +approximates a straight line. One can change the spline tension from +its default value of 1 to any real value greater than or equal to 0.75 +(cf. John D. Hobby, Discrete and Computational Geometry 1, 1986): +draw((100,0)..tension 2 ..(100,100)..(0,100)); +draw((100,0)..tension 2 and 1 ..(100,100)..(0,100)); +draw((100,0)..tension atleast 1 ..(100,100)..(0,100)); + + The curl parameter specifies the curvature at the endpoints of a path +(0 means straight; the default value of 1 means approximately circular): +draw((100,0){curl 0}..(100,100)..{curl 0}(0,100)); + + The `MetaPost ...' path connector, which requests, when possible, an +inflection-free curve confined to a triangle defined by the endpoints +and directions, is implemented in `Asymptote' as the convenient +abbreviation `::' for `..tension atleast 1 ..' (the ellipsis `...' is +used in `Asymptote' to indicate a variable number of arguments; *note +Rest arguments::). For example, compare + +draw((0,0){up}..(100,25){right}..(200,0){down}); + + +with + +draw((0,0){up}::(100,25){right}::(200,0){down}); + + + +The `---' connector is an abbreviation for `..tension atleast +infinity..' and the `&' connector concatenates two paths, after first +stripping off the last node of the first path (which normally should +coincide with the first node of the second path). + + +File: asymptote.info, Node: Programming, Next: LaTeX usage, Prev: Bezier curves, Up: Top -5 Programming +6 Programming ************* Here is a short introductory example to the `Asymptote' programming @@ -1343,7 +1388,7 @@ languages. File: asymptote.info, Node: Data types, Next: Paths and guides, Up: Programming -5.1 Data types +6.1 Data types ============== `Asymptote' supports the following data types (in addition to @@ -1601,7 +1646,7 @@ user-defined types): string pairs {`before',`after'} to the corresponding string `after'; - `string[] split(string s, string delimiter)' + `string[] split(string s, string delimiter=" ")' returns an array of strings obtained by splitting `s' into substrings delimited by `delimiter'; @@ -1686,7 +1731,7 @@ user-defined types): File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types, Up: Programming -5.2 Paths and guides +6.2 Paths and guides ==================== `path' @@ -1722,14 +1767,13 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types, path Arc(pair c, explicit pair z1, explicit pair z2, bool direction=CCW, int n=nCircle); - An ellipse can be drawn with the routine @cindex @code{ellipse} - path ellipse(pair c, real a, real b) + An ellipse can be drawn with the routine path ellipse(pair c, real a, real b) { return shift(c)*scale(a,b)*unitcircle; } This example illustrates the use of all five guide connectors - discussed in *note Tutorial::: size(300,0); + discussed in *note Tutorial:: and *note Bezier curves::: size(300,0); pair[] z=new pair[10]; z[0]=(0,100); z[1]=(50,0); z[2]=(180,0); @@ -1777,8 +1821,8 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types, `pair point(path p, real t);' This returns the coordinates of the point between node `floor(t)' and `floor(t)+1' corresponding to the cubic spline - parameter `t-floor(t)' (*note Bezier::). If `t' lies outside - the range [0,`length(p)'], it is first reduced modulo + parameter `t-floor(t)' (*note Bezier curves::). If `t' lies + outside the range [0,`length(p)'], it is first reduced modulo `length(p)' in the case where `p' is cyclic or else converted to the corresponding endpoint of `p'. @@ -1791,7 +1835,7 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types, `pair dir(path p, real t, bool normalize=true);' returns the direction of the tangent to path `p' at the point between node `floor(t)' and `floor(t)+1' corresponding to the - cubic spline parameter `t-floor(t)' (*note Bezier::). + cubic spline parameter `t-floor(t)' (*note Bezier curves::). `pair accel(path p, int t, int sign=0);' If `sign < 0', return the acceleration of the incoming path @@ -1802,7 +1846,7 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types, `pair accel(path p, real t);' returns the acceleration of the path `p' at the point `t'. - `pair radius(path p, real t);' + `real radius(path p, real t);' returns the radius of curvature of the path `p' at the point `t'. @@ -2088,7 +2132,7 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types, File: asymptote.info, Node: Pens, Next: Transforms, Prev: Paths and guides, Up: Programming -5.3 Pens +6.3 Pens ======== In `Asymptote', pens provide a context for the four basic drawing @@ -2197,8 +2241,9 @@ number, until it saturates with one or more color components equal to 1. The default line type is `solid'; this may be changed with - `defaultpen(pen)'. The line type of a pen is returned by `int - linetype(pen p=currentpen)'. + `defaultpen(pen)'. The line type of a pen can be determined with + the functions `string linetype(pen p=currentpen)', `real + offset(pen p)', `bool scale(pen p)', and `bool adjust(pen p)'. * The pen line width is specified in `PostScript' units with `pen linewidth(real)'. The default line width is 0.5 bp; this value may @@ -2441,7 +2486,7 @@ default attributes to their initial values. File: asymptote.info, Node: Transforms, Next: Frames and pictures, Prev: Pens, Up: Programming -5.4 Transforms +6.4 Transforms ============== `Asymptote' makes extensive use of affine transforms. A pair `(x,y)' is @@ -2499,7 +2544,7 @@ respectively. File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transforms, Up: Programming -5.5 Frames and pictures +6.5 Frames and pictures ======================= `frame' @@ -2583,7 +2628,7 @@ File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transform orientation orientation=orientation, string format="", bool wait=false, bool view=true, string options="", string script="", - projection P=currentprojection); + light light=currentlight, projection P=currentprojection) The default output format, `PostScript', may be changed with the `-f' or `-tex' command-line options. The `options', `script', and `projection' parameters are only relevant for 3D pictures. If @@ -2662,16 +2707,16 @@ File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transform For example, to draw a bounding box around a picture with a 0.25 cm margin and output the resulting frame, use the command: shipout(bbox(0.25cm)); - A `picture' may be fit to a frame with the background color of - pen `p' with the function `bbox(p,Fill)'. + A `picture' may be fit to a frame with the background color pen + `p', using the function `bbox(p,Fill)'. The functions pair min(picture pic, user=false); pair max(picture pic, user=false); pair size(picture pic, user=false); - calculate the `PostScript' bounds that picture `pic' would have - if it were currently fit to a frame using its default size - specification. If `user' is `false' the returned value is in - `PostScript' coordinates, otherwise it is in user coordinates. + calculate the bounds that picture `pic' would have if it were + currently fit to a frame using its default size specification. If + `user' is `false' the returned value is in `PostScript' + coordinates, otherwise it is in user coordinates. The function pair point(picture pic=currentpicture, pair dir, bool user=true); is a convenient way of determining the point on the bounding box @@ -2791,7 +2836,7 @@ File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transform File: asymptote.info, Node: Files, Next: Variable initializers, Prev: Frames and pictures, Up: Programming -5.6 Files +6.6 Files ========= `Asymptote' can read and write text files (including comma-separated @@ -2860,19 +2905,22 @@ write(fout,1); // Writes "1" write(fout); // Writes a new line write(fout,"List: ",1,2,3); // Writes "List: 1 2 3" A file may also be opened with `xinput' or `xoutput', instead of -`input' or `output', to read or write double precision (64-bit) real -values and single precision (32-bit) integer values in Sun -Microsystem's XDR (External Data Representation) portable binary format -(available on all `UNIX' platforms). A file may also be opened with -`binput' or `boutput' to read or write double precision values in the -native (nonportable) machine binary format. The function `file -single(file,0.0)' may be used to set a file to read single precision -real XDR or binary values; calling `file single(file,0.0,false)' sets -it back to read doubles again. The functions `file single(file,0)' and -`file single(file,0,false)' can be used to change the default integer -precision (single). The functions `file single(file)' and `file -single(file,false)' may be used to set the precision for both real and -integer values. +`input' or `output', to read or write double precision (64-bit) reals +and single precision (32-bit) integers in Sun Microsystem's XDR +(External Data Representation) portable binary format (available on all +`UNIX' platforms). Alternatively, a file may also be opened with +`binput' or `boutput' to read or write double precision reals and single +precision integers in the native (nonportable) machine binary format. +The virtual member functions `file singlereal(bool b=false)' and `file +singleint(bool b=true)' be used to change the precision of real and +integer I/O operations, respectively, for an XDR or binary file `f'. +Similarly, the function `file signedint(bool b=true)' can be used to +modify the signedness of integer reads and writes for an XDR or binary +file `f'. + + The virtual members `name', `mode', `singlereal', `singleint', and +`signedint' may be used to query the respective parameters for a given +file. One can test a file for end-of-file with the boolean function `eof(file)', end-of-line with `eol(file)', and for I/O errors with @@ -2942,13 +2990,13 @@ int animate(string args="", string file="", string format=""); call the `ImageMagick' commands `convert' and `animate', respectively, with the arguments `args' and the file name constructed from the strings `file' and `format'. If the setting `safe' is false, then the -function `int system(string s)' can be used to call the arbitrary system -command `s'. +functions `int system(string s)' and `int system(string[] s)' can be +used to call the arbitrary system command `s'. File: asymptote.info, Node: Variable initializers, Next: Structures, Prev: Files, Up: Programming -5.7 Variable initializers +6.7 Variable initializers ========================= A variable can be assigned a value when it is declared, as in `int @@ -3013,7 +3061,7 @@ sensible defaults for user-defined types. File: asymptote.info, Node: Structures, Next: Operators, Prev: Variable initializers, Up: Programming -5.8 Structures +6.8 Structures ============== Users may also define their own data types as structures, along with @@ -3202,8 +3250,9 @@ and the total system cputime followed by "S". Much like in C++, casting (*note Casts::) provides for an elegant implementation of structure inheritance, including virtual functions: struct parent { - real x=1; - void virtual(int) {write (0);} + real x; + void operator init(int x) {this.x=x;} + void virtual(int) {write(0);} void f() {virtual(1);} } @@ -3211,24 +3260,25 @@ void write(parent p) {write(p.x);} struct child { parent parent; - real y=2; - void virtual(int x) {write (x);} + real y=3; + void operator init(int x) {parent.operator init(x);} + void virtual(int x) {write(x);} parent.virtual=virtual; void f()=parent.f; } parent operator cast(child child) {return child.parent;} -parent p; -child c; +parent p=parent(1); +child c=child(2); -write(c); // Outputs 1; +write(c); // Outputs 2; p.f(); // Outputs 0; c.f(); // Outputs 1; -write(c.parent.x); // Outputs 1; -write(c.y); // Outputs 2; +write(c.parent.x); // Outputs 2; +write(c.y); // Outputs 3; For further examples of structures, see `Legend' and `picture' in the `Asymptote' base module `plain'. @@ -3236,7 +3286,7 @@ the `Asymptote' base module `plain'. File: asymptote.info, Node: Operators, Next: Implicit scaling, Prev: Structures, Up: Programming -5.9 Operators +6.9 Operators ============= * Menu: @@ -3248,7 +3298,7 @@ File: asymptote.info, Node: Operators, Next: Implicit scaling, Prev: Structur File: asymptote.info, Node: Arithmetic & logical, Next: Self & prefix operators, Up: Operators -5.9.1 Arithmetic & logical operators +6.9.1 Arithmetic & logical operators ------------------------------------ `Asymptote' uses the standard binary arithmetic operators. However, @@ -3331,7 +3381,7 @@ OR(int,int)', `int XOR(int,int)', and `int NOT(int)'. File: asymptote.info, Node: Self & prefix operators, Next: User-defined operators, Prev: Arithmetic & logical, Up: Operators -5.9.2 Self & prefix operators +6.9.2 Self & prefix operators ----------------------------- As in C, each of the arithmetic operators `+', `-', `*', `/', `%', and @@ -3356,7 +3406,7 @@ really needed, one can substitute the expressions `(++i-1)' and File: asymptote.info, Node: User-defined operators, Prev: Self & prefix operators, Up: Operators -5.9.3 User-defined operators +6.9.3 User-defined operators ---------------------------- The following symbols may be used with `operator' to define or redefine @@ -3390,7 +3440,7 @@ write("g=",g); File: asymptote.info, Node: Implicit scaling, Next: Functions, Prev: Operators, Up: Programming -5.10 Implicit scaling +6.10 Implicit scaling ===================== If a numeric literal is in front of certain types of expressions, then @@ -3427,7 +3477,7 @@ write(10cm); File: asymptote.info, Node: Functions, Next: Arrays, Prev: Implicit scaling, Up: Programming -5.11 Functions +6.11 Functions ============== `Asymptote' functions are treated as variables with a signature @@ -3527,7 +3577,7 @@ segmentation fault, unless a fully working version of the GNU library File: asymptote.info, Node: Default arguments, Next: Named arguments, Up: Functions -5.11.1 Default arguments +6.11.1 Default arguments ------------------------ `Asymptote' supports a more flexible mechanism for default function @@ -3546,7 +3596,7 @@ defined. File: asymptote.info, Node: Named arguments, Next: Rest arguments, Prev: Default arguments, Up: Functions -5.11.2 Named arguments +6.11.2 Named arguments ---------------------- It is sometimes difficult to remember the order in which arguments @@ -3601,7 +3651,7 @@ would be allowed. File: asymptote.info, Node: Rest arguments, Next: Mathematical functions, Prev: Named arguments, Up: Functions -5.11.3 Rest arguments +6.11.3 Rest arguments --------------------- Rest arguments allow one to write functions that take a variable number @@ -3681,7 +3731,7 @@ i(3,4); // ambiguous; the first candidate is better for the first argument, File: asymptote.info, Node: Mathematical functions, Prev: Rest arguments, Up: Functions -5.11.4 Mathematical functions +6.11.4 Mathematical functions ----------------------------- `Asymptote' has built-in versions of the standard `libm' mathematical @@ -3767,7 +3817,7 @@ write(Si(1.0)); File: asymptote.info, Node: Arrays, Next: Casts, Prev: Functions, Up: Programming -5.12 Arrays +6.12 Arrays =========== * Menu: @@ -3806,9 +3856,7 @@ The `copy' function listed below provides a deep copy of an array. Every array `A' of type `T[]' has the virtual members * `int length', - * `void cyclic(bool b)', - - * `bool cyclicflag', + * `int cyclic', * `int[] keys', @@ -3827,10 +3875,9 @@ The `copy' function listed below provides a deep copy of an array. * `bool initialized(int n)'. The member `A.length' evaluates to the length of the array. Setting -`A.cyclic(true)' signifies that array indices should be reduced modulo +`A.cyclic=true' signifies that array indices should be reduced modulo the current array length. Reading from or writing to a nonempty cyclic -array never leads to out-of-bounds errors or array resizing. The member -`A.cyclicflag' returns the current setting of the `cyclic' flag. +array never leads to out-of-bounds errors or array resizing. The member `A.keys' evaluates to an array of integers containing the indices of initialized entries in the array in ascending order. Hence, @@ -3847,9 +3894,9 @@ range [`i',`j'], shifting the position of all higher-indexed elements down. If no arguments are given, `A.delete()' provides a convenient way of deleting all elements of `A'. The routine `A.initialized(int n)' can be used to examine whether the element at index `n' is initialized. -Like all `Asymptote' functions, `cyclic', `push', `append', `pop', -`insert', `delete', and `initialized' can be "pulled off" of the array -and used on their own. For example, +Like all `Asymptote' functions, `push', `append', `pop', `insert', +`delete', and `initialized' can be "pulled off" of the array and used +on their own. For example, int[] A={1}; A.push(2); // A now contains {1,2}. A.append(A); // A now contains {1,2,1,2}. @@ -4111,28 +4158,29 @@ file fin=input("test.txt"); real[] A=fin; reads real values into `A' until the end-of-file is reached (or an I/O -error occurs). If line mode is set with `line(file)', then reading will -stop once the end of the line is reached instead (line mode may be -cleared with `line(file,false)'): +error occurs). + + The virtual members `dimension', `line', `csv', `word', and `read' +of a file are useful for reading arrays. For example, if line mode is +set with `file line(bool b=true)', then reading will stop once the end +of the line is reached instead file fin=input("test.txt"); -real[] A=line(fin); +real[] A=fin.line(); Since string reads by default read up to the end of line anyway, line mode normally has no effect on string array reads. However, there -is a white-space delimiter mode for reading strings, set with -`word(file)' and cleared with `word(file,false)', which causes string -reads to respect white-space delimiters, instead of the default -end-of-line delimiter: -file fin=word(line(input("test.txt"))); +is a white-space delimiter mode for reading strings, `file word(bool +b=true)', which causes string reads to respect white-space delimiters, +instead of the default end-of-line delimiter: +file fin=input("test.txt").line().word(); real[] A=fin; - Another useful mode is comma-separated-value mode, set with -`csv(file)' and cleared with `csv(file,false)', which causes reads to -respect comma delimiters: + Another useful mode is comma-separated-value mode, `file csv(bool +b=true)', which causes reads to respect comma delimiters: file fin=csv(input("test.txt")); real[] A=fin; - To restrict the number of values read, use the `dimension(file,int)' + To restrict the number of values read, use the `file dimension(int)' function: file fin=input("test.txt"); real[] A=dimension(fin,10); @@ -4146,17 +4194,18 @@ end-of-file (or end-of-line in line mode) is encountered. Two- and three-dimensional arrays of the basic data types can be read in like this: file fin=input("test.txt"); -real[][] A=dimension(fin,2,3); -real[][][] B=dimension(fin,2,3,4); +real[][] A=fin.dimension(2,3); +real[][][] B=fin.dimension(2,3,4); Again, an integer limit of zero means no restriction. Sometimes the array dimensions are stored with the data as integer -fields at the beginning of an array. Such arrays can be read in with the -functions `read1', `read2', and `read3', respectively: +fields at the beginning of an array. Such 1, 2, or 3 dimensional arrays +can be read in with the virtual member functions `read(1)', `read(2)', +or `read(3)', respectively: file fin=input("test.txt"); -real[] A=read1(fin); -real[][] B=read2(fin); -real[][][] C=read3(fin); +real[] A=fin.read(1); +real[][] B=fin.read(2); +real[][][] C=fin.read(3); One, two, and three-dimensional arrays of the basic data types can be output with the functions `write(file,T[])', `write(file,T[][])', @@ -4165,7 +4214,7 @@ output with the functions `write(file,T[])', `write(file,T[][])', File: asymptote.info, Node: Slices, Up: Arrays -5.12.1 Slices +6.12.1 Slices ------------- Asymptote allows a section of an array to be addressed as a slice using @@ -4197,7 +4246,7 @@ beyond the length of the array are allowed. The indices simply wrap around. For example: int[] x={0,1,2,3,4,5,6,7,8,9}; -x.cyclic(true); +x.cyclic=true; int[] y=x[8:15]; // y={8,9,0,1,2,3,4}. int[] z=x[-5:5]; // z={5,6,7,8,9,0,1,2,3,4} int[] w=x[-3:17]; // w={7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6} @@ -4253,7 +4302,7 @@ any of the cells. File: asymptote.info, Node: Casts, Next: Import, Prev: Arrays, Up: Programming -5.13 Casts +6.13 Casts ========== `Asymptote' implicitly casts `int' to `real', `int' to `pair', `real' @@ -4313,7 +4362,7 @@ real operator cast(int x)=convert; File: asymptote.info, Node: Import, Next: Static, Prev: Casts, Up: Programming -5.14 Import +6.14 Import =========== While `Asymptote' provides many features by default, some applications @@ -4455,7 +4504,7 @@ is `true'. File: asymptote.info, Node: Static, Prev: Import, Up: Programming -5.15 Static +6.15 Static =========== Static qualifiers allocate the memory address of a variable in a higher @@ -4568,7 +4617,7 @@ the variable actually possesses. File: asymptote.info, Node: LaTeX usage, Next: Base modules, Prev: Programming, Up: Top -6 `LaTeX' usage +7 `LaTeX' usage *************** `Asymptote' comes with a convenient `LaTeX' style file `asymptote.sty' @@ -4599,7 +4648,7 @@ remove the files `latexusage-*', `latexusage_.pre', and One can specify `width', `height', `viewportwidth', `viewportheight', and `attach' `keyval'-style options to the `asy' -environment. The current version (1.07) of `asymptote.sty' supports the +environment. The current version (1.10) of `asymptote.sty' supports the embedding of 3D PRC files, either inline or, using the `attach' option with the `attachfile2' (or older `attachfile') `LaTeX' package, as annotated (but printable) attachments. For many applications, the @@ -4711,7 +4760,7 @@ the \verb+{attach=true}+ option: import three; currentprojection=orthographic(5,4,2); draw(unitcube,blue); -label("$V-E+F=2$",(0,1,0.5),3Y,blue+fontsize(17)); +label("$V-E+F=2$",(0,1,0.5),3Y,blue+fontsize(17pt)); \end{asy} \end{center} @@ -4728,7 +4777,7 @@ dot(z1,red+0.15cm); dot(z2,darkgreen+0.3cm); label("$m$",z1,1.2N,red); label("$M$",z2,1.5N,darkgreen); -label("$\hat{\ }$",zf,0.2*S,fontsize(24)+blue); +label("$\hat{\ }$",zf,0.2*S,fontsize(24pt)+blue); pair s=-0.2*I; draw("$x$",z0+s--z1+s,N,red,Arrows,Bars,PenMargins); @@ -4743,7 +4792,7 @@ draw("$X$",z0+s--z2+s,darkgreen,Arrows,Bars,PenMargins); File: asymptote.info, Node: Base modules, Next: Options, Prev: LaTeX usage, Up: Top -7 Base modules +8 Base modules ************** `Asymptote' currently ships with the following base modules: @@ -4793,7 +4842,7 @@ File: asymptote.info, Node: Base modules, Next: Options, Prev: LaTeX usage, File: asymptote.info, Node: plain, Next: simplex, Up: Base modules -7.1 `plain' +8.1 `plain' =========== This is the default `Asymptote' base file, which defines key parts of @@ -4810,7 +4859,7 @@ this feature. File: asymptote.info, Node: simplex, Next: math, Prev: plain, Up: Base modules -7.2 `simplex' +8.2 `simplex' ============= This package solves the two-variable linear programming problem using @@ -4820,11 +4869,11 @@ sizing of pictures. File: asymptote.info, Node: math, Next: interpolate, Prev: simplex, Up: Base modules -7.3 `math' +8.3 `math' ========== This package extends `Asymptote''s mathematical capabilities with -intersection algorithms and matrix arithmetic: +matrix arithmetic and intersection algorithms: `void drawline(picture pic=currentpicture, pair P, pair Q, pen p=currentpen);' draw the visible portion of the (infinite) line going through `P' @@ -4847,7 +4896,7 @@ intersection algorithms and matrix arithmetic: File: asymptote.info, Node: interpolate, Next: geometry, Prev: math, Up: Base modules -7.4 `interpolate' +8.4 `interpolate' ================= This module implements Lagrange, Hermite, and standard cubic spline @@ -4857,7 +4906,7 @@ interpolation in `Asymptote', as illustrated in the example File: asymptote.info, Node: geometry, Next: trembling, Prev: interpolate, Up: Base modules -7.5 `geometry' +8.5 `geometry' ============== This module, written by Philippe Ivaldi, provides an extensive set of @@ -4865,26 +4914,25 @@ geometry routines, including `perpendicular' symbols and a `triangle' structure. Link to the documentation for the `geometry' module are posted here: `http://asymptote.sourceforge.net/links.html', including an extensive set of examples, -`http://piprim.tuxfamily.org/asymptote/geometry/index.html', and an -index: +`http://www.piprime.fr/files/asymptote/geometry/', and an index: - `http://piprim.tuxfamily.org/asymptote/geometry/modules/geometry.asy.index.type.html' + `http://www.piprime.fr/files/asymptote/geometry/modules/geometry.asy.index.type.html' File: asymptote.info, Node: trembling, Next: stats, Prev: geometry, Up: Base modules -7.6 `trembling' +8.6 `trembling' =============== This module, written by Philippe Ivaldi and illustrated in the example `floatingdisk.asy', allows one to draw wavy lines, as if drawn by hand. Further examples are posted at -`http://piprim.tuxfamily.org/asymptote/trembling/index.html' +`http://www.piprime.fr/files/asymptote/trembling/' File: asymptote.info, Node: stats, Next: patterns, Prev: trembling, Up: Base modules -7.7 `stats' +8.7 `stats' =========== This package implements a Gaussian random number generator and a @@ -4894,7 +4942,7 @@ collection of statistics routines, including `histogram' and File: asymptote.info, Node: patterns, Next: markers, Prev: stats, Up: Base modules -7.8 `patterns' +8.8 `patterns' ============== This package implements `Postscript' tiling patterns and includes @@ -4903,7 +4951,7 @@ several convenient pattern generation routines. File: asymptote.info, Node: markers, Next: tree, Prev: patterns, Up: Base modules -7.9 `markers' +8.9 `markers' ============= This package implements specialized routines for marking paths and @@ -4952,7 +5000,7 @@ void markangle(picture pic=currentpicture, Label L="", File: asymptote.info, Node: tree, Next: binarytree, Prev: markers, Up: Base modules -7.10 `tree' +8.10 `tree' =========== This package implements an example of a dynamic binary search tree. @@ -4960,7 +5008,7 @@ This package implements an example of a dynamic binary search tree. File: asymptote.info, Node: binarytree, Next: drawtree, Prev: tree, Up: Base modules -7.11 `binarytree' +8.11 `binarytree' ================= This module can be used to draw an arbitrary binary tree and includes an @@ -4985,7 +5033,7 @@ add(pic2.fit(),(0,0),10S); File: asymptote.info, Node: drawtree, Next: syzygy, Prev: binarytree, Up: Base modules -7.12 `drawtree' +8.12 `drawtree' =============== This is a simple tree drawing module used by the example `treetest.asy'. @@ -4993,7 +5041,7 @@ This is a simple tree drawing module used by the example `treetest.asy'. File: asymptote.info, Node: syzygy, Next: feynman, Prev: drawtree, Up: Base modules -7.13 `syzygy' +8.13 `syzygy' ============= This module automates the drawing of braids, relations, and syzygies, @@ -5003,7 +5051,7 @@ along with the corresponding equations, as illustrated in the example File: asymptote.info, Node: feynman, Next: roundedpath, Prev: syzygy, Up: Base modules -7.14 `feynman' +8.14 `feynman' ============== This package, contributed by Martin Wiebusch, is useful for drawing @@ -5013,7 +5061,7 @@ Feynman diagrams, as illustrated by the examples `eetomumu.asy' and File: asymptote.info, Node: roundedpath, Next: animation, Prev: feynman, Up: Base modules -7.15 `roundedpath' +8.15 `roundedpath' ================== This package, contributed by Stefan Knorr, is useful for rounding the @@ -5023,14 +5071,14 @@ sharp corners of paths, as illustrated in the example file File: asymptote.info, Node: animation, Next: embed, Prev: roundedpath, Up: Base modules -7.16 `animation' +8.16 `animation' ================ This module allows one to generate animations, as illustrated by the files `wheel.asy', `wavelet.asy', and `cube.asy' in the `animations' subdirectory of the examples directory. These animations use the -`ImageMagick' `convert' program to `merge' multiple images into a GIF -or MPEG movie. +`ImageMagick' `convert' program to merge multiple images into a GIF or +MPEG movie. The related `animate' module, derived from the `animation' module, generates higher-quality portable clickable PDF movies, with optional @@ -5057,7 +5105,7 @@ as described here: File: asymptote.info, Node: embed, Next: slide, Prev: animation, Up: Base modules -7.17 `embed' +8.17 `embed' ============ This module provides an interface to the `LaTeX' package (included with @@ -5100,7 +5148,7 @@ animation (*note animate::). File: asymptote.info, Node: slide, Next: MetaPost, Prev: embed, Up: Base modules -7.18 `slide' +8.18 `slide' ============ This package provides a simple yet high-quality facility for making @@ -5111,7 +5159,7 @@ the file `slidemovies.asy'). A simple example is provided in the file File: asymptote.info, Node: MetaPost, Next: unicode, Prev: slide, Up: Base modules -7.19 `MetaPost' +8.19 `MetaPost' =============== This package provides some useful routines to help `MetaPost' users @@ -5129,7 +5177,7 @@ equation solver `solve' instead. File: asymptote.info, Node: unicode, Next: latin1, Prev: MetaPost, Up: Base modules -7.20 `unicode' +8.20 `unicode' ============== Import this package at the beginning of the file to instruct `LaTeX' to @@ -5152,7 +5200,7 @@ texpreamble("\usepackage{CJK} File: asymptote.info, Node: latin1, Next: babel, Prev: unicode, Up: Base modules -7.21 `latin1' +8.21 `latin1' ============= If you don't have `LaTeX' support for `unicode' installed, you can @@ -5163,7 +5211,7 @@ providing support for other ISO 8859 alphabets. File: asymptote.info, Node: babel, Next: labelpath, Prev: latin1, Up: Base modules -7.22 `babel' +8.22 `babel' ============ This module implements the `LaTeX' `babel' package in `Asymptote'. For @@ -5174,7 +5222,7 @@ babel("german"); File: asymptote.info, Node: labelpath, Next: labelpath3, Prev: babel, Up: Base modules -7.23 `labelpath' +8.23 `labelpath' ================ This module uses the `PSTricks' `pstextpath' macro to fit labels along @@ -5193,7 +5241,7 @@ macro. File: asymptote.info, Node: labelpath3, Next: annotate, Prev: labelpath, Up: Base modules -7.24 `labelpath3' +8.24 `labelpath3' ================= This module, contributed by Jens Schwaiger, implements a 3D version of @@ -5203,7 +5251,7 @@ is provided in `curvedlabel3.asy'. File: asymptote.info, Node: annotate, Next: CAD, Prev: labelpath3, Up: Base modules -7.25 `annotate' +8.25 `annotate' =============== This module supports PDF annotations for viewing with `Adobe Reader', @@ -5217,7 +5265,7 @@ and `tex' TeX engines. File: asymptote.info, Node: CAD, Next: graph, Prev: annotate, Up: Base modules -7.26 `CAD' +8.26 `CAD' ========== This package, contributed by Mark Henning, provides basic pen @@ -5227,7 +5275,7 @@ according to DIN 15. It is documented separately, in the file `CAD.pdf'. File: asymptote.info, Node: graph, Next: palette, Prev: CAD, Up: Base modules -7.27 `graph' +8.27 `graph' ============ This package implements two-dimensional linear and logarithmic graphs, @@ -5253,7 +5301,7 @@ following routines: * `default', the point is added to a new guide; * `false', the point is omitted and a new guide is begun. - Th points are connected using the interpolation specified by + The points are connected using the interpolation specified by `join': * `operator --' (linear interpolation; the abbreviation `Straight' is also accepted); @@ -5339,9 +5387,9 @@ following routines: corresponding axis limit will be automatically determined from the picture limits. The optional `arrow' argument takes the same values as in the `draw' command (*note arrows::). The axis is - drawn before any existing objects in the current picture unless - `above=true'. The axis placement is determined by one of the - following `axis' types: + drawn before any existing objects in `pic' unless `above=true'. + The axis placement is determined by one of the following `axis' + types: `YZero(bool extend=true)' Request an x axis at y=0 (or y=1 on a logarithmic axis) @@ -5485,9 +5533,9 @@ following routines: corresponding axis limit will be automatically determined from the picture limits. The optional `arrow' argument takes the same values as in the `draw' command (*note arrows::). The axis is - drawn before any existing objects in the current picture unless - `above=true'. The tick type is specified by `ticks' and the axis - placement is determined by one of the following `axis' types: + drawn before any existing objects in `pic' unless `above=true'. + The tick type is specified by `ticks' and the axis placement is + determined by one of the following `axis' types: `XZero(bool extend=true)' Request a y axis at x=0 (or x=1 on a logarithmic axis) @@ -5527,7 +5575,7 @@ following routines: This convenience routine draws both x and y axes on picture `pic' from `min' to `max', with optional labels `xlabel' and `ylabel' and any arrows specified by `arrow'. The axes are drawn on top of - existing objects in the current picture only if `above=true'. + existing objects in `pic' only if `above=true'. * void axis(picture pic=currentpicture, Label L="", path g, pen p=currentpen, ticks ticks, ticklocate locate, @@ -5542,8 +5590,8 @@ following routines: uncrowded tick labels. A `true' value for the flag `opposite' identifies an unlabelled secondary axis (typically drawn opposite a primary axis). The axis is drawn before any existing objects in - the current picture unless `above=true'. The tick locator - `ticklocate' is constructed by the routine ticklocate ticklocate(real a, real b, autoscaleT S=defaultS, + `pic' unless `above=true'. The tick locator `ticklocate' is + constructed by the routine ticklocate ticklocate(real a, real b, autoscaleT S=defaultS, real tickmin=-infinity, real tickmax=infinity, real time(real)=null, pair dir(real)=zero); where `a' and `b' specify the respective tick values at @@ -5676,7 +5724,7 @@ following routines: xaxis("$x$",BottomTop,LeftTicks); yaxis("$y$",LeftRight, - RightTicks(Label(fontsize(8)),new real[]{0,4,9})); + RightTicks(Label(fontsize(8pt)),new real[]{0,4,9})); @@ -5684,8 +5732,8 @@ following routines: size(200,150,IgnoreAspect); - file in=line(input("filegraph.dat")); - real[][] a=dimension(in,0,0); + file in=input("filegraph.dat").line(); + real[][] a=in.dimension(0,0); a=transpose(a); real[] x=a[0]; @@ -5938,8 +5986,8 @@ following routines: draw(graph(f,0.1,10)); - //xlimits(1,10); - //ylimits(0.1,1); + //xlimits(1,10,Crop); + //ylimits(0.1,1,Crop); dot(Label("(3,5)",align=S),Scale((3,5))); @@ -6065,12 +6113,12 @@ following routines: size(9cm,6cm,IgnoreAspect); string data="secondaryaxis.csv"; - file in=line(csv(input(data))); + file in=input(data).line().csv(); string[] titlelabel=in; string[] columnlabel=in; - real[][] a=dimension(in,0,0); + real[][] a=in.dimension(0,0); a=transpose(a); real[] t=a[0], susceptible=a[1], infectious=a[2], dead=a[3], larvae=a[4]; real[] susceptibleM=a[5], exposed=a[6],infectiousM=a[7]; @@ -6121,9 +6169,9 @@ following routines: import graph; import stats; - file fin=line(input("leastsquares.dat")); + file fin=input("leastsquares.dat").line(); - real[][] a=dimension(fin,0,0); + real[][] a=fin.dimension(0,0); a=transpose(a); real[] t=a[0], rho=a[1]; @@ -6251,7 +6299,7 @@ following routines: File: asymptote.info, Node: palette, Next: three, Prev: graph, Up: Base modules -7.28 `palette' +8.28 `palette' ============== `Asymptote' can also generate color density images and palettes. The @@ -6423,7 +6471,7 @@ pen[][] palette(real[][] f, pen[] palette); File: asymptote.info, Node: three, Next: obj, Prev: palette, Up: Base modules -7.29 `three' +8.29 `three' ============ This module fully extends the notion of guides and paths in `Asymptote' @@ -6473,16 +6521,17 @@ containing an array of Bezier patches. Surfaces may drawn with one of the routines void draw(picture pic=currentpicture, surface s, int nu=1, int nv=1, material surfacepen=currentpen, pen meshpen=nullpen, - light light=currentlight, light meshlight=light); + light light=currentlight, light meshlight=light, string name=""); void draw(picture pic=currentpicture, surface s, int nu=1, int nv=1, material[] surfacepen, pen meshpen, - light light=currentlight, light meshlight=light); + light light=currentlight, light meshlight=light, string name=""); void draw(picture pic=currentpicture, surface s, int nu=1, int nv=1, material[] surfacepen, pen[] meshpen=nullpens, - light light=currentlight, light meshlight=light); + light light=currentlight, light meshlight=light, string name=""); The parameters `nu' and `nv' specify the number of subdivisions for -drawing optional mesh lines for each Bezier patch. Here material is a -structure defined in `three_light.asy': +drawing optional mesh lines for each Bezier patch. The optional `name' +parameter is used as a prefix for naming the surface patches in the PRC +model tree. Here material is a structure defined in `three_light.asy': struct material { pen[] p; // diffusepen,ambientpen,emissivepen,specularpen real opacity; @@ -6526,13 +6575,15 @@ length `4' or less. Arbitrary thick three-dimensional curves and line caps (which the `OpenGL' standard does not require implementations to provide) are -constructed with the routine -surface tube(path3 g, real width); - which returns a tube of diameter `width' centered on `g'. This can -make files slow to render, especially with the `Adobe Reader' renderer. -The setting `thick=false' can be used to disable this feature and force -all lines to be drawn with `linewidth(0)' (one pixel wide, regardless -of the resolution). By default mesh and contour lines in +constructed with +tube tube(path3 p, real width, real granularity=tubegranularity); + this returns a tube structure representing a tube of diameter `width' +centered approximately on `g'. The tube structure consists of a surface +`s' and the actual tube center, path3 `center'. Drawing thick lines as +tubes can be slow to render, especially with the `Adobe Reader' +renderer. The setting `thick=false' can be used to disable this feature +and force all lines to be drawn with `linewidth(0)' (one pixel wide, +regardless of the resolution). By default, mesh and contour lines in three-dimensions are always drawn thin, unless an explicit line width is given in the pen parameter or the setting `thin' is set to `false'. The pens `thin()' and `thick()' defined in plain_pens.asy can also be @@ -6549,26 +6600,38 @@ There are four choices for viewing 3D `Asymptote' output: sample width can be controlled with the setting `multisample'. An initial screen position can be specified with the pair setting `position', where negative values are interpreted as relative to - the corresponding maximum screen dimension. The mouse bindings are: + the corresponding maximum screen dimension. The default settings import settings; + leftbutton=new string[] {"rotate","zoom","shift","pan"}; + middlebutton=new string[] {"menu"}; + rightbutton=new string[] {"zoom/menu","rotateX","rotateY","rotateZ"}; + wheelup=new string[] {"zoomin"}; + wheeldown=new string[] {"zoomout"}; + bind the mouse buttons as follows: * Left: rotate - * shift Left: zoom + * Shift Left: zoom + + * Ctrl Left: shift viewport - * ctrl Left: shift + * Alt Left: pan - * Middle: menu + * Middle: menu (must be unmodified; ignores Shift, Ctrl, and + Alt) - * Wheel: zoom + * Wheel Up: zoom in - * Right: zoom + * Wheel Down: zoom out + + * Right: zoom/menu (must be unmodified) * Right double click: menu - * shift Right: rotate about the X axis + * Shift Right: rotate about the X axis + + * Ctrl Right: rotate about the Y axis - * ctrl Right: rotate about the Y axis + * Alt Right: rotate about the Z axis - * alt Right: rotate about the Z axis The keyboard shortcuts are: * h: home @@ -6588,14 +6651,24 @@ There are four choices for viewing 3D `Asymptote' output: * c: show camera parameters + * p: play animation + + * r: reverse animation + + * : step animation + * +: expand * =: expand + * >: expand + * -: shrink * _: shrink + * <: shrink + * q: exit * Ctrl-q: exit @@ -6614,8 +6687,9 @@ There are four choices for viewing 3D `Asymptote' output: restricts the maximum width and height of the viewport. On `UNIX' systems some graphics drivers support batch mode (`-noV') rendering in an iconified window; this can be enabled with the - setting `iconify=true'. Other `UNIX' graphics drivers may require - the command line setting `-glOptions=-indirect'. + setting `iconify=true'. Some (broken) `UNIX' graphics drivers may + require the command line setting `-glOptions=-indirect', which + requests (slower) indirect rendering. 3. Embed the 3D PRC format in a PDF file and view the resulting PDF file with version `8.0' or later of `Adobe Reader'. In addition @@ -6700,7 +6774,7 @@ surfaces `unitdisk', `unitplane', `unitcube', `unitcylinder', These projections to two dimensions are predefined: `oblique' -`oblique(real angle);' +`oblique(real angle)' The point `(x,y,z)' is projected to `(x-0.5z,y-0.5z)'. If an optional real argument is given, the negative z axis is drawn at this angle in degrees. The projection `obliqueZ' is a synonym for @@ -6721,7 +6795,8 @@ These projections to two dimensions are predefined: this angle in degrees. `orthographic(triple camera, triple up=Z, triple target=O, - bool showtarget=true, bool center=false)' + real zoom=1, pair viewportshift=0, bool showtarget=true, + bool center=false)' This projects from three to two dimensions using the view as seen at a point infinitely far away in the direction `unit(camera)', orienting the camera so that, if possible, the vector `up' points @@ -6731,11 +6806,12 @@ These projections to two dimensions are predefined: to the center of the bounding volume. `orthographic(real x, real y, real z, triple up=Z, triple target=O, - bool showtarget=true, bool center=false)' - This is equivalent to - `orthographic((x,y,z),up,target,showtarget,center)'. + real zoom=1, pair viewportshift=0, bool showtarget=true, + bool center=false)' + This is equivalent to orthographic((x,y,z),up,target,zoom,viewportshift,showtarget,center) `perspective(triple camera, triple up=Z, triple target=O, + real zoom=1, real angle=0, pair viewportshift=0, bool showtarget=true, bool autoadjust=true, bool center=autoadjust)' This projects from three to two dimensions, taking account of @@ -6752,10 +6828,11 @@ These projections to two dimensions are predefined: bounding volume. `perspective(real x, real y, real z, triple up=Z, triple target=O, + real zoom=1, real angle=0, pair viewportshift=0, bool showtarget=true, bool autoadjust=true, bool center=autoadjust)' - This is equivalent to `perspective((x,y,z),up,target,showtarget, - autoadjust,center)'. + This is equivalent to perspective((x,y,z),up,target,zoom,angle,viewportshift,showtarget, + autoadjust,center) The default projection, `currentprojection', is initially set to `perspective(5,4,2)'. @@ -6973,7 +7050,7 @@ add(faces); File: asymptote.info, Node: obj, Next: graph3, Prev: three, Up: Base modules -7.30 `obj' +8.30 `obj' ========== This module allows one to construct surfaces from simple obj files, as @@ -6982,7 +7059,7 @@ illustrated in the example files `galleon.asy' and `triceratops.asy'. File: asymptote.info, Node: graph3, Next: grid3, Prev: obj, Up: Base modules -7.31 `graph3' +8.31 `graph3' ============= This module implements three-dimensional versions of the functions in @@ -7038,9 +7115,9 @@ draw(p,Arrow3); scale(true); -xaxis3(XZ()*"$x$",Bounds(),red,InTicks(Label,2,2)); -yaxis3(YZ()*"$y$",Bounds(),red,InTicks(beginlabel=false,Label,2,2)); -zaxis3(XZ()*"$z$",Bounds(),red,InTicks); +xaxis3(XZ()*"$x$",Bounds,red,InTicks(Label,2,2)); +yaxis3(YZ()*"$y$",Bounds,red,InTicks(beginlabel=false,Label,2,2)); +zaxis3(XZ()*"$z$",Bounds,red,InTicks); @@ -7093,6 +7170,9 @@ surface surface(real f(pair z), pair a, pair b, int nx=nmesh, int ny=nx, surface surface(real f(pair z), pair a, pair b, int nx=nmesh, int ny=nx, splinetype xsplinetype, splinetype ysplinetype=xsplinetype, bool cond(pair z)=null); +surface surface(triple f(pair z), real[] u, real[] v, + splinetype[] usplinetype, splinetype[] vsplinetype=Spline, + bool cond(pair z)=null); surface surface(triple f(pair z), pair a, pair b, int nu=nmesh, int nv=nu, bool cond(pair z)=null); surface surface(triple f(pair z), pair a, pair b, int nu=nmesh, int nv=nu, @@ -7147,12 +7227,12 @@ picture vectorfield(path3 vector(pair v), triple f(pair z), pair a, pair b, File: asymptote.info, Node: grid3, Next: solids, Prev: graph3, Up: Base modules -7.32 `grid3' +8.32 `grid3' ============ This module, contributed by Philippe Ivaldi, can be used for drawing 3D grids. Here is an example (further examples can be found in `grid3.asy' -and at `http://piprim.tuxfamily.org/asymptote/grid3/'): +and at `http://www.piprime.fr/files/asymptote/grid3/'): import grid3; @@ -7176,7 +7256,7 @@ zaxis3(Label("$z$",position=EndPoint,align=(-1,0.5)),Bounds(Min,Min), File: asymptote.info, Node: solids, Next: tube, Prev: grid3, Up: Base modules -7.33 `solids' +8.33 `solids' ============= This solid geometry package defines a structure `revolution' that can @@ -7212,12 +7292,12 @@ struct skeleton { File: asymptote.info, Node: tube, Next: flowchart, Prev: solids, Up: Base modules -7.34 `tube' +8.34 `tube' =========== -This package extends the routine `tube' defined in `three_arrows.asy' -to arbitrary cross sections, colors, and spine transformations. The -routine +This package extends the `tube' surfaces constructed in +`three_arrows.asy' to arbitrary cross sections, colors, and spine +transformations. The routine surface tube(path3 g, coloredpath section, transform T(real)=new transform(real t) {return identity();}, real corner=1, real relstep=0); @@ -7258,12 +7338,12 @@ default shading behavior for a surface. An example of `tube' is provided in the file `trefoilknot.asy'. Further examples can be found at -`http://piprim.tuxfamily.org/asymptote/tube/'. +`http://www.piprime.fr/files/asymptote/tube/'. File: asymptote.info, Node: flowchart, Next: contour, Prev: tube, Up: Base modules -7.35 `flowchart' +8.35 `flowchart' ================ This package provides routines for drawing flowcharts. The primary @@ -7378,7 +7458,7 @@ add(new void(picture pic, transform t) { File: asymptote.info, Node: contour, Next: contour3, Prev: flowchart, Up: Base modules -7.36 `contour' +8.36 `contour' ============== This package draws contour lines. To construct contours corresponding @@ -7441,7 +7521,7 @@ real[] c=new real[n]; for(int i=0; i < n; ++i) c[i]=(i-n/2)/n; pen[] p=sequence(new pen(int i) { - return (c[i] >= 0 ? solid : dashed)+fontsize(6); + return (c[i] >= 0 ? solid : dashed)+fontsize(6pt); },c.length); Label[] Labels=sequence(new Label(int i) { @@ -7561,7 +7641,7 @@ Shewchuk. File: asymptote.info, Node: contour3, Next: slopefield, Prev: contour, Up: Base modules -7.37 `contour3' +8.37 `contour3' =============== This package draws surfaces described as the null space of real-valued @@ -7571,7 +7651,7 @@ in the example file `magnetic.asy'. File: asymptote.info, Node: slopefield, Next: ode, Prev: contour3, Up: Base modules -7.38 `slopefield' +8.38 `slopefield' ================= To draw a slope field for the differential equation dy/dx=f(x,y) (or @@ -7611,7 +7691,7 @@ draw(curve((0,0),func,(-3,-3),(3,3)),red); File: asymptote.info, Node: ode, Prev: slopefield, Up: Base modules -7.39 `ode' +8.39 `ode' ========== The `ode' module, illustrated in the example `odetest.asy', implements @@ -7621,8 +7701,8 @@ differential equations. File: asymptote.info, Node: Options, Next: Interactive mode, Prev: Base modules, Up: Top -8 Options -********* +9 Command-line options +********************** Type `asy -h' to see the full list of command-line options supported by `Asymptote': @@ -7632,11 +7712,14 @@ Usage: ../asy [options] [file ...] Options (negate by replacing - with -no): -V,-View View output; command-line only --a,-align C|B|T|Z Center, Bottom, Top, or Zero page alignment [Center] +-a,-align C|B|T|Z Center, Bottom, Top, or Zero page alignment [C] -antialias n Antialiasing width for rasterized output [2] +-arcballradius pixels Arcball radius [750] -auto3D Automatically activate 3D scene [true] +-autobillboard 3D labels always face viewer by default [true] -autoimport string Module to automatically import -autoplain Enable automatic importing of plain [true] +-autoplay Autoplay 3D animations [false] -autorotate Enable automatic PDF page rotation [false] -batchMask Mask fpu exceptions in batch mode [false] -batchView View output in batch mode [false] @@ -7647,13 +7730,16 @@ Options (negate by replacing - with -no): -compact Conserve memory at the expense of speed [false] -d,-debug Enable debugging messages [false] -divisor n Garbage collect using purge(divisor=n) [2] +-doubleclick ms Emulated double-click timeout [200] -embed Embed rendered preview image [true] -exitonEOF Exit interactive mode on EOF [true] -fitscreen Fit rendered image to screen [true] +-framerate frames/sec Animation speed [30] -globalwrite Allow write to other directory [false] -gray Convert all colors to grayscale [false] -h,-help Show summary of options; command-line only -historylines n Retain n lines of history [1000] +-hyperrefOptions str LaTeX hyperref package options [setpagesize=false,unicode] -iconify Iconify rendering window [false] -inlineimage Generate inline embedded image [false] -inlinetex Generate inline TeX code [false] @@ -7665,6 +7751,7 @@ Options (negate by replacing - with -no): -level n Postscript level [3] -l,-listvariables List available global functions and variables [false] -localhistory Use a local interactive history file [false] +-loop Loop 3D animations [false] -m,-mask Mask fpu exceptions; command-line only -maxtile pair Maximum rendering tile size [(0,0)] -maxviewport pair Maximum viewport size [(2048,2048)] @@ -7683,9 +7770,12 @@ Options (negate by replacing - with -no): -prompt2 string Continuation prompt for multiline input [..] -q,-quiet Suppress welcome message [false] -render n Render 3D graphics using n pixels per bp (-1=auto) [-1] +-resizestep step Resize step [1.2] +-reverse reverse 3D animations [false] -rgb Convert cmyk colors to rgb [false] -safe Disable system call [true] -scroll n Scroll standard output n lines at a time [0] +-spinstep deg/sec Spin speed [60] -tabcompletion Interactive prompt auto-completion [true] -tex engine latex|pdflatex|xelatex|tex|pdftex|context|none [latex] -thick Render thick 3D lines [true] @@ -7699,8 +7789,10 @@ Options (negate by replacing - with -no): -v,-verbose Increase verbosity level (can specify multiple times) [0] -version Show version; command-line only -wait Wait for child processes to finish before exiting [false] +-warn string Enable warning; command-line only -where Show where listed variables are declared [false] --xformat format GUI deconstruction format [png] +-zoomfactor factor Zoom step factor [1.05] +-zoomstep step Mouse motion zoom step [0.1] All boolean options can be negated by prepending `no' to the option name. @@ -7722,11 +7814,11 @@ automatically imported for each run as the final step in loading module Default option values may be entered as `Asymptote' code in a configuration file named `config.asy' (or the file specified by the environment variable `ASYMPTOTE_CONFIG' or `-config' option). -`Asymptote' will look for this file in its usual search path. -Typically the configuration file is placed in the `.asy' directory in -the user's home directory (`%USERPROFILE%\.asy' under `MSDOS'). -Configuration variables are accessed using the long form of the option -names: +`Asymptote' will look for this file in its usual search path (*note +Search paths::). Typically the configuration file is placed in the +`.asy' directory in the user's home directory (`%USERPROFILE%\.asy' +under `MSDOS'). Configuration variables are accessed using the long +form of the option names: import settings; outformat="pdf"; batchView=false; @@ -7763,8 +7855,9 @@ pixel per `bp': asy -o - venn | convert -alpha Off -density 144x144 -geometry 50%x eps:- venn.tiff If the option `-nosafe' is given, `Asymptote' runs in unsafe mode. -This enables the `int system(string s)' call, allowing one to execute -arbitrary shell commands. The default mode, `-safe', disables this call. +This enables the `int system(string s)' and `int system(string[] s)' +calls, allowing one to execute arbitrary shell commands. The default +mode, `-safe', disables this call. A `PostScript' offset may be specified as a pair (in `bp' units) with the `-O' option: @@ -7816,8 +7909,8 @@ option: File: asymptote.info, Node: Interactive mode, Next: GUI, Prev: Options, Up: Top -9 Interactive mode -****************** +10 Interactive mode +******************* Interactive mode is entered by executing the command `asy' with no file arguments. When the `-multiline' option is disabled (the default), each @@ -7841,6 +7934,9 @@ and must be entered immediately after the prompt: `help' view the manual; +`erase' + erase `currentpicture'; + `reset' reset the `Asymptote' environment to its initial state, except for changes to the settings module (*note settings::), the current @@ -7887,7 +7983,7 @@ g.label("\"$O$\", (0,0), SW") File: asymptote.info, Node: GUI, Next: PostScript to Asymptote, Prev: Interactive mode, Up: Top -10 Graphical User Interface +11 Graphical User Interface *************************** In the event that adjustments to the final figure are required, the @@ -7897,13 +7993,13 @@ The modified figure can then be saved as a normal `Asymptote' file. * Menu: -* GUI Installation:: Installing `xasy' -* GUI Usage:: +* GUI installation:: Installing `xasy' +* GUI usage:: -File: asymptote.info, Node: GUI Installation, Next: GUI Usage, Up: GUI +File: asymptote.info, Node: GUI installation, Next: GUI usage, Up: GUI -10.1 GUI Installation +11.1 GUI installation ===================== As `xasy' is written in the interactive scripting language `Python/TK', @@ -7919,31 +8015,22 @@ packages. Pictures are deconstructed into the PNG image format, which supports full alpha channel transparency. Under `Microsoft Windows', this -requires `Python 2.5 (or 2.5.1)' and the `Python Imaging Library': +requires `Python 2.6.2' and the `Python Imaging Library': - `http://www.python.org/ftp/python/2.5.1/python-2.5.1.msi' + `http://www.python.org/ftp/python/2.6.2/python-2.6.2.msi' - `http://effbot.org/downloads/PIL-1.1.6.win32-py2.5.exe'. + `http://effbot.org/downloads/PIL-1.1.7b1.win32-py2.6.exe'. On `UNIX' systems, place -`http://effbot.org/downloads/Imaging-1.1.6.tar.gz' in the `Asymptote' +`http://effbot.org/downloads/Imaging-1.1.7b1.tar.gz' in the `Asymptote' source directory, and type (as the root user): -tar -zxf Imaging-1.1.6.tar.gz -cd Imaging-1.1.6 -patch -p1 < ../patches/TkAlpha-Imaging-1.1.6.patch +tar -zxf Imaging-1.1.7b1.tar.gz +cd Imaging-1.1.7b1 python setup.py install - Alternatively, `xasy' can deconstruct pictures into the GIF image -format (not recommended as this is very slow), using white as the -transparent color. This requires the lines -import settings; -xformat="gif"; - in the `Asymptote' configuration file (*note configuration file::), -along with the `ImageMagick' (*note convert::) program. - -File: asymptote.info, Node: GUI Usage, Prev: GUI Installation, Up: GUI +File: asymptote.info, Node: GUI usage, Prev: GUI installation, Up: GUI -10.2 GUI Usage +11.2 GUI usage ============== A wheel mouse is convenient for raising and lowering objects within @@ -7964,32 +8051,15 @@ elements will be individually deconstructed (*note add::). File: asymptote.info, Node: PostScript to Asymptote, Next: Help, Prev: GUI, Up: Top -11 `PostScript' to `Asymptote' +12 `PostScript' to `Asymptote' ****************************** -The excellent `PostScript' editor `pstoedit' (version 3.45 or later; -available from `http://pstoedit.net') includes an `Asymptote' backend. -Unlike virtually all other `pstoedit' backends, this driver includes -native clipping, even-odd fill rule, `PostScript' subpath, and full -image support. - - For full functionality, the patch `pstoedit-3.45asy.patch' in the -`patches' directory should be applied. On `UNIX' systems, as the root -user, place - - `http://prdownloads.sourceforge.net/pstoedit/pstoedit-3.45.tar.gz' - in the `Asymptote' source directory, and type: - -tar -zxf pstoedit-3.45.tar.gz -cd pstoedit-3.45 -patch -p1 < ../patches/pstoedit-3.45asy.patch -autoconf -./configure --prefix=/usr -make install - -Then try: - -`asy -V /usr/local/share/doc/asymptote/examples/venn.asy' +The excellent `PostScript' editor `pstoedit' (version 3.50 or later; +available from `http://sourceforge.net/projects/pstoedit/') includes an +`Asymptote' backend. Unlike virtually all other `pstoedit' backends, +this driver includes native clipping, even-odd fill rule, `PostScript' +subpath, and full image support. Here is an example: `asy -V +/usr/local/share/doc/asymptote/examples/venn.asy' pstoedit -f asy venn.eps test.asy asy -V test @@ -8000,7 +8070,7 @@ If the line widths aren't quite correct, try giving `pstoedit' the File: asymptote.info, Node: Help, Next: Debugger, Prev: PostScript to Asymptote, Up: Top -12 Help +13 Help ******* A list of frequently asked questions (FAQ) is maintained at @@ -8009,7 +8079,7 @@ A list of frequently asked questions (FAQ) is maintained at Questions on installing and using `Asymptote' that are not addressed in the FAQ should be sent to the `Asymptote' forum: - `http://sourceforge.net/forum/forum.php?forum_id=409349' + `http://sourceforge.net/projects/asymptote/forums/forum/409349' Including an example that illustrates what you are trying to do will help you get useful feedback. `LaTeX' problems can often be diagnosed with the `-vv' or `-vvv' command-line options. Contributions in the @@ -8021,7 +8091,7 @@ form of patches or `Asymptote' modules can be posted here: `http://freshmeat.net/projects/asy' If you find a bug in `Asymptote', please check (if possible) whether -the bug is still present in the latest Subversion developmental code +the bug is still present in the latest `Subversion' developmental code (*note Subversion::) before submitting a bug report. New bugs can be submitted using the Bug Tracking System at @@ -8040,7 +8110,7 @@ generates such segmentation faults along with your bug report). File: asymptote.info, Node: Debugger, Next: Credits, Prev: Help, Up: Top -13 Debugger +14 Debugger *********** Asymptote now includes a line-based (as opposed to code-based) debugger @@ -8108,7 +8178,7 @@ void breakpoint(code s=quote{}); File: asymptote.info, Node: Credits, Next: Index, Prev: Debugger, Up: Top -14 Acknowledgments +15 Acknowledgments ****************** Financial support for the development of `Asymptote' was generously @@ -8147,7 +8217,7 @@ Index (line 6) * & <1>: Arithmetic & logical. (line 56) -* &: Tutorial. (line 192) +* &: Bezier curves. (line 83) * &&: Arithmetic & logical. (line 53) * * <1>: Arithmetic & logical. @@ -8168,16 +8238,16 @@ Index (line 14) * -- <1>: Self & prefix operators. (line 6) -* --: Tutorial. (line 109) -* ---: Tutorial. (line 192) +* --: Tutorial. (line 125) +* ---: Bezier curves. (line 83) * -=: Self & prefix operators. (line 6) -* -c: Options. (line 154) -* -l: Options. (line 173) -* -u: Options. (line 164) -* -V <1>: Tutorial. (line 41) +* -c: Options. (line 167) +* -l: Options. (line 186) +* -u: Options. (line 177) +* -V <1>: Tutorial. (line 19) * -V: Configuring. (line 6) -* ..: Tutorial. (line 109) +* ..: Tutorial. (line 125) * .asy: Search paths. (line 13) * /: Arithmetic & logical. (line 20) @@ -8186,11 +8256,12 @@ Index * 2D graphs: graph. (line 6) * 3D graphs: graph3. (line 6) * 3D grids: grid3. (line 6) +* 3D PostScript: three. (line 532) * 3D rendering: Compiling from UNIX source. (line 16) * :: Arithmetic & logical. (line 73) -* ::: Tutorial. (line 176) +* ::: Bezier curves. (line 67) * <: Arithmetic & logical. (line 41) * <=: Arithmetic & logical. @@ -8208,14 +8279,14 @@ Index (line 28) * ^=: Self & prefix operators. (line 6) -* ^^: Tutorial. (line 197) -* a4: Configuring. (line 62) +* ^^: Tutorial. (line 132) +* a4: Configuring. (line 61) * abort: Data types. (line 321) * abs <1>: Mathematical functions. (line 35) * abs: Data types. (line 60) -* accel <1>: three. (line 433) -* accel: Paths and guides. (line 110) +* accel <1>: three. (line 462) +* accel: Paths and guides. (line 109) * access: Import. (line 6) * acknowledgments: Credits. (line 6) * aCos: Mathematical functions. @@ -8225,57 +8296,59 @@ Index * acosh: Mathematical functions. (line 6) * add: Frames and pictures. (line 192) +* adjust: Pens. (line 112) * Ai: Mathematical functions. (line 48) * Ai_deriv: Mathematical functions. (line 48) * Airy: Mathematical functions. (line 48) -* alias <1>: Arrays. (line 187) +* alias <1>: Arrays. (line 184) * alias: Structures. (line 54) -* align: Options. (line 148) +* align: Options. (line 161) * Align: label. (line 12) -* all: Arrays. (line 331) -* Allow: Pens. (line 323) +* all: Arrays. (line 328) +* Allow: Pens. (line 324) * AND: Arithmetic & logical. (line 80) -* and: Tutorial. (line 165) +* and: Bezier curves. (line 56) * angle: Data types. (line 68) * animate <1>: animation. (line 12) -* animate <2>: Files. (line 148) -* animate: Configuring. (line 68) +* animate <2>: Files. (line 151) +* animate: Configuring. (line 67) * animation: animation. (line 6) * annotate: annotate. (line 6) -* antialias <1>: Options. (line 128) -* antialias: three. (line 180) +* antialias <1>: Options. (line 140) +* antialias: three. (line 205) * antialiasing: Compiling from UNIX source. (line 16) * append <1>: Arrays. (line 39) * append: Files. (line 36) -* arc: three. (line 245) +* arc: three. (line 271) * Arc: Paths and guides. (line 32) * arc: Paths and guides. (line 22) * ArcArrow: draw. (line 26) -* ArcArrow3: three. (line 476) +* ArcArrow3: three. (line 505) * ArcArrows: draw. (line 26) -* ArcArrows3: three. (line 476) -* arclength <1>: three. (line 433) -* arclength: Paths and guides. (line 137) -* arctime <1>: three. (line 433) -* arctime: Paths and guides. (line 141) +* ArcArrows3: three. (line 505) +* arclength <1>: three. (line 462) +* arclength: Paths and guides. (line 136) +* arctime <1>: three. (line 462) +* arctime: Paths and guides. (line 140) * arguments: Default arguments. (line 6) * arithmetic operators: Arithmetic & logical. (line 6) -* array: Arrays. (line 125) +* array: Arrays. (line 122) * array iteration: Programming. (line 33) * arrays: Arrays. (line 6) * arrow: label. (line 72) * Arrow: draw. (line 26) * arrow: Drawing commands. (line 31) -* arrow keys: Tutorial. (line 21) -* Arrow3: three. (line 476) +* arrow keys: Tutorial. (line 35) +* Arrow3: three. (line 505) * Arrows: draw. (line 26) -* Arrows3: three. (line 476) +* arrows: draw. (line 26) +* Arrows3: three. (line 505) * as: Import. (line 70) * aSin: Mathematical functions. (line 20) @@ -8289,7 +8362,8 @@ Index * asy-mode: Editing modes. (line 6) * asy.vim: Editing modes. (line 33) * asymptote.sty: LaTeX usage. (line 6) -* ASYMPTOTE_CONFIG: Options. (line 101) +* asymptote.xml: Editing modes. (line 49) +* ASYMPTOTE_CONFIG: Options. (line 113) * aTan: Mathematical functions. (line 20) * atan: Mathematical functions. @@ -8298,11 +8372,11 @@ Index (line 6) * atanh: Mathematical functions. (line 6) -* atleast: Tutorial. (line 165) +* atleast: Bezier curves. (line 56) * attach <1>: graph. (line 405) * attach: LaTeX usage. (line 32) -* autoadjust: three. (line 315) -* autoimport: Options. (line 97) +* autoadjust: three. (line 342) +* autoimport: Options. (line 109) * automatic scaling: graph. (line 672) * axialshade: fill. (line 43) * axis <1>: graph3. (line 66) @@ -8310,36 +8384,37 @@ Index * azimuth: Data types. (line 124) * babel: babel. (line 6) * background color: Frames and pictures. (line 164) -* BackView: three. (line 340) +* BackView: three. (line 369) * Bar: draw. (line 19) -* Bar3: three. (line 476) +* Bar3: three. (line 505) * Bars: draw. (line 19) -* Bars3: three. (line 476) +* Bars3: three. (line 505) * barsize: draw. (line 19) * base modules: Base modules. (line 6) -* basealign: Pens. (line 164) +* basealign: Pens. (line 165) * baseline: label. (line 92) -* batch mode: Tutorial. (line 30) +* batch mode: Tutorial. (line 6) * beep: Data types. (line 335) * BeginArcArrow: draw. (line 26) -* BeginArcArrow3: three. (line 476) +* BeginArcArrow3: three. (line 505) * BeginArrow: draw. (line 26) -* BeginArrow3: three. (line 476) +* BeginArrow3: three. (line 505) * BeginBar: draw. (line 19) -* BeginBar3: three. (line 476) +* BeginBar3: three. (line 505) * BeginDotMargin: draw. (line 42) -* BeginDotMargin3: three. (line 492) +* BeginDotMargin3: three. (line 521) * BeginMargin: draw. (line 42) -* BeginMargin3: three. (line 492) +* BeginMargin3: three. (line 521) * BeginPenMargin: draw. (line 42) -* BeginPenMargin2: three. (line 492) -* BeginPenMargin3: three. (line 492) +* BeginPenMargin2: three. (line 521) +* BeginPenMargin3: three. (line 521) * BeginPoint: label. (line 57) * Bessel: Mathematical functions. (line 48) * bevel: flowchart. (line 68) -* beveljoin: Pens. (line 134) -* bezulate: three. (line 98) +* beveljoin: Pens. (line 135) +* Bezier curves: Bezier curves. (line 6) +* bezulate: three. (line 99) * Bi: Mathematical functions. (line 48) * Bi_deriv: Mathematical functions. @@ -8367,19 +8442,19 @@ Index (line 6) * Bottom: graph. (line 128) * BottomTop: graph. (line 134) -* BottomView: three. (line 340) +* BottomView: three. (line 369) * bounding box: Frames and pictures. (line 164) * Bounds: graph3. (line 20) * boutput: Files. (line 71) -* box <1>: three. (line 267) +* box <1>: three. (line 293) * box: Frames and pictures. (line 22) -* bp: Tutorial. (line 17) +* bp: Tutorial. (line 24) * break: Programming. (line 29) * breakpoints: Debugger. (line 21) -* brick: Pens. (line 247) +* brick: Pens. (line 248) * broken axis: graph. (line 773) * bug reports: Help. (line 23) -* buildcycle: Paths and guides. (line 251) +* buildcycle: Paths and guides. (line 250) * Button-1: GUI. (line 6) * Button-2: GUI. (line 6) * BWRainbow: palette. (line 15) @@ -8393,24 +8468,25 @@ Index * cd: Files. (line 24) * ceil: Mathematical functions. (line 26) -* center: three. (line 300) +* center: three. (line 326) * Center: label. (line 62) -* checker: Pens. (line 247) +* checker: Pens. (line 248) * Chinese: unicode. (line 12) * choose: Mathematical functions. (line 39) * Ci: Mathematical functions. (line 48) * circle <1>: flowchart. (line 57) -* circle: three. (line 241) +* circle: three. (line 267) * Circle: Paths and guides. (line 17) * circle: Paths and guides. (line 10) * circlebarframe: markers. (line 18) * CJK: unicode. (line 12) * clear <1>: Debugger. (line 23) -* clear: Files. (line 86) +* clear: Files. (line 89) * clip: fill. (line 110) -* cm: Tutorial. (line 63) +* cm: Tutorial. (line 61) +* cmd: Configuring. (line 34) * cmyk: Pens. (line 34) * colatitude: Data types. (line 129) * color: Pens. (line 23) @@ -8420,38 +8496,39 @@ Index * colorless: Pens. (line 54) * colors: Pens. (line 51) * comma: Files. (line 59) -* comma-separated-value mode: Arrays. (line 362) +* comma-separated-value mode: Arrays. (line 361) * command-line options <1>: Options. (line 6) -* command-line options: Configuring. (line 82) +* command-line options: Configuring. (line 83) * comment character: Files. (line 15) -* compass directions: Tutorial. (line 94) +* compass directions: Tutorial. (line 104) * Compiling from UNIX source: Compiling from UNIX source. (line 6) -* complement: Arrays. (line 153) -* concat: Arrays. (line 183) +* complement: Arrays. (line 150) +* concat: Arrays. (line 180) * conditional <1>: Arithmetic & logical. (line 73) * conditional: Programming. (line 8) -* config: Options. (line 101) -* configuration file: Configuring. (line 21) +* config: Options. (line 113) +* configuration file <1>: Options. (line 113) +* configuration file: Configuring. (line 23) * configuring: Configuring. (line 6) * conj: Data types. (line 57) * constructors: Structures. (line 95) -* context: Options. (line 128) +* context: Options. (line 140) * continue <1>: Debugger. (line 31) * continue: Programming. (line 29) * contour: contour. (line 9) * contour3: contour3. (line 6) * controls <1>: three. (line 6) -* controls: Tutorial. (line 154) -* controlSpecifier: Paths and guides. (line 375) -* convert <1>: Options. (line 128) +* controls: Bezier curves. (line 45) +* controlSpecifier: Paths and guides. (line 374) +* convert <1>: Options. (line 140) * convert <2>: animation. (line 6) -* convert <3>: Files. (line 148) -* convert: Configuring. (line 68) -* convertOptions: Options. (line 116) +* convert <3>: Files. (line 151) +* convert: Configuring. (line 67) +* convertOptions: Options. (line 128) * Coons shading: fill. (line 74) -* copy: Arrays. (line 174) +* copy: Arrays. (line 171) * Cos: Mathematical functions. (line 20) * cos: Mathematical functions. @@ -8464,25 +8541,24 @@ Index * cross <1>: graph. (line 474) * cross: Data types. (line 167) * crossframe: markers. (line 23) -* crosshatch: Pens. (line 263) -* csv: Arrays. (line 362) -* cubicroots: Arrays. (line 320) +* crosshatch: Pens. (line 264) +* csv: Arrays. (line 361) +* cubicroots: Arrays. (line 317) * curl <1>: three. (line 6) -* curl: Tutorial. (line 172) -* curlSpecifier: Paths and guides. (line 387) +* curl: Bezier curves. (line 63) +* curlSpecifier: Paths and guides. (line 386) * currentpen: Pens. (line 6) -* currentprojection: three. (line 337) +* currentprojection: three. (line 366) * curve: slopefield. (line 20) * custom axis types: graph. (line 138) * custom mark routine: graph. (line 566) * custom tick locations: graph. (line 241) -* cut: Paths and guides. (line 233) +* cut: Paths and guides. (line 232) * cycle <1>: three. (line 6) -* cycle: Tutorial. (line 46) -* cyclic <1>: three. (line 433) +* cycle: Tutorial. (line 73) +* cyclic <1>: three. (line 462) * cyclic <2>: Arrays. (line 39) -* cyclic: Paths and guides. (line 75) -* cyclicflag: Arrays. (line 39) +* cyclic: Paths and guides. (line 74) * Cyrillic: unicode. (line 7) * dashdotted: Pens. (line 92) * dashed: Pens. (line 92) @@ -8492,11 +8568,11 @@ Index (line 19) * debugger: Debugger. (line 6) * declaration: Programming. (line 8) -* deconstruct: GUI Usage. (line 6) +* deconstruct: GUI usage. (line 6) * default arguments: Default arguments. (line 6) * defaultformat: graph. (line 169) * DefaultHead: draw. (line 26) -* DefaultHead3: three. (line 476) +* DefaultHead3: three. (line 505) * defaultpen: Pens. (line 46) * deferred drawing: simplex. (line 6) * Degrees: Mathematical functions. @@ -8505,30 +8581,30 @@ Index (line 17) * degrees: Data types. (line 73) * delete <1>: Arrays. (line 39) -* delete: Files. (line 143) +* delete: Files. (line 146) * description: Description. (line 6) -* diagonal: Arrays. (line 305) +* diagonal: Arrays. (line 302) * diamond: flowchart. (line 50) -* dimension: Arrays. (line 368) -* dir <1>: three. (line 433) -* dir <2>: Paths and guides. (line 99) +* dimension: Arrays. (line 366) +* dir <1>: three. (line 462) +* dir <2>: Paths and guides. (line 98) * dir <3>: Data types. (line 85) * dir: Search paths. (line 10) -* direction specifier: Tutorial. (line 115) +* direction specifier: Bezier curves. (line 6) * directory: Files. (line 24) -* dirSpecifier: Paths and guides. (line 369) -* dirtime: Paths and guides. (line 147) -* display: Configuring. (line 68) +* dirSpecifier: Paths and guides. (line 368) +* dirtime: Paths and guides. (line 146) +* display: Configuring. (line 67) * do: Programming. (line 29) * dot <1>: Data types. (line 98) * dot: draw. (line 83) * DotMargin: draw. (line 42) -* DotMargin3: three. (line 492) +* DotMargin3: three. (line 521) * DotMargins: draw. (line 42) -* DotMargins3: three. (line 492) +* DotMargins3: three. (line 521) * dotted: Pens. (line 92) -* double: Files. (line 71) -* double deferred drawing: three. (line 222) +* double deferred drawing: three. (line 248) +* double precision: Files. (line 71) * Draw: Frames and pictures. (line 147) * draw: draw. (line 110) * Draw: draw. (line 26) @@ -8536,15 +8612,17 @@ Index * drawing commands: Drawing commands. (line 6) * drawline: math. (line 9) * drawtree: drawtree. (line 9) -* dvips: Configuring. (line 68) -* dvipsOptions: Options. (line 116) +* dvips: Configuring. (line 67) +* dvipsOptions: Options. (line 128) +* dvisvg: Configuring. (line 67) * E <1>: Mathematical functions. (line 48) -* E: Tutorial. (line 94) +* E: Tutorial. (line 104) * Editing modes: Editing modes. (line 6) * Ei: Mathematical functions. (line 48) -* ellipse: Frames and pictures. (line 22) +* ellipse <1>: Frames and pictures. (line 22) +* ellipse: Paths and guides. (line 39) * elliptic functions: Mathematical functions. (line 48) * else: Programming. (line 8) @@ -8552,40 +8630,42 @@ Index * embed: embed. (line 6) * empty: Frames and pictures. (line 7) * EndArcArrow: draw. (line 26) -* EndArcArrow3: three. (line 476) +* EndArcArrow3: three. (line 505) * EndArrow: draw. (line 26) -* EndArrow3: three. (line 476) +* EndArrow3: three. (line 505) * EndBar: draw. (line 19) -* EndBar3: three. (line 476) +* EndBar3: three. (line 505) * EndDotMargin: draw. (line 42) -* EndDotMargin3: three. (line 492) +* EndDotMargin3: three. (line 521) * endl: Files. (line 59) * EndMargin: draw. (line 42) -* EndMargin3: three. (line 492) +* EndMargin3: three. (line 521) * EndPenMargin: draw. (line 42) -* EndPenMargin2: three. (line 492) -* EndPenMargin3: three. (line 492) +* EndPenMargin2: three. (line 521) +* EndPenMargin3: three. (line 521) * EndPoint: label. (line 57) * envelope: Frames and pictures. (line 22) -* environment variables: Configuring. (line 86) -* eof <1>: Arrays. (line 346) -* eof: Files. (line 86) -* eol <1>: Arrays. (line 346) -* eol: Files. (line 86) +* environment variables: Configuring. (line 87) +* eof <1>: Arrays. (line 343) +* eof: Files. (line 89) +* eol <1>: Arrays. (line 343) +* eol: Files. (line 89) * EPS: label. (line 80) * erase <1>: Frames and pictures. (line 7) -* erase: Data types. (line 239) +* erase <2>: Data types. (line 239) +* erase: Tutorial. (line 35) * erf: Mathematical functions. (line 6) * erfc: Mathematical functions. (line 6) * error: Files. (line 15) +* error bars: graph. (line 522) * errorbars: graph. (line 474) * eval: Import. (line 101) -* evenodd <1>: Pens. (line 148) -* evenodd: Tutorial. (line 211) +* evenodd <1>: Pens. (line 149) +* evenodd: Tutorial. (line 146) * exit <1>: Debugger. (line 57) -* exit <2>: Interactive mode. (line 37) +* exit <2>: Interactive mode. (line 40) * exit: Data types. (line 326) * exp: Mathematical functions. (line 6) @@ -8596,24 +8676,24 @@ Index (line 6) * exponential integral: Mathematical functions. (line 48) -* extendcap: Pens. (line 125) +* extendcap: Pens. (line 126) * extension <1>: MetaPost. (line 10) -* extension: Paths and guides. (line 228) +* extension: Paths and guides. (line 227) * external: embed. (line 28) -* extrude: three. (line 427) +* extrude: three. (line 456) * F: Mathematical functions. (line 48) * fabs: Mathematical functions. (line 6) -* face: three. (line 511) +* face: three. (line 540) * factorial: Mathematical functions. (line 39) * Fedora: UNIX binary distributions. (line 15) * feynman: feynman. (line 6) -* fft: Arrays. (line 252) +* fft: Arrays. (line 249) * FFTW: Compiling from UNIX source. - (line 59) + (line 58) * file <1>: Debugger. (line 45) * file: Files. (line 6) * Fill: Frames and pictures. (line 133) @@ -8624,12 +8704,12 @@ Index * filldraw: fill. (line 11) * FillDraw: draw. (line 26) * filloutside: fill. (line 27) -* fillrule: Pens. (line 148) -* find <1>: Arrays. (line 162) +* fillrule: Pens. (line 149) +* find <1>: Arrays. (line 159) * find: Data types. (line 224) -* firstcut: Paths and guides. (line 243) +* firstcut: Paths and guides. (line 242) * fit: Frames and pictures. (line 103) -* fix-cm: Pens. (line 174) +* fix-cm: Pens. (line 175) * fixedscaling: Frames and pictures. (line 74) * floor: Mathematical functions. (line 26) @@ -8637,19 +8717,19 @@ Index * flush: Files. (line 59) * fmod: Mathematical functions. (line 6) -* font: Pens. (line 188) -* font command: Pens. (line 188) -* fontcommand: Pens. (line 203) -* fontsize: Pens. (line 174) +* font: Pens. (line 189) +* font command: Pens. (line 189) +* fontcommand: Pens. (line 204) +* fontsize: Pens. (line 175) * for: Programming. (line 8) -* format <1>: Options. (line 128) +* format <1>: Options. (line 140) * format: Data types. (line 266) * forum: Help. (line 6) * frame: Frames and pictures. (line 7) * freeglut: Compiling from UNIX source. (line 16) * from: Import. (line 17) -* FrontView: three. (line 340) +* FrontView: three. (line 369) * function declarations: Functions. (line 67) * function shading: fill. (line 95) * Function shading: fill. (line 95) @@ -8663,12 +8743,12 @@ Index (line 39) * geometry: geometry. (line 6) * getc: Files. (line 30) -* getpair: Files. (line 111) -* getreal: Files. (line 111) -* getstring: Files. (line 111) -* gettriple: Files. (line 111) -* glOptions <1>: Options. (line 116) -* glOptions: three. (line 180) +* getpair: Files. (line 114) +* getreal: Files. (line 114) +* getstring: Files. (line 114) +* gettriple: Files. (line 114) +* glOptions <1>: Options. (line 128) +* glOptions: three. (line 205) * GNU Scientific Library: Mathematical functions. (line 48) * gouraudshade: fill. (line 58) @@ -8682,20 +8762,20 @@ Index * Grayscale: palette. (line 9) * grayscale: Pens. (line 25) * grid <1>: graph. (line 724) -* grid: Pens. (line 247) +* grid: Pens. (line 248) * grid3: grid3. (line 6) * gs: Configuring. (line 6) * gsl: Mathematical functions. (line 48) * GSL: Compiling from UNIX source. - (line 59) -* gsOptions: Options. (line 116) + (line 58) +* gsOptions: Options. (line 128) * GUI: GUI. (line 6) -* GUI installation: GUI Installation. (line 6) -* GUI usage: GUI Usage. (line 6) -* guide: Paths and guides. (line 296) +* GUI installation: GUI installation. (line 6) +* GUI usage: GUI usage. (line 6) +* guide: Paths and guides. (line 295) * guide3: three. (line 6) -* hatch: Pens. (line 263) +* hatch: Pens. (line 264) * height: LaTeX usage. (line 32) * help <1>: Debugger. (line 30) * help <2>: Help. (line 6) @@ -8705,13 +8785,14 @@ Index * hex: Data types. (line 279) * hexidecimal <1>: Pens. (line 59) * hexidecimal: Data types. (line 279) -* hidden surface removal: three. (line 511) +* hidden surface removal: three. (line 540) * histogram: Mathematical functions. (line 39) -* history: Files. (line 136) -* historylines: Interactive mode. (line 42) +* history <1>: Interactive mode. (line 40) +* history: Files. (line 139) +* historylines: Interactive mode. (line 45) * HookHead: draw. (line 26) -* HookHead3: three. (line 476) +* HookHead3: three. (line 505) * Horizontal: flowchart. (line 74) * hypot: Mathematical functions. (line 6) @@ -8719,60 +8800,61 @@ Index (line 48) * i_scaled: Mathematical functions. (line 48) -* iconic: three. (line 180) -* identity <1>: Arrays. (line 302) +* iconic: three. (line 205) +* identity <1>: Arrays. (line 299) * identity <2>: Mathematical functions. (line 6) * identity: Transforms. (line 24) * if: Programming. (line 8) * IgnoreAspect: Frames and pictures. (line 58) * image: palette. (line 34) -* ImageMagick <1>: Options. (line 128) +* ImageMagick <1>: Options. (line 140) * ImageMagick <2>: animation. (line 6) -* ImageMagick: Configuring. (line 68) +* ImageMagick: Configuring. (line 67) +* images: palette. (line 6) * implicit casts: Casts. (line 6) * implicit linear solver: MetaPost. (line 10) * implicit scaling: Implicit scaling. (line 6) * import: Import. (line 48) -* inches: Tutorial. (line 63) +* inches: Tutorial. (line 61) * including images: label. (line 80) * inheritance: Structures. (line 189) * initialized: Arrays. (line 39) * initializers: Variable initializers. (line 6) * InOutTicks: graph3. (line 34) -* input <1>: Interactive mode. (line 31) +* input <1>: Interactive mode. (line 29) * input: Files. (line 11) * insert <1>: Arrays. (line 39) * insert: Data types. (line 235) -* inside: Paths and guides. (line 275) +* inside: Paths and guides. (line 274) * inst: Debugger. (line 36) * installation: Installation. (line 6) * int: Data types. (line 28) * integer division: Arithmetic & logical. (line 6) * interactive mode: Interactive mode. (line 6) -* interior: Paths and guides. (line 271) +* interior: Paths and guides. (line 270) * international characters: unicode. (line 6) * interp: Arithmetic & logical. (line 76) * interpolate: interpolate. (line 6) -* intersect <1>: three. (line 433) +* intersect <1>: three. (line 462) * intersect <2>: math. (line 13) -* intersect: Paths and guides. (line 176) -* intersectionpoint <1>: three. (line 433) +* intersect: Paths and guides. (line 175) +* intersectionpoint <1>: three. (line 462) * intersectionpoint <2>: math. (line 17) -* intersectionpoint: Paths and guides. (line 220) -* intersectionpoints <1>: three. (line 433) -* intersectionpoints: Paths and guides. (line 224) -* intersections <1>: three. (line 433) -* intersections: Paths and guides. (line 187) +* intersectionpoint: Paths and guides. (line 219) +* intersectionpoints <1>: three. (line 462) +* intersectionpoints: Paths and guides. (line 223) +* intersections <1>: three. (line 462) +* intersections: Paths and guides. (line 186) * InTicks: graph3. (line 34) * intMax: Data types. (line 28) * intMin: Data types. (line 28) -* inverse <1>: Arrays. (line 308) +* inverse <1>: Arrays. (line 305) * inverse: Transforms. (line 16) -* invert: three. (line 366) +* invert: three. (line 395) * invisible: Pens. (line 39) * J: Mathematical functions. (line 6) @@ -8781,11 +8863,14 @@ Index (line 48) * k_scaled: Mathematical functions. (line 48) -* keyboard bindings:: three. (line 149) +* Kate: Editing modes. (line 49) +* KDE editor: Editing modes. (line 49) +* keyboard bindings:: three. (line 164) * keys: Arrays. (line 39) * keywords: Named arguments. (line 6) * Korean: unicode. (line 12) -* Label: graph. (line 332) +* Label <1>: graph. (line 332) +* Label: label. (line 15) * label: clip. (line 16) * Label: draw. (line 98) * labelpath: labelpath. (line 6) @@ -8793,10 +8878,10 @@ Index * labelx: graph. (line 332) * labely: graph. (line 332) * Landscape: Frames and pictures. (line 95) -* lastcut: Paths and guides. (line 247) +* lastcut: Paths and guides. (line 246) * lasy-mode: Editing modes. (line 6) -* latex: Options. (line 128) -* LaTeX fonts: Pens. (line 188) +* latex: Options. (line 140) +* LaTeX fonts: Pens. (line 189) * LaTeX usage: LaTeX usage. (line 6) * latin1: latin1. (line 6) * latitude: Data types. (line 134) @@ -8808,29 +8893,30 @@ Index * LeftRight: graph. (line 280) * LeftSide: label. (line 62) * LeftTicks: graph. (line 155) -* LeftView: three. (line 340) +* LeftView: three. (line 369) * legend <1>: graph. (line 421) * legend <2>: draw. (line 64) * legend: Drawing commands. (line 31) * Legendre: Mathematical functions. (line 48) -* length <1>: three. (line 433) +* length <1>: three. (line 462) * length <2>: Arrays. (line 39) -* length <3>: Paths and guides. (line 66) +* length <3>: Paths and guides. (line 65) * length: Data types. (line 60) -* letter: Configuring. (line 62) +* letter: Configuring. (line 61) * libm routines: Mathematical functions. (line 6) * libsigsegv <1>: Help. (line 33) * libsigsegv: Functions. (line 88) * limits: graph. (line 626) -* line: Arrays. (line 346) -* line mode: Arrays. (line 346) +* line: Arrays. (line 343) +* line mode: Arrays. (line 343) * Linear: graph. (line 672) -* linecap: Pens. (line 125) -* linejoin: Pens. (line 134) -* lineskip: Pens. (line 174) -* linewidth: Pens. (line 115) +* linecap: Pens. (line 126) +* linejoin: Pens. (line 135) +* lineskip: Pens. (line 175) +* linetype: Pens. (line 112) +* linewidth: Pens. (line 116) * locale: Data types. (line 286) * Log: graph. (line 672) * log: Mathematical functions. @@ -8850,13 +8936,13 @@ Index * loop: Programming. (line 8) * MacOS X binary distributions: MacOS X binary distributions. (line 6) -* makepen: Pens. (line 296) -* map: Arrays. (line 144) +* makepen: Pens. (line 297) +* map: Arrays. (line 141) * Margin: draw. (line 42) -* Margin3: three. (line 492) -* margins: three. (line 228) +* Margin3: three. (line 521) +* margins: three. (line 254) * Margins: draw. (line 42) -* Margins3: three. (line 492) +* Margins3: three. (line 521) * mark: graph. (line 474) * markangle: markers. (line 38) * marker: graph. (line 474) @@ -8866,64 +8952,65 @@ Index * math: math. (line 6) * mathematical functions: Mathematical functions. (line 6) -* max <1>: three. (line 433) -* max <2>: Arrays. (line 231) +* max <1>: three. (line 462) +* max <2>: Arrays. (line 228) * max <3>: Frames and pictures. (line 7) -* max: Paths and guides. (line 260) +* max: Paths and guides. (line 259) * maxbound: Data types. (line 104) -* maxtile: three. (line 180) -* maxtimes: Paths and guides. (line 215) -* maxviewport: three. (line 180) -* merge: animation. (line 6) +* maxtile: three. (line 205) +* maxtimes: Paths and guides. (line 214) +* maxviewport: three. (line 205) * MetaPost: MetaPost. (line 6) -* MetaPost ... : Tutorial. (line 176) -* MetaPost cutafter: Paths and guides. (line 248) -* MetaPost cutbefore: Paths and guides. (line 244) +* MetaPost ... : Bezier curves. (line 67) +* MetaPost cutafter: Paths and guides. (line 247) +* MetaPost cutbefore: Paths and guides. (line 243) * MetaPost pickup: Pens. (line 6) * MetaPost whatever: MetaPost. (line 10) * Microsoft Windows: Microsoft Windows. (line 6) * MidArcArrow: draw. (line 26) -* MidArcArrow3: three. (line 476) +* MidArcArrow3: three. (line 505) * MidArrow: draw. (line 26) -* MidArrow3: three. (line 476) -* midpoint: Paths and guides. (line 161) +* MidArrow3: three. (line 505) +* midpoint: Paths and guides. (line 160) * MidPoint: label. (line 57) -* min <1>: three. (line 433) -* min <2>: Arrays. (line 224) +* min <1>: three. (line 462) +* min <2>: Arrays. (line 221) * min <3>: Frames and pictures. (line 7) -* min: Paths and guides. (line 256) +* min: Paths and guides. (line 255) * minbound: Data types. (line 101) * minipage: label. (line 119) -* mintimes: Paths and guides. (line 210) -* miterjoin: Pens. (line 134) -* miterlimit: Pens. (line 143) -* mm: Tutorial. (line 63) +* mintimes: Paths and guides. (line 209) +* miterjoin: Pens. (line 135) +* miterlimit: Pens. (line 144) +* mm: Tutorial. (line 61) +* mode: Files. (line 85) * mouse: GUI. (line 6) -* mouse bindings: three. (line 129) -* Move: Pens. (line 335) -* MoveQuiet: Pens. (line 341) -* multisample: three. (line 119) +* mouse bindings: three. (line 132) +* Move: Pens. (line 336) +* MoveQuiet: Pens. (line 342) +* multisample: three. (line 122) * multisampling: Compiling from UNIX source. (line 16) -* N: Tutorial. (line 94) +* N: Tutorial. (line 104) +* name: Files. (line 85) * named arguments: Named arguments. (line 6) -* new <1>: Arrays. (line 112) +* new <1>: Arrays. (line 109) * new: Structures. (line 6) * newframe: Frames and pictures. (line 7) * newl: Files. (line 59) * newton: Mathematical functions. (line 65) * next: Debugger. (line 42) -* NFSS: Pens. (line 188) -* nobasealign: Pens. (line 164) +* NFSS: Pens. (line 189) +* nobasealign: Pens. (line 165) * NoFill <1>: Frames and pictures. (line 141) * NoFill: draw. (line 26) * NoMargin: draw. (line 42) -* NoMargin3: three. (line 492) +* NoMargin3: three. (line 521) * none: Files. (line 59) * None: draw. (line 19) -* normal: three. (line 419) -* nosafe: Options. (line 144) +* normal: three. (line 448) +* nosafe: Options. (line 156) * NOT: Arithmetic & logical. (line 80) * NoTicks: graph. (line 155) @@ -8931,18 +9018,19 @@ Index * null: Structures. (line 6) * nullpen <1>: Frames and pictures. (line 127) * nullpen: label. (line 14) -* NURBS: three. (line 318) -* O: three. (line 236) +* NURBS: three. (line 346) +* O: three. (line 262) * obj: obj. (line 9) -* oblique: three. (line 281) -* obliqueX: three. (line 289) -* obliqueY: three. (line 296) -* obliqueZ: three. (line 281) +* oblique: three. (line 307) +* obliqueX: three. (line 315) +* obliqueY: three. (line 322) +* obliqueZ: three. (line 307) * ode: ode. (line 9) -* offset: Options. (line 148) -* opacity: Pens. (line 218) +* offset <1>: Options. (line 161) +* offset: Pens. (line 112) +* opacity: Pens. (line 219) * open: Files. (line 11) -* OpenGL: three. (line 119) +* OpenGL: three. (line 122) * operator: User-defined operators. (line 6) * operator --: graph. (line 31) @@ -8957,92 +9045,94 @@ Index * OR: Arithmetic & logical. (line 80) * orientation: Frames and pictures. (line 95) -* orthographic: three. (line 300) -* outformat: three. (line 119) +* orthographic: three. (line 326) +* outformat: three. (line 122) * outprefix: Frames and pictures. (line 83) -* output <1>: Options. (line 128) +* output <1>: Options. (line 140) * output: Files. (line 36) * OutTicks: graph3. (line 34) * overloading functions: Functions. (line 44) -* overwrite: Pens. (line 320) +* overwrite: Pens. (line 321) * P: Mathematical functions. (line 48) * pack: label. (line 102) * packing: Rest arguments. (line 30) * pair <1>: Data types. (line 41) -* pair: Tutorial. (line 17) -* pairs: Arrays. (line 248) -* paperheight: Configuring. (line 62) -* papertype: Configuring. (line 62) -* paperwidth: Configuring. (line 62) +* pair: Tutorial. (line 49) +* pairs: Arrays. (line 245) +* paperheight: Configuring. (line 61) +* papertype: Configuring. (line 61) +* paperwidth: Configuring. (line 61) * parametric surface: graph3. (line 100) * parametrized curve: graph. (line 626) -* patch-dependent colors: three. (line 75) +* patch-dependent colors: three. (line 76) * path <1>: flowchart. (line 74) * path <2>: three. (line 43) * path: Paths and guides. (line 7) +* path markers: graph. (line 474) * path3: three. (line 6) -* path[]: Tutorial. (line 197) +* path[]: Tutorial. (line 132) * patterns <1>: patterns. (line 6) -* patterns: Pens. (line 234) -* pdflatex: Options. (line 128) +* patterns: Pens. (line 235) +* pdflatex: Options. (line 140) * pdfviewer: Configuring. (line 6) -* pdfviewerOptions: Options. (line 116) +* pdfviewerOptions: Options. (line 128) * pen: Pens. (line 6) * PenMargin: draw. (line 42) -* PenMargin2: three. (line 492) -* PenMargin3: three. (line 492) +* PenMargin2: three. (line 521) +* PenMargin3: three. (line 521) * PenMargins: draw. (line 42) -* PenMargins2: three. (line 492) -* PenMargins3: three. (line 492) +* PenMargins2: three. (line 521) +* PenMargins3: three. (line 521) * perpendicular: geometry. (line 6) -* perspective: three. (line 318) +* perspective: three. (line 346) * picture: Frames and pictures. (line 35) * picture alignment: Frames and pictures. (line 205) -* piecewisestraight: Paths and guides. (line 82) +* piecewisestraight: Paths and guides. (line 81) * Pl: Mathematical functions. (line 48) * plain: plain. (line 6) -* planar: three. (line 83) -* plane: three. (line 263) -* planeproject: three. (line 416) -* point <1>: three. (line 433) -* point: Paths and guides. (line 85) +* planar: three. (line 84) +* plane: three. (line 289) +* planeproject: three. (line 445) +* point <1>: three. (line 462) +* point: Paths and guides. (line 84) * polar: Data types. (line 119) * polargraph: graph. (line 90) * polygon: graph. (line 474) * pop: Arrays. (line 39) * Portrait: Frames and pictures. (line 95) -* postcontrol <1>: three. (line 433) -* postcontrol: Paths and guides. (line 130) +* postcontrol <1>: three. (line 462) +* postcontrol: Paths and guides. (line 129) * postfix operators: Self & prefix operators. (line 19) * postscript: Frames and pictures. (line 267) -* PostScript fonts: Pens. (line 206) -* PostScript subpath: Tutorial. (line 197) +* PostScript fonts: Pens. (line 207) +* PostScript subpath: Tutorial. (line 132) * pow10: Mathematical functions. (line 6) -* prc: three. (line 197) -* precision: Files. (line 86) -* precontrol <1>: three. (line 433) -* precontrol: Paths and guides. (line 123) +* prc: three. (line 223) +* precision: Files. (line 89) +* precontrol <1>: three. (line 462) +* precontrol: Paths and guides. (line 122) * prefix operators: Self & prefix operators. (line 6) * private: Structures. (line 6) * programming: Programming. (line 6) * pstoedit: PostScript to Asymptote. (line 6) +* psview: Microsoft Windows. (line 16) * psviewer: Configuring. (line 6) -* psviewerOptions: Options. (line 116) -* pt: Tutorial. (line 63) +* psviewerOptions: Options. (line 128) +* pt: Tutorial. (line 61) * public: Structures. (line 6) * push: Arrays. (line 39) -* python: Configuring. (line 27) -* Python usage: Interactive mode. (line 58) -* quadraticroots: Arrays. (line 311) +* Python usage: Interactive mode. (line 61) +* quadraticroots: Arrays. (line 308) * quarticroots: math. (line 22) * quit <1>: Debugger. (line 54) -* quit: Interactive mode. (line 37) +* quit <2>: Interactive mode. (line 40) +* quit: Tutorial. (line 35) * quote: Import. (line 119) * quotient: Arithmetic & logical. (line 6) @@ -9050,19 +9140,17 @@ Index * radialshade: fill. (line 49) * radians: Mathematical functions. (line 17) -* radius <1>: three. (line 433) -* radius: Paths and guides. (line 119) +* radius <1>: three. (line 462) +* radius: Paths and guides. (line 118) * Rainbow: palette. (line 12) * rand: Mathematical functions. (line 39) * randMax: Mathematical functions. (line 39) -* read1: Arrays. (line 386) -* read2: Arrays. (line 386) -* read3: Arrays. (line 386) +* read: Arrays. (line 384) * reading: Files. (line 11) * reading string arrays: Arrays. (line 353) -* readline: Files. (line 128) +* readline: Files. (line 131) * real: Data types. (line 33) * realDigits: Data types. (line 33) * realEpsilon: Data types. (line 33) @@ -9073,24 +9161,24 @@ Index * recursion: Functions. (line 88) * reflect: Transforms. (line 51) * Relative: label. (line 52) -* relpoint: Paths and guides. (line 157) -* reltime: Paths and guides. (line 153) +* relpoint: Paths and guides. (line 156) +* reltime: Paths and guides. (line 152) * remainder: Mathematical functions. (line 6) -* rename: Files. (line 145) -* render <1>: Options. (line 128) -* render: three. (line 119) +* rename: Files. (line 148) +* render <1>: Options. (line 140) +* render: three. (line 122) * replace: Data types. (line 252) -* resetdefaultpen: Pens. (line 349) +* resetdefaultpen: Pens. (line 350) * rest arguments: Rest arguments. (line 6) * restore: Frames and pictures. (line 261) * restricted: Structures. (line 6) * return: Debugger. (line 48) -* reverse <1>: three. (line 433) -* reverse <2>: Arrays. (line 149) -* reverse <3>: Paths and guides. (line 164) +* reverse <1>: three. (line 462) +* reverse <2>: Arrays. (line 146) +* reverse <3>: Paths and guides. (line 163) * reverse: Data types. (line 248) -* rewind: Files. (line 86) +* rewind: Files. (line 89) * rfind: Data types. (line 229) * rgb: Pens. (line 30) * Riemann zeta function: Mathematical functions. @@ -9098,58 +9186,60 @@ Index * Right: graph. (line 277) * RightSide: label. (line 62) * RightTicks: graph. (line 155) -* RightView: three. (line 340) +* RightView: three. (line 369) * Rotate: label. (line 37) * Rotate(pair z): label. (line 40) * round: Mathematical functions. (line 26) -* roundcap: Pens. (line 125) +* roundcap: Pens. (line 126) * roundedpath: roundedpath. (line 6) -* roundjoin: Pens. (line 134) +* roundjoin: Pens. (line 135) * roundrectangle: flowchart. (line 62) * RPM: UNIX binary distributions. (line 6) * runtime imports: Import. (line 101) * Russian: unicode. (line 7) -* S: Tutorial. (line 94) -* safe: Options. (line 144) +* S: Tutorial. (line 104) +* safe: Options. (line 156) * save: Frames and pictures. (line 258) -* saveline: Files. (line 128) -* scale: three. (line 395) +* saveline: Files. (line 131) +* scale: three. (line 424) * Scale: graph. (line 688) * scale <1>: graph. (line 672) -* scale: Transforms. (line 39) +* scale <2>: Transforms. (line 39) +* scale: Pens. (line 112) * Scale: label. (line 46) -* scale3: three. (line 392) +* scale3: three. (line 421) * scaled graph: graph. (line 653) * scientific graph: graph. (line 386) -* scroll: Files. (line 102) -* search: Arrays. (line 167) +* scroll: Files. (line 105) +* search: Arrays. (line 164) * search paths: Search paths. (line 6) * Seascape: Frames and pictures. (line 100) * secondary axis: graph. (line 803) * secondaryX: graph. (line 803) * secondaryY: graph. (line 803) * seconds: Data types. (line 299) -* seek: Files. (line 86) -* seekeof: Files. (line 86) +* seek: Files. (line 89) +* seekeof: Files. (line 89) * segmentation fault: Help. (line 33) * self operators: Self & prefix operators. (line 6) -* sequence: Arrays. (line 131) -* settings <1>: Options. (line 101) -* settings: Configuring. (line 21) +* sequence: Arrays. (line 128) +* settings <1>: Options. (line 113) +* settings: Configuring. (line 23) * sgn: Mathematical functions. (line 26) * shading: fill. (line 32) -* shift <1>: three. (line 380) +* shift <1>: three. (line 409) * shift: Transforms. (line 27) * Shift: label. (line 34) * shiftless: Transforms. (line 53) * shipout: Frames and pictures. (line 83) -* showtarget: three. (line 300) +* showtarget: three. (line 326) * Si: Mathematical functions. (line 48) +* signedint: Files. (line 71) * SimpleHead: draw. (line 26) * simplex: simplex. (line 6) * simpson: Mathematical functions. @@ -9158,31 +9248,33 @@ Index (line 20) * sin: Mathematical functions. (line 6) -* single: Files. (line 71) +* single precision: Files. (line 71) +* singleint: Files. (line 71) +* singlereal: Files. (line 71) * sinh: Mathematical functions. (line 6) -* size <1>: Options. (line 128) -* size <2>: three. (line 433) +* size <1>: Options. (line 140) +* size <2>: three. (line 462) * size <3>: Frames and pictures. (line 43) -* size: Paths and guides. (line 71) -* size3: three. (line 225) +* size: Paths and guides. (line 70) +* size3: three. (line 251) * slant: Transforms. (line 45) * Slant: label. (line 43) * sleep: Data types. (line 329) -* slice: Paths and guides. (line 233) +* slice: Paths and guides. (line 232) * slices: Slices. (line 6) * slide: slide. (line 6) * slopefield: slopefield. (line 6) * solid: Pens. (line 92) * solids: solids. (line 9) -* solve: Arrays. (line 265) -* sort: Arrays. (line 190) +* solve: Arrays. (line 262) +* sort: Arrays. (line 187) * Spline <1>: graph3. (line 100) * Spline: graph. (line 34) * split: Data types. (line 261) * sqrt: Mathematical functions. (line 6) -* squarecap: Pens. (line 125) +* squarecap: Pens. (line 126) * srand: Mathematical functions. (line 39) * stack overflow <1>: Help. (line 33) @@ -9194,157 +9286,155 @@ Index * step: Debugger. (line 39) * stickframe: markers. (line 16) * stop: Debugger. (line 10) -* straight: three. (line 433) +* straight: three. (line 462) * Straight: graph. (line 31) -* straight: Paths and guides. (line 78) +* straight: Paths and guides. (line 77) * strftime: Data types. (line 291) * string: Data types. (line 179) * stroke: fill. (line 36) -* strokepath: Paths and guides. (line 290) +* strokepath: Paths and guides. (line 289) * strptime: Data types. (line 299) * struct: Structures. (line 6) * structures: Structures. (line 6) -* subpath <1>: three. (line 433) -* subpath: Paths and guides. (line 167) +* subpath <1>: three. (line 462) +* subpath: Paths and guides. (line 166) * subpictures: Frames and pictures. (line 103) * substr: Data types. (line 244) * Subversion: Subversion. (line 6) -* sum: Arrays. (line 219) -* superpath: Tutorial. (line 197) -* Suppress: Pens. (line 327) -* SuppressQuiet: Pens. (line 331) +* sum: Arrays. (line 216) +* superpath: Tutorial. (line 132) +* Suppress: Pens. (line 328) +* SuppressQuiet: Pens. (line 332) * surface <1>: graph3. (line 100) * surface: three. (line 47) * SVN: Subversion. (line 6) -* system <1>: Options. (line 144) -* system: Files. (line 153) +* system <1>: Options. (line 156) +* system: Files. (line 156) * syzygy: syzygy. (line 6) * tab: Files. (line 59) -* tab completion: Tutorial. (line 21) +* tab completion: Tutorial. (line 35) * Tan: Mathematical functions. (line 20) * tan: Mathematical functions. (line 6) * tanh: Mathematical functions. (line 6) -* target: three. (line 300) -* tell: Files. (line 86) +* target: three. (line 326) +* tell: Files. (line 89) * tension <1>: three. (line 6) -* tension: Tutorial. (line 165) -* tensionSpecifier: Paths and guides. (line 381) +* tension: Bezier curves. (line 56) +* tensionSpecifier: Paths and guides. (line 380) * tensor product shading: fill. (line 74) * tensorshade: fill. (line 74) -* tex <1>: Options. (line 128) +* tex <1>: Options. (line 140) * tex: Frames and pictures. (line 274) -* TeX fonts: Pens. (line 197) +* TeX fonts: Pens. (line 198) * TeX string: Data types. (line 179) -* texcommand: Configuring. (line 68) -* texdvicommand: Configuring. (line 68) +* texcommand: Configuring. (line 67) * TeXHead: draw. (line 26) -* TeXHead3: three. (line 476) +* TeXHead3: three. (line 505) * texpath <1>: label. (line 116) -* texpath: Configuring. (line 68) +* texpath: Configuring. (line 67) * texpreamble: Frames and pictures. (line 282) * texreset: Frames and pictures. (line 285) * textbook graph: graph. (line 361) * tgz: UNIX binary distributions. (line 6) -* thick: three. (line 104) -* thin: three. (line 104) +* thick: three. (line 105) +* thin: three. (line 105) * this: Structures. (line 6) * three: three. (line 6) * tick: graph. (line 332) * Ticks: graph. (line 155) * ticks: graph. (line 155) * tildeframe: markers. (line 26) -* tile: Pens. (line 247) -* tilings: Pens. (line 234) +* tile: Pens. (line 248) +* tilings: Pens. (line 235) * time: Data types. (line 291) -* times: Paths and guides. (line 202) +* times: Paths and guides. (line 201) * Top: graph. (line 131) -* TopView: three. (line 340) +* TopView: three. (line 369) * trace: Debugger. (line 51) * trailingzero: graph. (line 169) -* transform <1>: three. (line 407) +* transform <1>: three. (line 436) * transform: Transforms. (line 6) -* transform3: three. (line 376) -* transparency: Pens. (line 218) -* transpose: Arrays. (line 211) +* transform3: three. (line 405) +* transparency: Pens. (line 219) +* transpose: Arrays. (line 208) * tree: tree. (line 9) * trembling: trembling. (line 6) * triangle: geometry. (line 6) * triangulate: contour. (line 156) -* tridiagonal: Arrays. (line 268) +* tridiagonal: Arrays. (line 265) * trigonometric integrals: Mathematical functions. (line 48) * triple: Data types. (line 108) * TrueMargin: draw. (line 42) -* TrueMargin3: three. (line 492) +* TrueMargin3: three. (line 521) * tube <1>: tube. (line 6) -* tube: three. (line 104) +* tube: three. (line 105) * tutorial: Tutorial. (line 6) * typedef <1>: Functions. (line 36) * typedef: Data types. (line 339) -* undefined: Paths and guides. (line 264) +* undefined: Paths and guides. (line 263) * UnFill: Frames and pictures. (line 152) * unfill: fill. (line 105) * UnFill: draw. (line 26) * unicode: unicode. (line 6) -* uniform: Arrays. (line 158) +* uniform: Arrays. (line 155) * Uninstall: Uninstall. (line 6) * unit: Data types. (line 78) -* unitbox <1>: three. (line 269) -* unitbox: Tutorial. (line 218) -* unitcircle <1>: three. (line 236) -* unitcircle: Tutorial. (line 110) +* unitbox <1>: three. (line 295) +* unitbox: Tutorial. (line 153) +* unitcircle <1>: three. (line 262) +* unitcircle: Tutorial. (line 126) * unitrand: Mathematical functions. (line 39) * unitsize <1>: Frames and pictures. (line 64) -* unitsize: Tutorial. (line 73) +* unitsize: Tutorial. (line 84) * UNIX binary distributions: UNIX binary distributions. (line 6) * unpacking: Rest arguments. (line 39) * unravel: Import. (line 31) -* up: three. (line 300) +* up: three. (line 326) * update: Files. (line 36) * UpsideDown: Frames and pictures. (line 95) * usepackage: Frames and pictures. (line 287) -* user coordinates: Tutorial. (line 73) +* user coordinates: Tutorial. (line 84) * user-defined operators: User-defined operators. (line 6) * usleep: Data types. (line 332) * variable initializers: Variable initializers. (line 6) * vectorfield: graph. (line 965) -* vectorfield3: graph3. (line 156) -* vectorization: Arrays. (line 325) +* vectorfield3: graph3. (line 159) +* vectorization: Arrays. (line 322) * verbatim: Frames and pictures. (line 267) -* vertex-dependent colors: three. (line 75) +* vertex-dependent colors: three. (line 76) * Vertical: flowchart. (line 74) * viewportheight: LaTeX usage. (line 32) -* viewportmargin: three. (line 228) -* viewportsize: three. (line 228) +* viewportmargin: three. (line 254) +* viewportsize: three. (line 254) * viewportwidth: LaTeX usage. (line 32) -* views: three. (line 197) +* views: three. (line 223) * vim: Editing modes. (line 33) * virtual functions: Structures. (line 189) * void: Data types. (line 10) -* W: Tutorial. (line 94) -* whatever: Paths and guides. (line 228) +* W: Tutorial. (line 104) +* whatever: Paths and guides. (line 227) * Wheel: palette. (line 22) * wheel mouse: GUI. (line 6) * while: Programming. (line 29) * white-space string delimiter mode: Arrays. (line 353) * width: LaTeX usage. (line 32) -* windingnumber: Paths and guides. (line 264) +* windingnumber: Paths and guides. (line 263) * word: Arrays. (line 353) -* write <1>: Arrays. (line 394) +* write <1>: Arrays. (line 393) * write: Files. (line 51) -* X: three. (line 236) -* xasy <1>: GUI. (line 6) -* xasy: Configuring. (line 68) +* X: three. (line 262) +* xasy: GUI. (line 6) * xaxis3: graph3. (line 7) -* xelatex <1>: Options. (line 128) +* xelatex <1>: Options. (line 140) * xelatex: embed. (line 10) * xequals: graph. (line 284) * XEquals: graph. (line 270) @@ -9355,14 +9445,14 @@ Index * xoutput: Files. (line 71) * xpart: Data types. (line 89) * xscale: Transforms. (line 33) -* xscale3: three. (line 383) +* xscale3: three. (line 412) * xtick: graph. (line 332) * XYEquals: graph3. (line 20) * XYZero: graph3. (line 20) * XZEquals: graph3. (line 20) * XZero: graph. (line 265) * XZZero: graph3. (line 20) -* Y <1>: three. (line 236) +* Y <1>: three. (line 262) * Y: Mathematical functions. (line 6) * yaxis3: graph3. (line 7) @@ -9371,12 +9461,12 @@ Index * ylimits: graph. (line 626) * ypart: Data types. (line 92) * yscale: Transforms. (line 36) -* yscale3: three. (line 386) +* yscale3: three. (line 415) * ytick: graph. (line 332) * YZEquals: graph3. (line 20) * YZero: graph. (line 119) * YZZero: graph3. (line 20) -* Z: three. (line 236) +* Z: three. (line 262) * zaxis3: graph3. (line 7) * zero_Ai: Mathematical functions. (line 48) @@ -9388,11 +9478,11 @@ Index (line 48) * zero_J: Mathematical functions. (line 48) -* zerowinding: Pens. (line 148) +* zerowinding: Pens. (line 149) * zeta: Mathematical functions. (line 48) * zpart: Data types. (line 161) -* zscale3: three. (line 389) +* zscale3: three. (line 418) * |: Arithmetic & logical. (line 62) * ||: Arithmetic & logical. @@ -9402,144 +9492,145 @@ Index Tag Table: Node: Top574 -Node: Description6760 -Node: Installation10175 -Node: UNIX binary distributions11223 -Node: MacOS X binary distributions12329 -Node: Microsoft Windows13277 -Node: Configuring14447 -Node: Search paths18640 -Node: Compiling from UNIX source19320 -Ref: multisampling19909 -Node: Editing modes22335 -Node: Subversion24535 -Node: Uninstall24996 -Node: Tutorial25346 -Ref: unitcircle29089 -Ref: Bezier29298 -Node: Drawing commands34357 -Node: draw36066 -Ref: arrows37214 -Node: fill42439 -Ref: gradient shading43483 -Node: clip47676 -Node: label48268 -Ref: Label48967 -Node: Programming54711 -Ref: array iteration55528 -Node: Data types56610 -Ref: format65507 -Node: Paths and guides68971 -Ref: circle69225 -Ref: arctime74570 -Ref: extension78435 -Node: Pens85118 -Ref: fillrule92263 -Ref: basealign93160 -Ref: transparency95985 -Ref: makepen99428 -Ref: overwrite100266 -Node: Transforms101476 -Node: Frames and pictures103267 -Ref: envelope104408 -Ref: size105491 -Ref: unitsize106478 -Ref: shipout107538 -Ref: filltype109846 -Ref: add112829 -Ref: add about113775 -Ref: tex116720 -Node: Files117594 -Ref: cd118559 -Ref: scroll122940 -Node: Variable initializers125983 -Node: Structures128278 -Node: Operators135620 -Node: Arithmetic & logical135934 -Node: Self & prefix operators137831 -Node: User-defined operators138619 -Node: Implicit scaling139530 -Node: Functions140093 -Ref: stack overflow142846 -Node: Default arguments143410 -Node: Named arguments144149 -Node: Rest arguments146311 -Node: Mathematical functions149121 -Node: Arrays153726 -Ref: sort160907 -Ref: tridiagonal163198 -Ref: solve164426 -Node: Slices168553 -Node: Casts172447 -Node: Import174413 -Node: Static179643 -Node: LaTeX usage182539 -Node: Base modules187980 -Node: plain190480 -Node: simplex191132 -Node: math191405 -Node: interpolate192504 -Node: geometry192783 -Node: trembling193387 -Node: stats193748 -Node: patterns194008 -Node: markers194244 -Node: tree196027 -Node: binarytree196215 -Node: drawtree196804 -Node: syzygy197008 -Node: feynman197282 -Node: roundedpath197557 -Node: animation197840 -Ref: animate198259 -Node: embed199398 -Node: slide201187 -Node: MetaPost201527 -Node: unicode202243 -Node: latin1203131 -Node: babel203499 -Node: labelpath203728 -Node: labelpath3204548 -Node: annotate204859 -Node: CAD205330 -Node: graph205640 -Ref: ticks212478 -Ref: pathmarkers225626 -Ref: marker226091 -Ref: markuniform226442 -Ref: errorbars228233 -Ref: automatic scaling232289 -Node: palette242922 -Ref: images243040 -Ref: image247211 -Ref: logimage247689 -Ref: penimage248495 -Node: three248939 -Ref: PostScript3D270300 -Node: obj271992 -Node: graph3272244 -Ref: GaussianSurface277205 -Node: grid3278290 -Node: solids279030 -Node: tube279978 -Node: flowchart282209 -Node: contour286708 -Node: contour3291737 -Node: slopefield292044 -Node: ode293481 -Node: Options293741 -Ref: configuration file298908 -Ref: settings298908 -Ref: convert299979 -Node: Interactive mode302738 -Ref: history304362 -Node: GUI305667 -Node: GUI Installation306170 -Node: GUI Usage307696 -Node: PostScript to Asymptote308599 -Node: Help309742 -Node: Debugger311469 -Node: Credits313254 -Node: Index314167 +Node: Description6833 +Node: Installation10334 +Node: UNIX binary distributions11387 +Node: MacOS X binary distributions12493 +Node: Microsoft Windows13377 +Ref: psview14087 +Node: Configuring15008 +Node: Search paths19228 +Node: Compiling from UNIX source20025 +Ref: multisampling20614 +Node: Editing modes23032 +Node: Subversion25464 +Node: Uninstall25927 +Node: Tutorial26277 +Ref: unitcircle30503 +Node: Drawing commands32484 +Node: draw34195 +Ref: arrows35343 +Node: fill40586 +Ref: gradient shading41630 +Node: clip45823 +Node: label46415 +Ref: Label47114 +Node: Bezier curves52839 +Node: Programming56416 +Ref: array iteration57230 +Node: Data types58312 +Ref: format67213 +Node: Paths and guides70677 +Ref: circle70931 +Ref: arctime76288 +Ref: extension80153 +Node: Pens86836 +Ref: fillrule94080 +Ref: basealign94977 +Ref: transparency97802 +Ref: makepen101245 +Ref: overwrite102083 +Node: Transforms103293 +Node: Frames and pictures105084 +Ref: envelope106225 +Ref: size107308 +Ref: unitsize108295 +Ref: shipout109355 +Ref: filltype111688 +Ref: add114657 +Ref: add about115603 +Ref: tex118548 +Node: Files119422 +Ref: cd120387 +Ref: scroll124856 +Node: Variable initializers127929 +Node: Structures130224 +Node: Operators137676 +Node: Arithmetic & logical137990 +Node: Self & prefix operators139887 +Node: User-defined operators140675 +Node: Implicit scaling141586 +Node: Functions142149 +Ref: stack overflow144902 +Node: Default arguments145466 +Node: Named arguments146205 +Node: Rest arguments148367 +Node: Mathematical functions151177 +Node: Arrays155782 +Ref: sort162842 +Ref: tridiagonal165133 +Ref: solve166361 +Node: Slices170558 +Node: Casts174451 +Node: Import176417 +Node: Static181647 +Node: LaTeX usage184543 +Node: Base modules189988 +Node: plain192488 +Node: simplex193140 +Node: math193413 +Node: interpolate194512 +Node: geometry194791 +Node: trembling195385 +Node: stats195736 +Node: patterns195996 +Node: markers196232 +Node: tree198015 +Node: binarytree198203 +Node: drawtree198792 +Node: syzygy198996 +Node: feynman199270 +Node: roundedpath199545 +Node: animation199828 +Ref: animate200245 +Node: embed201384 +Node: slide203173 +Node: MetaPost203513 +Node: unicode204229 +Node: latin1205117 +Node: babel205485 +Node: labelpath205714 +Node: labelpath3206534 +Node: annotate206845 +Node: CAD207316 +Node: graph207626 +Ref: ticks214450 +Ref: pathmarkers227558 +Ref: marker228023 +Ref: markuniform228374 +Ref: errorbars230165 +Ref: automatic scaling234221 +Node: palette244867 +Ref: images244985 +Ref: image249156 +Ref: logimage249634 +Ref: penimage250440 +Node: three250884 +Ref: PostScript3D273456 +Node: obj275148 +Node: graph3275400 +Ref: GaussianSurface280525 +Node: grid3281610 +Node: solids282350 +Node: tube283298 +Node: flowchart285533 +Node: contour290032 +Node: contour3295063 +Node: slopefield295370 +Node: ode296807 +Node: Options297067 +Ref: configuration file302880 +Ref: settings302880 +Ref: convert303975 +Node: Interactive mode306764 +Ref: history308429 +Node: GUI309734 +Node: GUI installation310237 +Node: GUI usage311375 +Node: PostScript to Asymptote312278 +Node: Help313034 +Node: Debugger314770 +Node: Credits316555 +Node: Index317468 End Tag Table |