compute level curves of a surface defined with a mesh
[xc, yc] = contour2dm(x, y, polygons, func, nz)
two vectors of size n
, (x(i),y(i))
gives the coordinates of
node i
.
is a [Ntr,N+2]
matrix. Each line of polygons
specifies a convex polygon
of the mesh polygons(j) = [number,node1,node2,node3, ..., nodeN, flag]
.
node1,node2,node3, ..., nodeN
are the number of the nodes which constitutes
the polygon. number is the number of the polygons and flag is an integer
not used in the contour2dm
function.
a vector of size n
: func(i)
gives the value at node i
of the function.
the level values or the number of levels.
nz
is an integer
its value gives the number of
level curves equally spaced from zmin
to zmax
as follows:
z= zmin + (1:nz)*(zmax-zmin)/(nz+1)
nz
is a vector
nz(i)
gives the value of
the i
-th level curve.
vectors of identical sizes containing the contours definitions. See below for details.
contour2dm
computes level curves of a surface
z = f(x, y)
on a 2D plot. The values of
f(x,y)
are given by the matrix z
at the points of the mesh defined by x
and y
.
xc(1)
contains the level associated with first
contour path, yc(1)
contains the number
N1
of points defining this contour path and
(xc(1+(1:N1))
, yc(1+(1:N1))
)
contain the coordinates of the paths points. The second path begin
at xc(2+N1)
and yc(2+N1)
and
so on.
Note that some loops can appear on a level curve when some vertexes of polygons as the same value as the level one. See example #2
m = [6 5 4; ... 6 2 5; ... 6 4 1; ... 5 2 3]; nodes = [55 20; ... 85 5; ... 100 10; ... 75 30; ... 80 20; ... 70 15]; z_fec = [-1 -1 0 0 1 1]; f = scf(); f.color_map = jetcolormap(12); fec(nodes(:, 1), nodes(:, 2), [(1:size(m, 1))', m, (1:size(m, 1))'], z_fec); [xc, yc] = contour2dm(nodes(:,1), nodes(:,2), [(1:size(m, 1))', m, (1:size(m, 1))'], z_fec, [-0.5, 0, 0.5]); k=1;n=yc(k);c=1; N = size(xc, '*') while k <= N & k+yc(k)<=N n=yc(k); plot2d(xc(k+(1:n)),yc(k+(1:n))); c=c+1; k=k+n+1; end | ![]() | ![]() |
f=scf(); f.color_map = jetcolormap(3); m = [1 2 3; ... 1 3 4; ... 3 4 5; ... 6 2 3; ... 7 6 3; ... 7 3 5; ... 7 5 8; ... 2 9 6; ... 9 6 10; ... 6 7 10; ... 10 11 7; ... 7 8 12; ... 9 10 13; ... 7 10 11; ... 7 12 11; ... 13 10 14; ... 10 11 14; ... 11 14 15; ... 11 12 15]; nodes = [0 50; ... //1 20 60; ... //2 15 40; ... //3 0 30; ... //4 20 20; ... //5 30 45; ... //6 27 25; ... //7 26 10; ... //8 35 65; ... //9 40 42; ... //10 45 30; ... //11 42 15; ... //12 50 62; ... //13 55 40; ... //14 53 17]; //15 z = [0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2]; nb_mesh = [(1:size(m, 1))', m, (1:size(m, 1))']; fec(nodes(:, 1), nodes(:, 2), nb_mesh, z, mesh=%t); e=gce(); e.children.foreground = -2; // Contour2dm [xc, yc] = contour2dm(nodes(:,1), nodes(:,2), nb_mesh, z, linspace(0,3,4)); k=1;n=yc(k);c=1; N = size(xc, '*'); while k <= N & k+yc(k)<=N n=yc(k); plot2d(xc(k+(1:n)),yc(k+(1:n))); e=gce(); e.children.foreground = -1; c=c+1; k=k+n+1; end // Here we have a loop in the green part because each vertex on this level curve is equal to 1. // To be clearer, let us change the color_map f.color_map = jetcolormap(1024); | ![]() | ![]() |
Version | Description |
5.5.2 | Function contour2dm introduced. |