# xarrows

draw a set of arrows in 2D or in 3D.

## Calling Sequence

    xarrows(nx, ny [,nz] [,arsize, color])

## Arguments

nx, ny, nz

  real vectors or matrices of same size.

arsize

  a real scalar, size of the arrow head. The default value can be obtained by setting `arsize` to `-1`.

color

  a matrix or scalar. If `color` is a positive scalar it gives the color to use for all arrows. If it is a negative scalar then the current color is used. If it is a vector `color(i)` gives the color to use for arrow `i`.

## Description

`xarrows` draws a set of arrows given by `nx`, `ny` and `nz`. If `nz` is not given, then the arrows are drawn in 2D. If `nx`, `ny` and `nz` are vectors, the `i`-th arrow is defined by `(nx(i),ny(i),nz(i))-->(nx(i+1),ny(i+1),nz(i+1))`. If `nx`, `ny` and `nz` are matrices:

    nx=[xi_1 x1_2 ...; xf_1 xf_2 ...]
    ny=[yi_1 y1_2 ...; yf_1 yf_2 ...]
    nz=[zi_1 z1_2 ...; zf_1 zf_2 ...]

the `k`-th arrow is defined by `(xi_k,yi_k,zi_k)-->(xf_k,yf_k,zf_k)`.

`xarrows` uses the current graphics scale which can be set by calling a high level drawing function such as `plot2d`.

## Examples

    x = 2*%pi*(0:7)/8
    x1 = [sin(x); 9*sin(x)];
    y1 = [cos(x); 9*cos(x)];
    plot2d([-10,10], [-10,10], [-1,-1], "022")
    xset("clipgrf")
    xarrows(x1, y1, -1, [1:7,9]) //8-th color is white
    xset("clipoff")

x = 2*%pi*(0:7)/8 x1 = [sin(x); 9*sin(x)]; y1 = [cos(x); 9*cos(x)]; plot2d([-10,10], [-10,10], [-1,-1], "022") xset("clipgrf") xarrows(x1, y1, -1, [1:7,9]) xset("clipoff")

    N = 100;
    zi = linspace(-1,2,N);
    zf = zi;
    theta = (zi - min(zi))/(max(zi)-min(zi))*720;
    xi = zeros(1,N);  xf = cosd(theta);
    yi = zeros(1,N);  yf = sind(theta);
    clf, plot3d([-1 1 1 1],[-1 -1 -1 1],[-1 -1 2 2])
    xarrows([xi;xf],[yi;yf],[zi;zf],0.7, 32*rand(1,N))

N = 100; zi = linspace(-1,2,N); zf = zi; theta = (zi - min(zi))/(max(zi)-min(zi))*720; xi = zeros(1,N); xf = cosd(theta); yi = zeros(1,N); yf = sind(theta); clf, plot3d([-1 1 1 1],[-1 -1 -1 1],[-1 -1 2 2]) xarrows([xi;xf],[yi;yf],[zi;zf],0.7, 32*rand(1,N))

## History

5.5.0
Arrows can be drawn in 3D.