Number of sample points
Objects  Default Values 

plot::Cylindrical , plot::Function3d , plot::Spherical , plot::Surface , plot::XRotate , plot::ZRotate 

plot::Rootlocus 

plot::Sweep 

plot::Curve2d , plot::Curve3d , plot::Function2d , plot::Polar 

plot::Conformal 

plot::Plane 

plot::Implicit2d , plot::Raster , plot::VectorField2d 

plot::VectorField3d 

plot::Implicit3d 

plot::Inequality 

plot::Density 

plot::Tube 

plot::Matrixplot 

plot::Ode2d , plot::Ode3d 

plot::Listplot 

The attributes Mesh
and Submesh
determine
the number of sample points used for the numerical approximation of
plot objects.
Many plot objects have to be evaluated numerically on a discrete
mesh. Depending on the object type, there are type specific attributes
such as XMesh
(for
2D function graphs), UMesh
, VMesh
(for parametrized
surfaces), XMesh
, YMesh
, ZMesh
(for
implicit plots in 3D) etc. setting the number of sample points of
the numerical mesh.
The Mesh
attribute unifies these more specific
attributes and can be set for all objects that use a discrete numerical
mesh. Depending on the object, the values for Mesh
must
be integer numbers or lists of such numbers. The more specific attributes
are set automatically when Mesh
values are specified.
E.g., in a 2D function plot of type plot::Function2d
, Mesh
= 200
is equivalent to XMesh
= 200
. In a
3D surface plot of type plot::Surface
, Mesh = [40,
50]
is equivalent to UMesh
= 40
, VMesh
= 50
.
In the "object inspector" of the interactive graphics
tool (see section Viewer,
Browser, and Inspector: Interactive Manipulation in this document),
only the type specific attributes are visible, not the Mesh
attribute.
Roughly speaking, high Mesh
values yield
smooth plots but cost run time.
With the attribute Submesh = m
, additional m equidistant
sample points are inserted between each pair of adjacent sample points
set by the Mesh
attribute. This smoothens the object.
Like Mesh
, the attribute Submesh
unifies
type specific attributes such as XSubmesh
, USubmesh
etc. Depending
on the object, the values of Submesh
have to be
integers or lists of integers.
There is a semantical difference between the "major"
mesh points set by Mesh
and the "minor"
mesh points inserted by Submesh
. There are coordinate
lines associated with the (regular) numerical mesh. See XLinesVisible
, ULinesVisible
etc.
The coordinates lines are available only for the mesh given by the
"major" mesh points, whereas Submesh
does
not influence the number of coordinate lines. Thus, increased Mesh
values
yield a smoother plot with more coordinate lines, whereas Submesh
can
be used to smoothen the plot without adding further coordinate lines.
Apart from this effect, the pair Mesh = n
, Submesh
= m
corresponds to the combination Mesh = (n 
1) (m + 1) + 1
, Submesh = 0
.
If adaptive sampling is
enabled, further nonequidistant sample points are chosen automatically
between the equidistant points of the `initial mesh' set via the Mesh
and Submesh
attributes.
In the following plot, the default value of Mesh
does
not suffice to produce a sufficiently exact picture:
plot(plot::Function2d(sin(x^2), x = 0..10)):
A mesh with more sample points yields a higher resolution graphics:
plot(plot::Function2d(sin(x^2), x = 0..10, Mesh = 500)):
The default value of Mesh
does not provide
a sufficient resolution for the following spiral:
plot(plot::Curve2d([x*cos(x), x*sin(x)], x = 0..50*PI)):
The spiral winds around the origin 25 times. We wish to have approximately 40 sample points per revolution, so we need to use a total of 1000 sample points:
plot(plot::Curve2d([x*cos(x), x*sin(x)], x = 0..50*PI, Mesh = 1000)):
Note the difference between increased Mesh
values
and additional sample points inserted via Submesh
. Submesh
does
not introduce additional coordinate lines:
S1 := plot::Scene3d(plot::Function3d( x^2 + y^2, x = 0..1/2, y = 0..1, Mesh = [4, 4])): S2 := plot::Scene3d(plot::Function3d( x^2 + y^2, x = 0..1/2, y = 0..1, Mesh = [4, 4], Submesh = [2, 2])): S3 := plot::Scene3d(plot::Function3d( x^2 + y^2, x = 0..1/2, y = 0..1, Mesh = [10, 10])): plot(S1, S2, S3, Layout = Horizontal, Height = 5*unit::cm, Width = 12*unit::cm, LineColor = RGB::Black):
delete S1, S2, S3: