diff options
Diffstat (limited to 'Build/source/utils/asymptote/doc/FAQ/asy-faq.info')
-rw-r--r-- | Build/source/utils/asymptote/doc/FAQ/asy-faq.info | 1671 |
1 files changed, 0 insertions, 1671 deletions
diff --git a/Build/source/utils/asymptote/doc/FAQ/asy-faq.info b/Build/source/utils/asymptote/doc/FAQ/asy-faq.info deleted file mode 100644 index dc69d1917e7..00000000000 --- a/Build/source/utils/asymptote/doc/FAQ/asy-faq.info +++ /dev/null @@ -1,1671 +0,0 @@ -Info file: asy-faq.info, -*-Text-*- -produced by bfnnconv.pl from the Bizarre Format With No Name. - -INFO-DIR-SECTION Languages -START-INFO-DIR-ENTRY -* asymptote FAQ: (asy-faq). Asymptote Frequently Asked Questions. -END-INFO-DIR-ENTRY - - -File: asy-faq.info, Node: Top, Next: Question 1.1, Up: (dir) - - ASYMPTOTE FREQUENTLY ASKED QUESTIONS - 2021-02-19 - -This is the list of Frequently Asked Questions about Asymptote (asy). - -Index - -* Menu: -* Section 1:: About Asymptote -* Section 2:: Questions about installation and setup -* Section 3:: Questions about paths -* Section 4:: Questions about labels -* Section 5:: Questions about arrows -* Section 6:: Questions about 2D graphs -* Section 7:: Questions about programming -* Section 8:: Questions about differences between Asymptote and - MetaPost -* Section 9:: Questions about output - -Section 1, About Asymptote -* Question 1.1:: What is Asymptote? -* Question 1.2:: How do I obtain Asymptote? -* Question 1.3:: Where can I ask questions about Asymptote? -* Question 1.4:: Why was the name Asymptote chosen? -* Question 1.5:: In the internal Asymptote source code, what does the - name camp refer to? - -Section 2, Questions about installation and setup -* Question 2.1:: Is it possible to install Asymptote on Mac OS X? -* Question 2.2:: Why do I get the error Bad CPU type in executable on - installing Asymptote from the MAC OS binary? -* Question 2.3:: What do I do if I get the error: Error: pdfetex (file - pdftex.cfg): cannot open config file...texinfo.tex - appears to be broken? -* Question 2.4:: What do I do if I get the error: ! Undefined control - sequence. l.6 @copying? -* Question 2.5:: Is it possible to integrate Asymptote into LaTeX? -* Question 2.6:: Is it possible to integrate Asymptote into latex or - pdflatex? -* Question 2.7:: Do I need the tkinter package to install an Asymptote - rpm binary? -* Question 2.8:: What does the path %USERPROFILE%\.asy\config.asy mean? -* Question 2.9:: Why do I get the error "string not terminated" when I - try to set settings.dir="C:\asymptote\";? -* Question 2.10:: How do I change environment variables in Microsoft - Windows, for example, in order to change the default - PostScript viewer? -* Question 2.11:: Under Microsoft Windows XP, why do I get an error like - "Invalid Parameter - 432x432"? -* Question 2.12:: Why does Asymptote freeze upon trying to draw a label - with my MikTex installation under Microsoft Windows? - -Section 3, Questions about paths -* Question 3.1:: Why do I get a syntax error message when I specify an - integer value for the path tension? -* Question 3.2:: Shouldn't dots always be the same size? - -Section 4, Questions about labels -* Question 4.1:: How do I get Greek letters like omega to show up in my - labels? -* Question 4.2:: Can Asymptote use matrices as labels? -* Question 4.3:: How do I tell Asymptote to load a particular LaTeX - package, like mathptmx? -* Question 4.4:: How can I use international fonts in Asymptote labels? -* Question 4.5:: How can I use Fourier fonts? -* Question 4.6:: Is there any way to change the default appearance of - the decimal separator, using a comma instead of a dot? -* Question 4.7:: How can I get a rotated label with the filled box - rotated as well so that it fits the text? -* Question 4.8:: How can I rotate labels in a 3D figure? -* Question 4.9:: How can I draw some squares and circles of a fixed - size and put a label in the middle of them? -* Question 4.10:: The binary operator * can be used to scale the color - of a pen by a real number. Does this scaling factor - have to be less than 1? -* Question 4.11:: Why is the space after the comma decimal separator in - my locale so large? -* Question 4.12:: How can I prevent - texpreamble("\usepackage[pdftex]{hyperref}") from - changing the page size? - -Section 5, Questions about arrows -* Question 5.1:: How do I draw two arrows at arbitrary positions along - a path? -* Question 5.2:: How do I reverse the direction of an arrowhead? -* Question 5.3:: How do I change the size of all arrows? -* Question 5.4:: Can I create other arrowhead styles? - -Section 6, Questions about 2D graphs -* Question 6.1:: How can I draw x axis ticks on the right side, with - the tick labels on the left side (relative to the axis - path)? -* Question 6.2:: How can I reposition the x axis label to - three-quarters along the axis length? -* Question 6.3:: How can I move the x axis label down 10bp? -* Question 6.4:: Can I use different pens for the axis, the axis label, - and the tick labels? -* Question 6.5:: How can I change the font type of the axes label? -* Question 6.6:: How can I change the font type of the tick labels on - an axis? -* Question 6.7:: How can I prevent axes tick labels from rendering on - top of each other? -* Question 6.8:: How do I make the plot region of a graph, ignoring - labels and legends, have a fixed size? -* Question 6.9:: How can I plot a function f(x) within [0,1]x[0,2] - without explicitly calculating the x values for which - f(x) hits the boundary? -* Question 6.10:: Is it possible to define customized palettes? -* Question 6.11:: Is there an easy way to graph factorial functions - nicely? -* Question 6.12:: How do I indicate that a certain length should be - exactly the size I prescribe with no rescaling, within - a picture which has its own size? -* Question 6.13:: How can I make the y axis display base-2 logarithmic - values? -* Question 6.14:: How can I align the x axes of two graphs on the same - figure? -* Question 6.15:: How can I change the direction of the y-axis, such - that negatives values are on the upper y-axis? -* Question 6.16:: How can I fill a path with a function that defines the - color of each location? -* Question 6.17:: Is there a way to draw a function that is not - explicitly given, such as (y - 2)^2 = x - 1 ? -* Question 6.18:: Is it possible to reverse or stretch an axis? -* Question 6.19:: Why can't I use the UnFill option to draw graphs with - empty markers? -* Question 6.20:: How can I force several images to use the same palette - range (e.g. the entire 0-255 grayscale range)? - -Section 7, Questions about programming -* Question 7.1:: Is Asymptote an interpreter or a compiler? -* Question 7.2:: What is the difference between a frame and a picture? -* Question 7.3:: What is the difference between a path and a guide? -* Question 7.4:: What is a convenient way to declare and initialize an - array of pictures? -* Question 7.5:: Is there a way to define functions that act on arrays - in general (i.e. work for arrays of any type)? -* Question 7.6:: Is there any way to declare structures ahead of their - definition, e.g. where struct A performs some - operation on struct B, but B contains an A member? -* Question 7.7:: Where are static variables in for loops allocated? -* Question 7.8:: Is there a debugger for asy? -* Question 7.9:: Do you accept patches for Asymptote? - -Section 8, Questions about differences between Asymptote and - MetaPost -* Question 8.1:: What is the equivalent of the MetaPost c[a,b] - interpolation operator? -* Question 8.2:: How does picture scaling differ in Asymptote and - MetaPost? -* Question 8.3:: How can I avoid automatic scaling of a picture? -* Question 8.4:: What is the equivalent of MetaPost ... command? -* Question 8.5:: What is the equivalent of the MetaPost pickup command? -* Question 8.6:: What is the equivalent of the MetaPost whatever - command? -* Question 8.7:: What is the equivalent for the MetaPost command for - lray - horiz*v - verti*u = whatever*(LightSource - R), - a system of three linear equations for three unknowns: - horiz, verti, whatever? -* Question 8.8:: In MetaPost, it is possible to have a drawing remain - the same size in different pictures by defining a unit - u and explicitly multiply all the coordinates by u. Is - there a better way to do this in Asymptote? -* Question 8.9:: In MetaPost, one could produce tiling pictures by - generating a picture, and then clipping the picture to - a rectangle of fixed dimensions around the center of - the picture. How is that done in Asymptote? - -Section 9, Questions about output -* Question 9.1:: How can I disable automatic invocation of the PS - viewer after an asy file is done processing? -* Question 9.2:: How do I output jpeg images? -* Question 9.3:: Can I embed bitmaps (photos) into my drawings and - position and scale them? -* Question 9.4:: Does Asymptote support direct PDF output? -* Question 9.5:: How to I produce large pictures of high quality in - raster format (e.g. png, giff etc). -* Question 9.6:: Is it possible to produce multi-page documents with - asymptote? - - - -File: asy-faq.info, Node: Section 1, Next: Section 2, Previous: Top, Up: Top - -About Asymptote - -* Menu: -* Question 1.1:: What is Asymptote? -* Question 1.2:: How do I obtain Asymptote? -* Question 1.3:: Where can I ask questions about Asymptote? -* Question 1.4:: Why was the name Asymptote chosen? -* Question 1.5:: In the internal Asymptote source code, what does the - name camp refer to? - - - -File: asy-faq.info, Node: Question 1.1, Next: Question 1.2, Previous: Top, Up: Section 1 - -Question 1.1. What is Asymptote? - -Asymptote is a vector graphics language designed for technical graphics, -inspired by MetaPost but with IEEE floating-point numerics, native -three-dimensional graphics, Grayscale/RGB/CMYK colourspaces, and a -C++-like syntax. Unlike MetaPost, it natively supports multiple-segment -paths (and hence regions other than simply connected ones), tiling -patterns, Gouraud shading, tensor patch shading, and PostScript images. - - -File: asy-faq.info, Node: Question 1.2, Next: Question 1.3, Previous: Question 1.1, Up: Section 1 - -Question 1.2. How do I obtain Asymptote? - -Binary releases are available for Linux, MacOS X, and Microsoft Windows -platforms, in addition to full source code, from the website -https://asymptote.sourceforge.io/. Many Linux distributions (such as -RedHat and Debian) now include an Asymptote package (check your -distribution's documentation for further information about this). - - -File: asy-faq.info, Node: Question 1.3, Next: Question 1.4, Previous: Question 1.2, Up: Section 1 - -Question 1.3. Where can I ask questions about Asymptote? - -If you have a question, please try to find an answer in this FAQ, in the -extensive Asymptote documentation at -https://asymptote.sourceforge.io/doc/, or search the forum: -http://sourceforge.net/forum/forum.php?forum_id=409349. - - -File: asy-faq.info, Node: Question 1.4, Next: Question 1.5, Previous: Question 1.3, Up: Section 1 - -Question 1.4. Why was the name Asymptote chosen? - -Well, it isn't the perfect graphics package, but we do think it is getting -there asymptotically... - - -File: asy-faq.info, Node: Question 1.5, Next: Question 2.1, Previous: Question 1.4, Up: Section 1 - -Question 1.5. In the internal Asymptote source code, what does the name camp refer to? - -That was our original tentative name for this project, which stood for -"C's Answer to MetaPost" (the language that inspired Asymptote). However, -we eventually decided that the name Asymptote better emphasizes the -mathematical and graphical nature of this language. - - -File: asy-faq.info, Node: Section 2, Next: Section 3, Previous: Section 1, Up: Top - -Questions about installation and setup - -* Menu: -* Question 2.1:: Is it possible to install Asymptote on Mac OS X? -* Question 2.2:: Why do I get the error Bad CPU type in executable on - installing Asymptote from the MAC OS binary? -* Question 2.3:: What do I do if I get the error: Error: pdfetex (file - pdftex.cfg): cannot open config file...texinfo.tex - appears to be broken? -* Question 2.4:: What do I do if I get the error: ! Undefined control - sequence. l.6 @copying? -* Question 2.5:: Is it possible to integrate Asymptote into LaTeX? -* Question 2.6:: Is it possible to integrate Asymptote into latex or - pdflatex? -* Question 2.7:: Do I need the tkinter package to install an Asymptote - rpm binary? -* Question 2.8:: What does the path %USERPROFILE%\.asy\config.asy mean? -* Question 2.9:: Why do I get the error "string not terminated" when I - try to set settings.dir="C:\asymptote\";? -* Question 2.10:: How do I change environment variables in Microsoft - Windows, for example, in order to change the default - PostScript viewer? -* Question 2.11:: Under Microsoft Windows XP, why do I get an error like - "Invalid Parameter - 432x432"? -* Question 2.12:: Why does Asymptote freeze upon trying to draw a label - with my MikTex installation under Microsoft Windows? - - - -File: asy-faq.info, Node: Question 2.1, Next: Question 2.2, Previous: Question 1.5, Up: Section 2 - -Question 2.1. Is it possible to install Asymptote on Mac OS X? - -It is easy to compile Asymptote directly from the source code at -http://sourceforge.net/project/showfiles.php?group_id=120000 We recommend -first upgrading to the latest GNU readline library, unless you don't care -about interactive readline support (in which case configure will -automatically detect and disable obsolete versions of the readline -library). Marius Schamschula also maintains a binary package for various -MacOS X platforms -http://www.hmug.org/pub/MacOS_X/X/Applications/Publishing/asymptote. - - -File: asy-faq.info, Node: Question 2.2, Next: Question 2.3, Previous: Question 2.1, Up: Section 2 - -Question 2.2. Why do I get the error Bad CPU type in executable on installing Asymptote from the MAC OS binary? - -This means either that you have a binary distribution for another MAC -architecture, or (according to Marius Schamschula) that you may have a -missing library. The simplest solution is to compile Asymptote directly -from the official source: -http://sourceforge.net/project/showfiles.php?group_id=120000. - - -File: asy-faq.info, Node: Question 2.3, Next: Question 2.4, Previous: Question 2.2, Up: Section 2 - -Question 2.3. What do I do if I get the error: Error: pdfetex (file pdftex.cfg): cannot open config file...texinfo.tex appears to be broken? - -Simply put https://asymptote.sourceforge.io/asymptote.pdf in the directory -doc and repeat the command make all. Or, if you don't want to build a -local copy of the documentation, simply proceed with make install-asy. - - -File: asy-faq.info, Node: Question 2.4, Next: Question 2.5, Previous: Question 2.3, Up: Section 2 - -Question 2.4. What do I do if I get the error: ! Undefined control sequence. l.6 @copying? - -Either upgrade your texinfo package or follow one of the easy work arounds -in *Note Question 2.3:: `What do I do if I get the error: Error: pdfetex -(file pdftex.cfg): cannot open config file...texinfo.tex appears to be -broken?'. - - -File: asy-faq.info, Node: Question 2.5, Next: Question 2.6, Previous: Question 2.4, Up: Section 2 - -Question 2.5. Is it possible to integrate Asymptote into LaTeX? - -Yes, see the example latexusage.tex. Dario Teixeira has also written a -detailed guide on the topic. You can download it from -http://dario.dse.nl/projects/asylatex/. - -Philippe Ivaldi has contributed an Asymptote mode for Emacs users -https://asymptote.sourceforge.io/doc/Editing-modes.html, which includes a -lasy-mode that allows one to compile and view the output of one -\begin{asy}...\end{asy} section at a time. - - -File: asy-faq.info, Node: Question 2.6, Next: Question 2.7, Previous: Question 2.5, Up: Section 2 - -Question 2.6. Is it possible to integrate Asymptote into latex or pdflatex? - -Yes, as of version 1.14, Asymptote supports latex and pdflatex (both in -EPS/PDF and inline mode), as illustrated by the example latexusage.tex: - -pdflatex latexusage -asy latexusage -pdflatex latexusage - -File: asy-faq.info, Node: Question 2.7, Next: Question 2.8, Previous: Question 2.6, Up: Section 2 - -Question 2.7. Do I need the tkinter package to install an Asymptote rpm binary? - -No, you don't need tkinter unless you want to try out the GUI xasy. Try - -rpm -Uvh --nodeps asymptote-x.xx-1.i386.rpm -where x.xx represents the version number. - - -File: asy-faq.info, Node: Question 2.8, Next: Question 2.9, Previous: Question 2.7, Up: Section 2 - -Question 2.8. What does the path %USERPROFILE%\.asy\config.asy mean? - -That is the way that Microsoft Windows refers to the user profile -directory. There's nothing really to understand here, just put your -configuration commands in the file config.asy in a new folder -%USERPROFILE%\.asy. - - -File: asy-faq.info, Node: Question 2.9, Next: Question 2.10, Previous: Question 2.8, Up: Section 2 - -Question 2.9. Why do I get the error "string not terminated" when I try to set settings.dir="C:\asymptote\";? - -The backslash is an escape character here, so \" is interpreted as a -verbatim quotation mark, leaving the string without a terminating -quotation mark. Fortunately, this is the only escaped character in -double-quoted strings. A final backslash isn't needed here anyway, but -should you really want one somewhere, you can say: -settings.dir="C:\asymptote"+'\\';. - - -File: asy-faq.info, Node: Question 2.10, Next: Question 2.11, Previous: Question 2.9, Up: Section 2 - -Question 2.10. How do I change environment variables in Microsoft Windows, for example, in order to change the default PostScript viewer? - -While it is easier to set the corresponding Asymptote configuration -variable in your config.asy file, here is the procedure for changing -Microsoft Windows environment variables: - -Click on the [Start] button - -* RIGHT-click on 'My Computer' - -* Choose 'Properties' from the popup menu - -* Click the 'Advanced' tab - -* Click the 'Environment Variables' button. - - -File: asy-faq.info, Node: Question 2.11, Next: Question 2.12, Previous: Question 2.10, Up: Section 2 - -Question 2.11. Under Microsoft Windows XP, why do I get an error like "Invalid Parameter - 432x432"? - -This means that ImageMagick wasn't properly installed and you are using -the MSDOS convert program rather than the ImageMagick one. Or you may have -installed ImageMagick but ran Asymptote from an existing MSDOS window. In -that case, simply open a new window and try again. If that doesn't work, -check that - -convert --version -returns something like - -Version: ImageMagick 6.2.8 06/27/06 Q16 http://www.imagemagick.org - -File: asy-faq.info, Node: Question 2.12, Next: Question 3.1, Previous: Question 2.11, Up: Section 2 - -Question 2.12. Why does Asymptote freeze upon trying to draw a label with my MikTex installation under Microsoft Windows? - -Likely, this means that latex and dvips are not in your default path. Try -adding the appropriate paths in your config.asy file, for example: - -import settings; -latex="C:\Program Files\MiKTeX 2.7\miktex\bin\latex.exe"; -dvips="C:\Program Files\MiKTeX 2.7\miktex\bin\dvips.exe"; - -File: asy-faq.info, Node: Section 3, Next: Section 4, Previous: Section 2, Up: Top - -Questions about paths - -* Menu: -* Question 3.1:: Why do I get a syntax error message when I specify an - integer value for the path tension? -* Question 3.2:: Shouldn't dots always be the same size? - - - -File: asy-faq.info, Node: Question 3.1, Next: Question 3.2, Previous: Question 2.12, Up: Section 3 - -Question 3.1. Why do I get a syntax error message when I specify an integer value for the path tension? - -What is happening here is that - -draw((0,0)..tension 2..(0,50)..(100,100)); -is read as - -draw((0,0)..tension 2. .(0,50)..(100,100)); -So the first . after the two is treated as a decimal point. Just put a -space after the integer tension value: - -draw((0,0)..tension 2 ..(0,50)..(100,100)); - -File: asy-faq.info, Node: Question 3.2, Next: Question 4.1, Previous: Question 3.1, Up: Section 3 - -Question 3.2. Shouldn't dots always be the same size? - -From the documentation: - -"The dot command defined in the module plain draws a dot having a diameter -equal to an explicit pen linewidth or the default linewidth magnified by -dotfactor (6 by default)." - -Thus, when you use the default pen, the dot will have size 6*linewidth, -but when you give a pen with an explicit width specified, you will have a -dot of size linewidth. If you want the first case to behave like the -second, you may set dotfactor=1. - - -File: asy-faq.info, Node: Section 4, Next: Section 5, Previous: Section 3, Up: Top - -Questions about labels - -* Menu: -* Question 4.1:: How do I get Greek letters like omega to show up in my - labels? -* Question 4.2:: Can Asymptote use matrices as labels? -* Question 4.3:: How do I tell Asymptote to load a particular LaTeX - package, like mathptmx? -* Question 4.4:: How can I use international fonts in Asymptote labels? -* Question 4.5:: How can I use Fourier fonts? -* Question 4.6:: Is there any way to change the default appearance of - the decimal separator, using a comma instead of a dot? -* Question 4.7:: How can I get a rotated label with the filled box - rotated as well so that it fits the text? -* Question 4.8:: How can I rotate labels in a 3D figure? -* Question 4.9:: How can I draw some squares and circles of a fixed - size and put a label in the middle of them? -* Question 4.10:: The binary operator * can be used to scale the color - of a pen by a real number. Does this scaling factor - have to be less than 1? -* Question 4.11:: Why is the space after the comma decimal separator in - my locale so large? -* Question 4.12:: How can I prevent - texpreamble("\usepackage[pdftex]{hyperref}") from - changing the page size? - - - -File: asy-faq.info, Node: Question 4.1, Next: Question 4.2, Previous: Question 3.2, Up: Section 4 - -Question 4.1. How do I get Greek letters like omega to show up in my labels? - -In (La)TeX, Greek letters can be obtained in math mode by prepending a -backslash to the letter name. So for a omega symbol, use "$\omega$". -Everything between the dollar signs is considered to be a math formula. -Uppercase Greek letters can be used by capitalizing the first letter of -the name: - -label("$\omega$",(0,0)); -label("$\Omega$",(20,0)); - -File: asy-faq.info, Node: Question 4.2, Next: Question 4.3, Previous: Question 4.1, Up: Section 4 - -Question 4.2. Can Asymptote use matrices as labels? - -Yes: -usepackage("amsmath"); -label("$\begin{matrix} 1 & 2 \\\ 1 & 1 \end{matrix}$",(0,0)); - -File: asy-faq.info, Node: Question 4.3, Next: Question 4.4, Previous: Question 4.2, Up: Section 4 - -Question 4.3. How do I tell Asymptote to load a particular LaTeX package, like mathptmx? - -Put - -usepackage("mathptmx"); -at the beginning of your file. Note: to enable the Adobe Times Roman font -for text, you will also need to say: -defaultpen(TimesRoman()); - -File: asy-faq.info, Node: Question 4.4, Next: Question 4.5, Previous: Question 4.3, Up: Section 4 - -Question 4.4. How can I use international fonts in Asymptote labels? - -See https://asymptote.sourceforge.io/doc/Pens.html. - - -File: asy-faq.info, Node: Question 4.5, Next: Question 4.6, Previous: Question 4.4, Up: Section 4 - -Question 4.5. How can I use Fourier fonts? - -usepackage("fourier"); -defaultpen(font("T1","fut\textfamilyextension","m","n")); - -File: asy-faq.info, Node: Question 4.6, Next: Question 4.7, Previous: Question 4.5, Up: Section 4 - -Question 4.6. Is there any way to change the default appearance of the decimal separator, using a comma instead of a dot? - -Just set your locale appropriately: - -locale("it_IT"); -usepackage("icomma"); -label(format(0.5)); - -File: asy-faq.info, Node: Question 4.7, Next: Question 4.8, Previous: Question 4.6, Up: Section 4 - -Question 4.7. How can I get a rotated label with the filled box rotated as well so that it fits the text? - -frame f; -label(f,"This is some text",white,Fill(blue)); -add(rotate(65)*f); - -File: asy-faq.info, Node: Question 4.8, Next: Question 4.9, Previous: Question 4.7, Up: Section 4 - -Question 4.8. How can I rotate labels in a 3D figure? - -You need to first project the triple to a pair like this: - -import three; -size(100,100); - -draw(rotate(90,project(Z))*"A",O--X); - -File: asy-faq.info, Node: Question 4.9, Next: Question 4.10, Previous: Question 4.8, Up: Section 4 - -Question 4.9. How can I draw some squares and circles of a fixed size and put a label in the middle of them? - -Fixed-size objects should be drawn on a separate picture and then added to -currentpicture. Here is one way (see also -https://asymptote.sourceforge.io/gallery/subpictures.asy and -https://asymptote.sourceforge.io/gallery/mosquito.asy): - -real u=2cm; - -picture square; -draw(square,scale(u)*shift(-0.5,-0.5)*unitsquare); - -picture circle; -draw(circle,scale(0.5u)*unitcircle); - -void add(picture pic=currentpicture, Label L, picture object, pair z) { -add(pic,object,z); -label(pic,L,z); -} - -add("square",square,(0,0)); -add("circle",circle,(5cm,0)); - -File: asy-faq.info, Node: Question 4.10, Next: Question 4.11, Previous: Question 4.9, Up: Section 4 - -Question 4.10. The binary operator * can be used to scale the color of a pen by a real number. Does this scaling factor have to be less than 1? - -The scaling factor can be greater than 1. But keep in mind that the rgb -color components saturate at 1. - -Try -write(cyan); write(0.8*cyan); write(1.5*cyan); -and you will quickly see what is going on. - -To get a lighter cyan you can say white+cyan, which yields rgb(0.5,1,1). -If you want something even lighter specify the rgb colors directly, for -example, rgb(0.9,1,1). - -Alternatively, work in cmyk colour space, which is nicer in that it -handles saturation separately from hue: - -0.1*Cyan is light and 0.9*Cyan is dark. You can also say 0.1*cmyk(red). - - -File: asy-faq.info, Node: Question 4.11, Next: Question 4.12, Previous: Question 4.10, Up: Section 4 - -Question 4.11. Why is the space after the comma decimal separator in my locale so large? - -LaTeX is treating the comma as punctuation and not as a decimal separator. -The solution is to load the icomma package near the beginning of your -file: -usepackage("icomma"); - -File: asy-faq.info, Node: Question 4.12, Next: Question 5.1, Previous: Question 4.11, Up: Section 4 - -Question 4.12. How can I prevent texpreamble("\usepackage[pdftex]{hyperref}") from changing the page size? - -texpreamble("\usepackage[pdftex,setpagesize=false]{hyperref}"); - -File: asy-faq.info, Node: Section 5, Next: Section 6, Previous: Section 4, Up: Top - -Questions about arrows - -* Menu: -* Question 5.1:: How do I draw two arrows at arbitrary positions along - a path? -* Question 5.2:: How do I reverse the direction of an arrowhead? -* Question 5.3:: How do I change the size of all arrows? -* Question 5.4:: Can I create other arrowhead styles? - - - -File: asy-faq.info, Node: Question 5.1, Next: Question 5.2, Previous: Question 4.12, Up: Section 5 - -Question 5.1. How do I draw two arrows at arbitrary positions along a path? - -Assuming that at least one of the arrowheads is to be filled, you can do -this: - -size(200); -path g = (0,0)..(1,3)..(3,0); -draw(g,Arrow(Relative(0.9))); -add(arrow(g,invisible,FillDraw(black),Relative(0.5))); -add(arrow(reverse(g),invisible,FillDraw(white,black),Relative(0.9))); -If both of the arrowheads are to be drawn with filltype NoFill, one will -need to create a specialized version of the arrow routine in -plain_arrows.asy: - -void arrow(frame f, arrowhead arrowhead=DefaultHead, - path g, pen p=currentpen, real size=0, - real angle=arrowangle, filltype filltype=arrowhead.defaultfilltype, - position position=EndPoint, bool forwards=true, - margin margin=NoMargin, bool center=false); - -File: asy-faq.info, Node: Question 5.2, Next: Question 5.3, Previous: Question 5.1, Up: Section 5 - -Question 5.2. How do I reverse the direction of an arrowhead? - -Simply reverse the direction of the path. - -path g=((0,0)--(5cm,0)); -draw(reverse(g),Arrow(Relative(0.55))); - -File: asy-faq.info, Node: Question 5.3, Next: Question 5.4, Previous: Question 5.2, Up: Section 5 - -Question 5.3. How do I change the size of all arrows? - -To override the arrowsize you can give every Arrow drawing attribute a -real size argument. If you want to do this globally, you can override the -pen-dependent arrowsize function like this: - -DefaultHead.size=new real(pen p=currentpen) {return 2mm;}; - -File: asy-faq.info, Node: Question 5.4, Next: Question 6.1, Previous: Question 5.3, Up: Section 5 - -Question 5.4. Can I create other arrowhead styles? - -Yes, you can build custom arrowheads like this (see the predefined -arrowhead styles in plain_arrows.asy for further examples): - -arrowhead DotHead; -DotHead.head=new path(path g, position position=EndPoint, pen p=currentpen, - real size=0, real angle=arrowangle) { - if(size == 0) size=DotHead.size(p); - bool relative=position.relative; - real position=position.position.x; - if(relative) position=reltime(g,position); - path r=subpath(g,position,0); - pair x=point(r,0); - real t=arctime(r,size); - pair y=point(r,t); - return circle(0.5(x+y),0.5size); -}; - -size(100); -draw((0,0)..(1,1)..(2,0),Arrow(DotHead)); -dot((2,0),red); -If you submit your alternate arrowheads to the Forum or the Patch -Tracking System, we'll consider including them in a future release. - - -File: asy-faq.info, Node: Section 6, Next: Section 7, Previous: Section 5, Up: Top - -Questions about 2D graphs - -* Menu: -* Question 6.1:: How can I draw x axis ticks on the right side, with - the tick labels on the left side (relative to the axis - path)? -* Question 6.2:: How can I reposition the x axis label to - three-quarters along the axis length? -* Question 6.3:: How can I move the x axis label down 10bp? -* Question 6.4:: Can I use different pens for the axis, the axis label, - and the tick labels? -* Question 6.5:: How can I change the font type of the axes label? -* Question 6.6:: How can I change the font type of the tick labels on - an axis? -* Question 6.7:: How can I prevent axes tick labels from rendering on - top of each other? -* Question 6.8:: How do I make the plot region of a graph, ignoring - labels and legends, have a fixed size? -* Question 6.9:: How can I plot a function f(x) within [0,1]x[0,2] - without explicitly calculating the x values for which - f(x) hits the boundary? -* Question 6.10:: Is it possible to define customized palettes? -* Question 6.11:: Is there an easy way to graph factorial functions - nicely? -* Question 6.12:: How do I indicate that a certain length should be - exactly the size I prescribe with no rescaling, within - a picture which has its own size? -* Question 6.13:: How can I make the y axis display base-2 logarithmic - values? -* Question 6.14:: How can I align the x axes of two graphs on the same - figure? -* Question 6.15:: How can I change the direction of the y-axis, such - that negatives values are on the upper y-axis? -* Question 6.16:: How can I fill a path with a function that defines the - color of each location? -* Question 6.17:: Is there a way to draw a function that is not - explicitly given, such as (y - 2)^2 = x - 1 ? -* Question 6.18:: Is it possible to reverse or stretch an axis? -* Question 6.19:: Why can't I use the UnFill option to draw graphs with - empty markers? -* Question 6.20:: How can I force several images to use the same palette - range (e.g. the entire 0-255 grayscale range)? - - - -File: asy-faq.info, Node: Question 6.1, Next: Question 6.2, Previous: Question 5.4, Up: Section 6 - -Question 6.1. How can I draw x axis ticks on the right side, with the tick labels on the left side (relative to the axis path)? - -import graph; - -size(250,200,IgnoreAspect); - -draw(graph(exp,-1,1),red); - -xaxis("$x$",RightTicks(Label(align=left))); -yaxis("$y$",RightTicks); - -File: asy-faq.info, Node: Question 6.2, Next: Question 6.3, Previous: Question 6.1, Up: Section 6 - -Question 6.2. How can I reposition the x axis label to three-quarters along the axis length? - -import graph; - -size(250,200,IgnoreAspect); - -draw(graph(exp,-1,1),red); - -xaxis(Label("$x$",0.75),LeftTicks); -yaxis("$y$",RightTicks); - -File: asy-faq.info, Node: Question 6.3, Next: Question 6.4, Previous: Question 6.2, Up: Section 6 - -Question 6.3. How can I move the x axis label down 10bp? - -import graph; -size(250,200,IgnoreAspect); - -draw(graph(exp,-1,1),red); - -xaxis(shift(0,-10)*"$x$",LeftTicks); -yaxis("$y$",RightTicks); - -File: asy-faq.info, Node: Question 6.4, Next: Question 6.5, Previous: Question 6.3, Up: Section 6 - -Question 6.4. Can I use different pens for the axis, the axis label, and the tick labels? - -Yes: - -import graph; -size(300,200,IgnoreAspect); - -xlimits(-50,50); -ylimits(0,100); - -xaxis(Label("$x$",MidPoint,red),Bottom,blue,LeftTicks(green)); -yaxis("$y$",Left,RightTicks); - -File: asy-faq.info, Node: Question 6.5, Next: Question 6.6, Previous: Question 6.4, Up: Section 6 - -Question 6.5. How can I change the font type of the axes label? - -import graph; -size(300,200,IgnoreAspect); - -xlimits(-50,50); -ylimits(0,100); - -xaxis("x",Bottom,Courier("m","n"),LeftTicks); -yaxis("$y$",Left,RightTicks); - -File: asy-faq.info, Node: Question 6.6, Next: Question 6.7, Previous: Question 6.5, Up: Section 6 - -Question 6.6. How can I change the font type of the tick labels on an axis? - -Tick labels are by default typeset in (TeX) math mode, so to use other -fonts you need to override the default tick format: - -import graph; -size(300,200,IgnoreAspect); - -xlimits(-50,50); -ylimits(0,100); - -xaxis("$x$",Bottom,LeftTicks("%.4g",Courier("m","n")+fontsize(12))); -yaxis("$y$",Left,RightTicks); - -File: asy-faq.info, Node: Question 6.7, Next: Question 6.8, Previous: Question 6.6, Up: Section 6 - -Question 6.7. How can I prevent axes tick labels from rendering on top of each other? - -Either: - -(i) give LeftTicks/RightTicks/Ticks the arguments beginlabel=false and/or -endlabel=false; - -(ii) explicitly remove specific ticks and their labels (drawing them -manually; see -http://www.github.com/vectorgraphics/asymptote/base/graph.asy for the -definition of NoZero): - -import graph; - -size(10cm); - -real f(real x) {return x^2;} - -draw(graph(f,-2,2)); - -xaxis(Ticks(NoZero)); -yaxis(Ticks(NoZero)); - -label("$0$",(0,0),SW); -(iii) explicitly remove specific tick labels and draw them manually (see -http://www.github.com/vectorgraphics/asymptote/base/graph.asy for the -definition of NoZeroFormat): - -import graph; - -size(10cm); - -real f(real x) {return x^2;} - -draw(graph(f,-2,2)); - -xaxis(Ticks(NoZeroFormat)); -yaxis(Ticks(NoZeroFormat)); - -label("$0$",(0,0),SW); -(iv) use the xasy GUI to move overlapping labels; - -(v) change the Label argument of LeftTicks, RightTicks, or Ticks to: - -Label(currentpen+overwrite(Move)) -Solution (v) will move labels that might otherwise overwrite a previous -label. Other possible overwrite arguments are Allow (allows overlapping -labels; the default), Suppress (an overlapping label will not be written -at all), SuppressQuiet, and MoveQuiet. The last two achieve the same -result as the non-quiet types, but will not notify you which labels are -overlapping. See: https://asymptote.sourceforge.io/doc/Pens.html. - -In the case of a user-specified tick array, you can change which labels -get suppressed/moved by changing the order of array entries. - - -File: asy-faq.info, Node: Question 6.8, Next: Question 6.9, Previous: Question 6.7, Up: Section 6 - -Question 6.8. How do I make the plot region of a graph, ignoring labels and legends, have a fixed size? - -Either: - -i) Specify an explicit unitsize, which overrides any call to size: -unitsize(x=1cm,y=2cm); -ii) Explicitly tell Asymptote to map the plot region to a specific size: -import graph; -real[] x={0,1,2,3}; -real[] y=x^2; -draw(graph(x,y),red); -xaxis("$x$",BottomTop,LeftTicks); -yaxis("$y$",LeftRight,RightTicks); - -size(5cm,5cm,point(SW),point(NE)); - -label("$f_\mathrm{T}$",point(N),2N); -iii) Specify the points in user coordinates that should correspond to a -given picture size: - -import graph; - -size(250,200,IgnoreAspect); - -draw(graph(exp,-1,1),red); - -xaxis("$x$",BottomTop,LeftTicks); -yaxis("$y$",LeftRight,RightTicks); - -fixedscaling((-1.5,-0.5),(1.5,3.5)); -In this example, the user coordinate (-1.5,-0.5) will end up being the -lower left corner of the figure and (1.5,3.5) will be the upper right -corner. You can use this option to ensure multiple figures have the same -scaling and same resulting figure size (just ensure the two coordinates -given to fixedscaling() leaves room for any labels). - -See also https://asymptote.sourceforge.io/doc/Frames-and-pictures.html. - - -File: asy-faq.info, Node: Question 6.9, Next: Question 6.10, Previous: Question 6.8, Up: Section 6 - -Question 6.9. How can I plot a function f(x) within [0,1]x[0,2] without explicitly calculating the x values for which f(x) hits the boundary? - -Call limits with the Crop option before drawing the graph: -import graph; - -size(250,200,IgnoreAspect); - -draw(graph(exp,-1,1),red); - -limits((0,0),(1,2),Crop); - -xaxis("$x$",BottomTop,LeftTicks); -yaxis("$y$",LeftRight,RightTicks); -See also https://asymptote.sourceforge.io/doc/graph.html. - - -File: asy-faq.info, Node: Question 6.10, Next: Question 6.11, Previous: Question 6.9, Up: Section 6 - -Question 6.10. Is it possible to define customized palettes? - -Yes, you may generate your own pen[] array. For example: - -int NColors=32768; -pen[] MyPalette=new pen[NColors]; -real step=1/(NColors-1.0); -// Start at black: rgb(0,0,0) -// End at yellow: rgb(1,1,0) -for(int i=0; i < NColors; ++i) { - real rgval=i*step; - MyPalette[i]=rgb(rgval,rgval,0.0); -} - -File: asy-faq.info, Node: Question 6.11, Next: Question 6.12, Previous: Question 6.10, Up: Section 6 - -Question 6.11. Is there an easy way to graph factorial functions nicely? - -The example below shows a continuous function and two methods for placing -markers at integer values of x: - -import graph; - -size(200,200,IgnoreAspect); - -real factorial(real t) {return gamma(t+1);} - -scale(Linear,Log); - -// Graph the factorial function. -draw(graph(factorial,0,10)); - -// Method 1: Draw nodes, but hide line -pair F(int t) {return (t,factorial(t));} -// Graph of factorial function from 0 to 10 -pair[] z=sequence(F,11); -draw(graph(z),invisible,marker(scale(0.8mm)*unitcircle,blue,Fill)); - -// Method 2: Nongraphing routines require explicit scaling: -pair dotloc(int t) {return Scale(F(t));} -pair[] dotlocs=sequence(dotloc,11); -dot(dotlocs); - -xaxis("$x$",BottomTop,LeftTicks); -yaxis("$y$",LeftRight,RightTicks); - -File: asy-faq.info, Node: Question 6.12, Next: Question 6.13, Previous: Question 6.11, Up: Section 6 - -Question 6.12. How do I indicate that a certain length should be exactly the size I prescribe with no rescaling, within a picture which has its own size? - -Here's an easy way to do this. - -size(12cm,0); - -void distance(picture pic=currentpicture, pair A, pair B, Label L="", real n=0, - pen p=currentpen) -{ - real d=3mm; - path g=A--B; - transform T=shift(-n*d*unit(B-A)*I); - pic.add(new void(frame f, transform t) { - picture opic; - path G=T*t*g; - draw(opic,Label(L,Center,UnFill(1)),G,p,Arrows(NoFill),Bars,PenMargins); - add(f,opic.fit()); - }); - pic.addBox(min(g),max(g),T*min(p),T*max(p)); -} - -pair A=(0,0), B=(3,3); - -dot(A); -dot(B); - -distance(A,B,"$\ell$",1); - -File: asy-faq.info, Node: Question 6.13, Next: Question 6.14, Previous: Question 6.12, Up: Section 6 - -Question 6.13. How can I make the y axis display base-2 logarithmic values? - -See the example https://asymptote.sourceforge.io/gallery/2D -graphs/log2graph.asy. - - -File: asy-faq.info, Node: Question 6.14, Next: Question 6.15, Previous: Question 6.13, Up: Section 6 - -Question 6.14. How can I align the x axes of two graphs on the same figure? - -An easy way to do this, if the axes to be aligned have the same scaling -and size, is illustrated in the example -https://asymptote.sourceforge.io/gallery/2D graphs/alignedaxis.asy. - -Here is a more general solution to the problem of aligning two arbitrary -axes. One fits the second picture to a frame based on the horizontal -scaling for the first picture: - -import graph; - -real width=15cm; -real aspect=0.3; - -picture pic1,pic2; - -size(pic1,width,aspect*width,IgnoreAspect); -size(pic2,width,aspect*width,IgnoreAspect); - -scale(pic1,false); -scale(pic2,false); - -real xmin1=6; -real xmax1=9; -real xmin2=8; -real xmax2=16; - -real a1=1; -real a2=0.001; - -real f1(real x) {return a1*sin(x/2*pi);} -real f2(real x) {return a2*sin(x/4*pi);} - -draw(pic1,graph(pic1,f1,xmin1,xmax1)); -draw(pic2,graph(pic2,f2,xmin2,xmax2)); - -xaxis(pic1,Bottom,LeftTicks()); -yaxis(pic1,"$f_1(x)$",Left,RightTicks); - -xaxis(pic2,"$x$",Bottom,LeftTicks(Step=4)); -yaxis(pic2,"$f_2(x)$",Left,RightTicks); - -yequals(pic1,0,Dotted); -yequals(pic2,0,Dotted); - -pair min1=point(pic1,SW); -pair max1=point(pic1,NE); - -pair min2=point(pic2,SW); -pair max2=point(pic2,NE); - -real scale=(max1.x-min1.x)/(max2.x-min2.x); -real shift=min1.x/scale-min2.x; - -transform t1=pic1.calculateTransform(); -transform t2=pic2.calculateTransform(); -transform T=xscale(scale*t1.xx)*yscale(t2.yy); - -add(pic1.fit()); -real height=truepoint(N,user=false).y-truepoint(S,user=false).y; -add(shift(0,-height)*(shift(shift)*pic2).fit(T)); - -File: asy-faq.info, Node: Question 6.15, Next: Question 6.16, Previous: Question 6.14, Up: Section 6 - -Question 6.15. How can I change the direction of the y-axis, such that negatives values are on the upper y-axis? - -Here is a simple example (see also the example -https://asymptote.sourceforge.io/gallery/2D graphs/diatom.asy or the -discussion of Linear(-1) in the documentation): - -import graph; -size(250,200,IgnoreAspect); - -scale(Linear,Linear(-1)); - -draw(graph(log,0.1,10),red); - -xaxis("$x$",LeftTicks); -yaxis("$y$",RightTicks); - -File: asy-faq.info, Node: Question 6.16, Next: Question 6.17, Previous: Question 6.15, Up: Section 6 - -Question 6.16. How can I fill a path with a function that defines the color of each location? - -Use functionshade with a PDF tex engine, as illustrated by the example -{functionshading.asy}. - -If you want to produce PostScript output, an approximate solution for now -would be to superimpose a fine grid and specify colors to latticeshade -that depend on position as a single pen[][] lattice. Alternatively, it may -be more efficient to use tensorshade}. - - -File: asy-faq.info, Node: Question 6.17, Next: Question 6.18, Previous: Question 6.16, Up: Section 6 - -Question 6.17. Is there a way to draw a function that is not explicitly given, such as (y - 2)^2 = x - 1 ? - -Yes, use the parametric form - -y=t -x=(t-2)^2+1 -See the example https://asymptote.sourceforge.io/gallery/2D -graphs/parametricgraph.asy. - - -File: asy-faq.info, Node: Question 6.18, Next: Question 6.19, Previous: Question 6.17, Up: Section 6 - -Question 6.18. Is it possible to reverse or stretch an axis? - -The real scaling argument to Linear is used to stretch (or reverse) the -axis. To see the effect of axis stretching, be sure not to specify -IgnoreAspect in the picture size command. - -A secondary axis has the same length as the primary axis, so stretching -cannot have any effect. But one can still reverse the axis, with -Linear(-1). - - -File: asy-faq.info, Node: Question 6.19, Next: Question 6.20, Previous: Question 6.18, Up: Section 6 - -Question 6.19. Why can't I use the UnFill option to draw graphs with empty markers? - -UnFill won't work here because it only affects the local frame the markers -are initially drawn on, before being added to currentpicture. Here is a -way of achieving the desired effect (assuming a white background): - -import graph; -size(10cm,0); -pair[] z={(0,0),(0.5,0.5),(1,1)}; -path g=graph(z); - -draw(shift(0,.5)*g,marker(scale(5)*unitcircle,FillDraw(white))); - -xaxis(BottomTop,LeftTicks); -yaxis(LeftRight,RightTicks); - -File: asy-faq.info, Node: Question 6.20, Next: Question 7.1, Previous: Question 6.19, Up: Section 6 - -Question 6.20. How can I force several images to use the same palette range (e.g. the entire 0-255 grayscale range)? - -The palette color space corresponds to a range of values specified by the -argument range, which can be Full, Automatic or an explicit range -Range(pair min, pair max). Here Full} specifies a range varying from the -minimum to maximum values of the function over the sampling interval, -while Automatic selects "nice" limits. - - -File: asy-faq.info, Node: Section 7, Next: Section 8, Previous: Section 6, Up: Top - -Questions about programming - -* Menu: -* Question 7.1:: Is Asymptote an interpreter or a compiler? -* Question 7.2:: What is the difference between a frame and a picture? -* Question 7.3:: What is the difference between a path and a guide? -* Question 7.4:: What is a convenient way to declare and initialize an - array of pictures? -* Question 7.5:: Is there a way to define functions that act on arrays - in general (i.e. work for arrays of any type)? -* Question 7.6:: Is there any way to declare structures ahead of their - definition, e.g. where struct A performs some - operation on struct B, but B contains an A member? -* Question 7.7:: Where are static variables in for loops allocated? -* Question 7.8:: Is there a debugger for asy? -* Question 7.9:: Do you accept patches for Asymptote? - - - -File: asy-faq.info, Node: Question 7.1, Next: Question 7.2, Previous: Question 6.20, Up: Section 7 - -Question 7.1. Is Asymptote an interpreter or a compiler? - -Asymptote compiles Asymptote commands into its own virtual machine code. -It then runs this pseudocode on a virtual machine to produce PostScript -code. - - -File: asy-faq.info, Node: Question 7.2, Next: Question 7.3, Previous: Question 7.1, Up: Section 7 - -Question 7.2. What is the difference between a frame and a picture? - -Frames are canvases for drawing in PostScript coordinates. While working -with frames directly is occasionally necessary for constructing deferred -drawing routines, pictures are usually more convenient to work with. See -*Note Question 8.8:: `In MetaPost, it is possible to have a drawing remain -the same size in different pictures by defining a unit u and explicitly -multiply all the coordinates by u. Is there a better way to do this in -Asymptote?'. - - -File: asy-faq.info, Node: Question 7.3, Next: Question 7.4, Previous: Question 7.2, Up: Section 7 - -Question 7.3. What is the difference between a path and a guide? - -A path is a cubic spline with fixed endpoint conditions. - -A guide is an unresolved cubic spline (list of cubic-spline nodes and -control points). A guide is like a path except that the computation of the -cubic spline is deferred until drawing time (when it is resolved into a -path); this allows two guides with free endpoint conditions to be joined -together smoothly. - - -File: asy-faq.info, Node: Question 7.4, Next: Question 7.5, Previous: Question 7.3, Up: Section 7 - -Question 7.4. What is a convenient way to declare and initialize an array of pictures? - -You could write yourself a routine such as: -picture[] picture(int n) { - picture[] pic; - for(int i=0; i < n; ++i) { - pic[i]=new picture; - size(pic[i],19cm,0); - } - return pic; -} - -picture[] pic=picture(6); - -File: asy-faq.info, Node: Question 7.5, Next: Question 7.6, Previous: Question 7.4, Up: Section 7 - -Question 7.5. Is there a way to define functions that act on arrays in general (i.e. work for arrays of any type)? - -Generic types aren't yet implemented. - -But for now you can at least say -typedef string T; -include F; - -typedef real T; -include F; -where F.asy contains some type-dependent code like -T[] operator $(T A, T B) {return new T[] {A,B};} - -File: asy-faq.info, Node: Question 7.6, Next: Question 7.7, Previous: Question 7.5, Up: Section 7 - -Question 7.6. Is there any way to declare structures ahead of their definition, e.g. where struct A performs some operation on struct B, but B contains an A member? - -Asymptote does not support forward declaration of types. You can, however, -nest structures, so that both types are visible for parts of the bodies of -both structure definitions. For example: - -struct B { - typedef void someroutine(B b); - - static struct A { - someroutine routine; - void operator init(someroutine routine) { - this.routine=routine; - } - } - - string test="Testing"; -} - -typedef B.A A; - -A a=B.A(new void(B b){write(b.test);}); - -B b; -a.routine(b); - -File: asy-faq.info, Node: Question 7.7, Next: Question 7.8, Previous: Question 7.6, Up: Section 7 - -Question 7.7. Where are static variables in for loops allocated? - -In the example - -void f() { - for(int i=0; i < 3; ++i) { - static int n; - ++n; - write(n); - } -} - -f(); // Writes 1, 2, 3 -the static qualifier means that n is allocated not just outside of the for -loop, but also outside the function. This is clear if you call f multiple -times; there is still only one instance of n. - -The "level" of a variable (where it is allocated) has nothing to do with -the "scope" of a variable (how long it can be referred to by name). The -curly braces enclosing a block affect only a variable's scope, not its -level. - -Static modifiers are meaningless at the top level; they generate a warning -and are simply ignored: - -for(int i=0; i < 3; ++i) { - static int n; - ++n; - write(n); -} -// Writes warning about top-level static modifier and then 1, 1, 1 -Since version 1.22, non-static variables allocated in a loop body are -allocated anew every iteration. This is only noticable in obscure cases -where a variable in a loop is accessed in the closure of a function -defined in the loop: - -int f(); - -for(int i=0; i < 10; ++i) { - int j=10*i; - if(i == 5) - f=new int() {return j;}; -} - -write(f()); // Writes 50 -Variables in the body of a loop last as long as that iteration of the -loop, unless they are kept alive by a function closure as in the example -above. In a function body, variables will last at least as long as the -function call, though because of closures and garbage collection, they may -last longer than that. If defined at the top level of a file or at the -interactive prompt, they will last at least until the end of the file or -prompt's run. - - -File: asy-faq.info, Node: Question 7.8, Next: Question 7.9, Previous: Question 7.7, Up: Section 7 - -Question 7.8. Is there a debugger for asy? - -Yes, Asymptote includes a line-based debugger: - -https://asymptote.sourceforge.io/doc/Debugger.html - - -File: asy-faq.info, Node: Question 7.9, Next: Question 8.1, Previous: Question 7.8, Up: Section 7 - -Question 7.9. Do you accept patches for Asymptote? - -Yes, in fact we would prefer that users submit patches for customized -features (to http://sourceforge.net/tracker/?atid=685685&group_id=120000) -instead of relying on us to do all of the coding. Development will proceed -faster that way. - - -File: asy-faq.info, Node: Section 8, Next: Section 9, Previous: Section 7, Up: Top - -Questions about differences between Asymptote and MetaPost - -* Menu: -* Question 8.1:: What is the equivalent of the MetaPost c[a,b] - interpolation operator? -* Question 8.2:: How does picture scaling differ in Asymptote and - MetaPost? -* Question 8.3:: How can I avoid automatic scaling of a picture? -* Question 8.4:: What is the equivalent of MetaPost ... command? -* Question 8.5:: What is the equivalent of the MetaPost pickup command? -* Question 8.6:: What is the equivalent of the MetaPost whatever - command? -* Question 8.7:: What is the equivalent for the MetaPost command for - lray - horiz*v - verti*u = whatever*(LightSource - R), - a system of three linear equations for three unknowns: - horiz, verti, whatever? -* Question 8.8:: In MetaPost, it is possible to have a drawing remain - the same size in different pictures by defining a unit - u and explicitly multiply all the coordinates by u. Is - there a better way to do this in Asymptote? -* Question 8.9:: In MetaPost, one could produce tiling pictures by - generating a picture, and then clipping the picture to - a rectangle of fixed dimensions around the center of - the picture. How is that done in Asymptote? - - - -File: asy-faq.info, Node: Question 8.1, Next: Question 8.2, Previous: Question 7.9, Up: Section 8 - -Question 8.1. What is the equivalent of the MetaPost c[a,b] interpolation operator? - -interp(a,b,c); - -File: asy-faq.info, Node: Question 8.2, Next: Question 8.3, Previous: Question 8.1, Up: Section 8 - -Question 8.2. How does picture scaling differ in Asymptote and MetaPost? - -Asymptote includes an optional facility to do automatic scaling of -pictures to achieve a given overall picture size, whereas Metapost only -supports manual scaling. Asymptote defers drawing of objects drawn to -pictures and distinguishes between true-size objects and objects that -should scale with the picture size. The resulting linear programming -problem is solved via the Simplex method. - -See the https://asymptote.sourceforge.io/gallery/dimension.asy example for -an example of how deferred drawing is used to accomodate both user and -true-size (PostScript) coordinates. - - -File: asy-faq.info, Node: Question 8.3, Next: Question 8.4, Previous: Question 8.2, Up: Section 8 - -Question 8.3. How can I avoid automatic scaling of a picture? - -If you really like Metapost-style manual (hard-wired) scaling either: - -(i) use the default size(0,0) for the entire picture and do all of the -scaling by hand, just like in MetaPost; - -(ii) draw to a separate picture pic and add(pic.fit()); - -(iii) use frames. - - -File: asy-faq.info, Node: Question 8.4, Next: Question 8.5, Previous: Question 8.3, Up: Section 8 - -Question 8.4. What is the equivalent of MetaPost ... command? - -The connector :: is a macro for tension atleast 1: - -size(100); -pair z0=(0,0); -pair z1=(1,0.25); -pair z2=(2,0); -draw(z0{up}::z1{right}::z2{down}); - -File: asy-faq.info, Node: Question 8.5, Next: Question 8.6, Previous: Question 8.4, Up: Section 8 - -Question 8.5. What is the equivalent of the MetaPost pickup command? - -Just say, for example: - -currentpen=red; - -File: asy-faq.info, Node: Question 8.6, Next: Question 8.7, Previous: Question 8.5, Up: Section 8 - -Question 8.6. What is the equivalent of the MetaPost whatever command? - -Asymptote does not implicitly solve linear equations and therefore does -not have the notion of a whatever unknown. Such a facility could certainly -be added (perhaps using the notation ?= since = means assignment). -However, the most common uses of whatever in MetaPost are covered by -functions like extension in math.asy: -pair extension(pair P, pair Q, pair p, pair q); -this returns the intersection point of the extensions of the line segments -PQ and pq. We find using routines like extension more explicit and less -confusing to new users. But we could be persuaded to add something similar -if someone can justify the need. In the meantime, one can always use the -explicit built-in linear solver solve (see -https://asymptote.sourceforge.io/doc/solve.html), which uses LU -decomposition. - - -File: asy-faq.info, Node: Question 8.7, Next: Question 8.8, Previous: Question 8.6, Up: Section 8 - -Question 8.7. What is the equivalent for the MetaPost command for lray - horiz*v - verti*u = whatever*(LightSource - R), a system of three linear equations for three unknowns: horiz, verti, whatever? - -Since horiz*v+verti*u spans a plane, you could use -real intersect(vector P, vector Q, vector n, vector Z); -to find the intersection time for the line lray-whatever*(LightSource - -R) and then extract the three desired values from there. (You'll still -need to use the built-in explicit linear solver to solve a 2x2 system to -get horiz and verti.) - - -File: asy-faq.info, Node: Question 8.8, Next: Question 8.9, Previous: Question 8.7, Up: Section 8 - -Question 8.8. In MetaPost, it is possible to have a drawing remain the same size in different pictures by defining a unit u and explicitly multiply all the coordinates by u. Is there a better way to do this in Asymptote? - -Yes, Asymptote has a better way: you definitely don't want to manually -scale all of your coordinates. 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(x=1cm,y=2cm); -draw(unitsquare); -Another way is to draw your fixed size object to a frame and add it to -currentpicture like this: - -path p=(0,0)--(1,0); -frame object; -draw(object,scale(100)*p); - -add(object); -add(object,(0,-10)); -To understand the difference between frames and pictures, try this: - -size(300,300); - -path p=(0,0)--(1,0); -picture object; -draw(object,scale(100)*p); - -add(object); -add(object,(0,-10)); // Adds truesize object to currentpicture - -File: asy-faq.info, Node: Question 8.9, Next: Question 9.1, Previous: Question 8.8, Up: Section 8 - -Question 8.9. In MetaPost, one could produce tiling pictures by generating a picture, and then clipping the picture to a rectangle of fixed dimensions around the center of the picture. How is that done in Asymptote? - -If you are using currentpicture the way one would in MetaPost (drawing in -raw PostScript coordinates), you can simply do something like: - -fill((0,0)--(100,100)--(200,0)--cycle); - -pair center(picture pic=currentpicture) {return 0.5*(pic.min()+pic.max());} - -real height=100; -real width=100; -pair delta=0.5(width,height); -pair c=center(); -clip(box(c-delta,c+delta)); -However, drawing in PostScript coordinates is often inconvenient. Here's -the Asymptote way of doing the same thing, using deferred drawing: - -size(200,100); -fill((0,0)--(1,1)--(2,0)--cycle); - -void clip(picture pic=currentpicture, real width, real height) -{ - pic.clip(new void (frame f, transform) { - pair center=0.5(min(f)+max(f)); - pair delta=0.5(width,height); - clip(f,box(center-delta,center+delta)); - }); -} - -clip(100,100); -See also the discussion of tilings in the documentation: -https://asymptote.sourceforge.io/doc/Pens.html. - - -File: asy-faq.info, Node: Section 9, Previous: Section 8, Up: Top - -Questions about output - -* Menu: -* Question 9.1:: How can I disable automatic invocation of the PS - viewer after an asy file is done processing? -* Question 9.2:: How do I output jpeg images? -* Question 9.3:: Can I embed bitmaps (photos) into my drawings and - position and scale them? -* Question 9.4:: Does Asymptote support direct PDF output? -* Question 9.5:: How to I produce large pictures of high quality in - raster format (e.g. png, giff etc). -* Question 9.6:: Is it possible to produce multi-page documents with - asymptote? - - - -File: asy-faq.info, Node: Question 9.1, Next: Question 9.2, Previous: Question 8.9, Up: Section 9 - -Question 9.1. How can I disable automatic invocation of the PS viewer after an asy file is done processing? - -It's actually not on by default, unless you happen to be using Microsoft -Windows (because that is what most Microsoft Windows users expect). -Microsoft Windows users can turn this feature off with the command-line -option -noV or by putting - -import settings; -interactiveView=false; -batchView=false; -in their config.asy file. See -https://asymptote.sourceforge.io/doc/Options.html. - - -File: asy-faq.info, Node: Question 9.2, Next: Question 9.3, Previous: Question 9.1, Up: Section 9 - -Question 9.2. How do I output jpeg images? - -If you have the ImageMagick convert program installed, simply type - -asy -f jpg test.asy - -File: asy-faq.info, Node: Question 9.3, Next: Question 9.4, Previous: Question 9.2, Up: Section 9 - -Question 9.3. Can I embed bitmaps (photos) into my drawings and position and scale them? - -Convert them to eps format and use the graphic(string) function just like -a Label: - -label(graphic("file"),(0,0)); -See the example https://asymptote.sourceforge.io/gallery/orthocenter.asy -and https://asymptote.sourceforge.io/doc/label.html. - - -File: asy-faq.info, Node: Question 9.4, Next: Question 9.5, Previous: Question 9.3, Up: Section 9 - -Question 9.4. Does Asymptote support direct PDF output? - -Yes, PDF output can be produced by the -f pdf option or -tex pdflatex -option. This supports transparency, annotations, embedded movies, and -U3D/PRC content. - - -File: asy-faq.info, Node: Question 9.5, Next: Question 9.6, Previous: Question 9.4, Up: Section 9 - -Question 9.5. How to I produce large pictures of high quality in raster format (e.g. png, giff etc). - -Try using some of the options to convert, mainly -geometry and -density. -For example: -convert -geometry 1000x3000 example.eps example.png -You can also change the default resolution of the image with: -convert -geometry 1000x3000 -density 300 -units PixelsPerInch example.eps example.png -This does not change the number of pixels in the image, but just gives a -hint as to how large each pixel should be displayed. - -If you include the -density option without the -geometry option, convert -will keep the image size constant (so a 4cm x 3cm eps figure will -generate a 4cm x 3cm png image). - - -File: asy-faq.info, Node: Question 9.6, Previous: Question 9.5, Up: Section 9 - -Question 9.6. Is it possible to produce multi-page documents with asymptote? - -Yes, simply call the newpage() function. This is used by the slide.asy -package to produce high-quality slide presentations (easier to use than -Prosper). - |