To plot mathematical text, plotmath3d uses base graphics functions to plot it to a .png file, then uses that file as a texture in a sprite. latex3d uses the xdvir package to render LaTeX code, then uses the same approach to display it in rgl.

plotmath3d(x, y = NULL, z = NULL, text, cex = par3d("cex"),
           adj = 0.5, pos = NULL, offset = 0.5,
           fixedSize = TRUE, startsize = 480, initCex = 5, 
           margin = "", floating = FALSE, tag = "",
           polygon_offset = material3d("polygon_offset"), ...)
latex3d(x, y = NULL, z = NULL, text, cex = par3d("cex"), 
           adj = 0.5, pos = NULL, offset = 0.5,
           fixedSize = TRUE, startsize = 480, initCex = 5, 
           margin = "", floating = FALSE, tag = "",
           polygon_offset = material3d("polygon_offset"), 
           verbose = FALSE, ...)

Arguments

x, y, z

Coordinates. Any reasonable way of defining the coordinates is acceptable. See the function xyz.coords for details.

text

A character vector or (in plotmath3d) expression. See plotmath for how expressions are interpreted in plotmath3d. In latex3d each text entry should be a LaTeX fragment.

cex

Character size expansion.

adj

One value specifying the horizontal adjustment, or two, specifying horizontal and vertical adjustment respectively, or three, for depth as well.

pos, offset

Alternate way to specify adj; see text3d

fixedSize

Should the resulting sprite behave like the default ones, and resize with the scene, or like text, and stay at a fixed size?

startsize, initCex

These parameters are unlikely to be needed by users. startsize is an over-estimate of the size (in pixels) of the largest expression. Increase this if large expressions are cut off. initCex is the size of text used to form the bitmap. Increase this if letters look too blurry at the desired size.

margin, floating, tag, polygon_offset

material3d properties for the sprites.

verbose

If TRUE, latex3d will print intermediate results for debugging.

...

For plotmath3d, additional arguments to pass to text when drawing the text. For latex3d, additional arguments to pass to xdvir::latexGrob.

Note

The text3d function passes calls to plotmath3d if its usePlotmath argument is TRUE. This is the default value if its texts argument looks like an expression.

The latex3d function produces nicer looking results than plotmath3d, but it is much slower, especially on the first run.

Value

Called for the side effect of displaying the sprites. The shape ID of the displayed object is returned.

Author

Duncan Murdoch

See also

Examples

open3d()
plotmath3d(1:3, 1:3, 1:3, expression(x[1] == 1, x[2] == 2, x[3] == 3))
# This lets the text resize with the plot
text3d(4, 4, 4, "resizeable text", usePlotmath = TRUE, fixedSize = FALSE)


# \donttest{
if (requireNamespace("xdvir")) {

# Do the same plot using latex3d(). This example runs slowly!
  
  open3d()
  latex3d(1:3, 1:3, 1:3, c("$x_1 = 1$", "$x_2 = 2$", "$x_3 = 3$"))
  latex3d(4, 4, 4, "resizeable text", fixedSize = FALSE)

}
#> Loading required namespace: xdvir
#> Error in latex(texFile, texDir, engine, packages, dviFile, sig): The null engine does not support typesetting
# }