function s = helix(r,s,n,d)
% s = helix(r,s,n,d)
% Helix with x-axis as its axis and radius r.
% The helix starts at the point [0 0 R] and ends 
% at the point [0 0 R]+[n*s R*sin(2*pi*n) R*cos(2*pi*n)].
% r :  Radius of the right turned helix in m
%      A negative radius will produce a left turned helix
% s :  Distance of the windings in m
% n :  number of windings (n may be fractional)
% d :  Wire diameter in m  (default = 0.002 m).
% s :  Resulting antenna structure 

% Author:  Klaus von der Heide, e-mail:  dj5hg@qsl.net

% Defaults
% ========
if nargin<4  d = 0.003; end
if nargin<3  n = 10;    end
if nargin<2  s = 0.1;   end
if nargin<1  r = 0.08;  end

% Constants
% =========
m  = 1;                % number of segments per wire
kk = 16;               % number of wire segments per turn
ds = s/kk;             % x-step per segment
dp = 2*pi*sign(r)/kk;  % angle step per segment
rr = abs(r);           % positive radius

% Basic elements
% ==============
for k=1:n*kk
   w{k} = wire([(k-1)*ds  rr*sin((k-1)*dp)  rr*cos((k-1)*dp)],...
               [k*ds  rr*sin(k*dp)  rr*cos(k*dp)],d,m);
end

% Putting all together
% ====================
s = construct(w{:});
