parametric3d {misc3d} | R Documentation |
Plot a two-parameter surface in three dimensions.
parametric3d(fx, fy, fz, u, v, umin, umax, vmin, vmax, n = 100, color = "white", color2 = NA, alpha = 1, fill = TRUE, col.mesh = if (fill) NA else color, smooth = 0, material = "default", add = FALSE, draw = TRUE, engine = "rgl", ...)
fx,fy,fz |
vectorized functions of u and v to compute the
x , y , and z coordinates. |
u |
numeric vector of u values. |
v |
numeric vector of v values. |
umin |
numeric; the minimum value of u. Ignored if u is
supplied. |
umax |
numeric; the maximum value of u. Ignored if u is
supplied. |
vmin |
numeric; the minimum value of v. Ignored if v is
supplied. |
vmax |
numeric; the maximum value of v. Ignored if v is
supplied. |
n |
the number of equally spaced u and v values to
use. Ignored if u and v are supplied. |
color |
color to use for the surface. Can also be a function of three arguments. This is called with three arguments, the coordinates of the midpoints of the triangles making up the surface. The function should return a vector of colors to use for the triangles. |
color2 |
opposite face color. |
alpha |
alpha channel level, a number between 0 and 1.. |
fill |
logical; if TRUE , drawing should use filled
surfaces; otherwise a wire frame should be drawn. |
col.mesh |
color to use for the wire frame. |
smooth |
integer or logical specifying Phong shading level for "standard" and "grid" engines or whether or not to use shading for the "rgl" engine. |
material |
material specification; currently only used by "standard" and "grid" engines. Currently possible values are the character strings "dull", "shiny", "metal", and "default". |
add |
logical; if TRUE , add to current graph. |
draw |
logical; if TRUE , draw the results; otherwise,
return triangle mesh structure. |
engine |
character; currently "rgl", "standard", "grid" or "none"; for "none" the computed triangles are returned. |
... |
additional rendering arguments, e.g. material and texture
properties for the "rgl" engine. See documentation for
drawScene and drawScene.rgl |
Analogous to Mathematica's Param3D
. Evaluates the
functions fx
, fy
, and fz
specifying the
coordinates of the surface at a grid of values for the
parameters u
and v
.
For the "rgl" engine the returned value is NULL
. For the
"standard" and "grid" engines the returned value is the viewing
transformation as returned by persp
. For the engine "none", or
when draw
is not true, the returned value is a structure
representing the triangles making up the surface.
The "rgl" engine now uses the standard rgl coordinates instead of
negating y
and swapping y
and z
. If you need to
reproduce the previous behavior you can use
options(old.misc3d.orientation=TRUE)
.
Transparency only works properly in the "rgl" engine. For standard or grid graphics on pdf or quartz devices using alpha levels less than 1 does work but the triangle borders show as a less transparent mesh.
Daniel Adler, Oleg Nenadic and Walter Zucchini (2003) RGL: A R-library for 3D visualization with OpenGL
surface3d
,
material3d
,scatterplot3d
.
#Example 1: Ratio-of-Uniform sampling region of bivariate normal parametric3d(fx = function(u, v) u * exp(-0.5 * (u^2 + v^2 - 2 * 0.75 * u * v)/sqrt(1-.75^2))^(1/3), fy = function(u, v) v * exp(-0.5 * (u^2 + v^2 - 2 * 0.75 * u * v)/sqrt(1-.75^2))^(1/3), fz = function(u, v) exp(-0.5 * (u^2 + v^2 - 2 * 0.75 * u * v)/sqrt(1-.75^2))^(1/3), umin = -20, umax = 20, vmin = -20, vmax = 20, n = 100) parametric3d(fx = function(u, v) u * exp(-0.5 * (u^2 + v^2 - 2 * 0.75 * u * v)/sqrt(1-.75^2))^(1/3), fy = function(u, v) v * exp(-0.5 * (u^2 + v^2 - 2 * 0.75 * u * v)/sqrt(1-.75^2))^(1/3), fz = function(u, v) exp(-0.5 * (u^2 + v^2 - 2 * 0.75 * u * v)/sqrt(1-.75^2))^(1/3), u = qcauchy((1:100)/101), v = qcauchy((1:100)/101)) parametric3d(fx = function(u, v) u * exp(-0.5 * (u^2 + v^2 - 2 * 0.75 * u * v)/sqrt(1-.75^2))^(1/3), fy = function(u, v) v * exp(-0.5 * (u^2 + v^2 - 2 * 0.75 * u * v)/sqrt(1-.75^2))^(1/3), fz = function(u, v) exp(-0.5 * (u^2 + v^2 - 2 * 0.75 * u * v)/sqrt(1-.75^2))^(1/3), u = qcauchy((1:100)/101), v = qcauchy((1:100)/101), engine = "standard", scale = FALSE, screen = list(x=-90, y=20)) #Example 2: Ratio-of-Uniform sampling region of Bivariate t parametric3d(fx = function(u,v) u*(dt(u,2) * dt(v,2))^(1/3), fy = function(u,v) v*(dt(u,2) * dt(v,2))^(1/3), fz = function(u,v) (dt(u,2) * dt(v,2))^(1/3), umin = -20, umax = 20, vmin = -20, vmax = 20, n = 100, color = "green") parametric3d(fx = function(u,v) u*(dt(u,2) * dt(v,2))^(1/3), fy = function(u,v) v*(dt(u,2) * dt(v,2))^(1/3), fz = function(u,v) (dt(u,2) * dt(v,2))^(1/3), u = qcauchy((1:100)/101), v = qcauchy((1:100)/101), color = "green") parametric3d(fx = function(u,v) u*(dt(u,2) * dt(v,2))^(1/3), fy = function(u,v) v*(dt(u,2) * dt(v,2))^(1/3), fz = function(u,v) (dt(u,2) * dt(v,2))^(1/3), u = qcauchy((1:100)/101), v = qcauchy((1:100)/101), color = "green", engine = "standard", scale = FALSE) #Example 3: Surface of revolution parametric3d(fx = function(u,v) u, fy = function(u,v) sin(v)*(u^3+2*u^2-2*u+2)/5, fz = function(u,v) cos(v)*(u^3+2*u^2-2*u+2)/5, umin = -2.3, umax = 1.3, vmin = 0, vmax = 2*pi) parametric3d(fx = function(u,v) u, fy = function(u,v) sin(v)*(u^3+2*u^2-2*u+2)/5, fz = function(u,v) cos(v)*(u^3+2*u^2-2*u+2)/5, umin = -2.3, umax = 1.3, vmin = 0, vmax = 2*pi, engine = "standard", scale = FALSE, color = "red", color2 = "blue", material = "shiny")