Write Asymptote code for an RGL scene
writeASY.RdAsymptote is a language for 3D graphics that is highly integrated with LaTeX. This is an experimental function to write an Asymptote program to approximate an RGL scene.
Arguments
- scene
RGL scene object
- outtype
What type of file to write? See Details.
- prc
Whether to produce an interactive PRC scene.
- title
The base of the filename to produce.
- runAsy
Code to run the Asymptote program.
- defaultFontsize
The default fontsize for text.
- width, height
Width and height of the output image, in inches.
- ppi
“Pixels per inch” to assume when converting line widths and point sizes (which RGL measures in pixels).
- ids
If not
NULL, write out just these RGL objects.Alternate way to specify
ids. Ignored ifidsis given.- version
Asymptote version 2.44 had a definition for its “light()” function that was incompatibly changed in versions 2.47 and 2.50. The current code has been tested with version 2.65. If you are using an older version, set
versionto your version number and it may work better.
Details
Asymptote is both a language describing a 2D or 3D graphic, and a program to interpret that language and produce output in a variety of formats including EPS, PDF (interactive or static), etc.
The interactive scene produced with prc = TRUE
requires outtype = "pdf", and (as of this
writing) has a number of limitations:
As far as we know, only Adobe Acrobat Reader of a sufficiently recent version can display these scenes.
Current versions ignore lighting settings.
References
J. C. Bowman and A. Hammerlindl (2008). Asymptote: A vector graphics language, TUGBOAT: The Communications of the TeX Users Group, 29:2, 288-294.
Note
This function is currently under development and limited in the quality of output it produces. Arguments will likely change.
There are a number of differences between the interactive display in Asymptote and the display in RGL. In particular, many objects that are a fixed size in RGL will scale with the image in Asymptote. Defaults have been chosen somewhat arbitrarily; tweaking will likely be needed.
Material properties of surfaces are not yet implemented.
On some systems, the program asy used
to process the output has bugs and may fail. Run the example
at your own risk!
Examples
if (FALSE) { # \dontrun{
# On some systems, the program "asy" used
# to process the output has bugs, so this may fail.
x <- rnorm(20)
y <- rnorm(20)
z <- rnorm(20)
plot3d(x, y, z, type = "s", col = "red")
olddir <- setwd(tempdir())
writeASY(title = "interactive") # Produces interactive.pdf
writeASY(title = "noninteractive", prc = FALSE) # Produces noninteractive.pdf
setwd(olddir)
} # }