draw unconnected segments
xsegs(xv,yv,[style])
xsegs(xv,yv,zv,[style])
:
xsegs draws a set of unconnected segments given by xv, yv and zv. If xv, yv and zv are matrices they are considered as vectors by concatenating their columns. The coordinates of the two points defining a segment are given by two consecutive values of xv, yv and zv:
(xv(i),yv(i),zv(i))–>(xv(i+1),yv(i+1),zv(i+1)).
For instance, using matrices of size (2,n), the segments can be defined by:
xv=[xi_1 xi_2 ...; xf_1 xf_2...]
yv=[yi_1 yi_2 ...; yf_1 yf_2...]
zv=[zi_1 zi_2 ...; zf_1 zf_2...]
and the segments are (xi_k,yi_k,zi_k)–>(xf_k,yf_k,zf_k).
// 2D example
x=2*%pi*(0:9)/10;
xv=[`sin`_(x);9*`sin`_(x)];
yv=[`cos`_(x);9*`cos`_(x)];
`plot2d`_([-10,10],[-10,10],[-1,-1],"022")
xsegs(xv,yv,1:10)
// 2D example
`plot2d`_([-10,10],[-10,10],[-1,-1],"022")
xsegs([9, -9],[9 , -9]) // Draw the line from X(9,9) to Y(-9, -9)
xsegs([5, -2],[4 , -1]) // Draw the line from X(5,4) to Y(-2, -1)
// 3D example
`clf`_();
a=`gca`_();
a.view="3d";
f=`gcf`_();
f.color_map=`rainbowcolormap`_(120);
alpha=2*%pi*(0:119)/40;
xv=[`sin`_(alpha)/2;`sin`_(alpha)/3];
yv=[`cos`_(alpha)/2;`cos`_(alpha)/3];
zv=[alpha/8;alpha/8];
xsegs(xv,yv,zv,1:120);
// Now adjust the data_bounds
a.data_bounds = [`min`_(xv) `min`_(yv) `min`_(zv); ...
`max`_(xv) `max`_(yv) `max`_(zv)];
// We can add an arrow to each segs
e = `gce`_();
e.arrow_size = 0.4;