function [x , y , nc] = SpringCoords (xyA , xyB , n , sl)

% ... berechnet Polygon (Koordinaten werden in x und y 
% abgeliefert, nc ist die Anzahl der Polygonpunkte) eines
% Federsymbols zwischen den Punkten xyA und xyB. n ist
% die Anzahl der gewuenschten "Zacken" (n=4 bedeutet 4
% "Zacken" auf jeder Seite, also viermal "von der Mitte
% nach aussen, von dort zur anderen Seite nach außen und
% von dort zurueck zur Mitte). sl ist die komplette
% "Drahtlaenge der Feder".

dist = sqrt ((xyB(1)-xyA(1))^2+(xyB(2)-xyA(2))^2) ;

nc = 2*n+4 ;
dx = (xyB(1)-xyA(1))/nc ;
dy = (xyB(2)-xyA(2))/nc ;
ds = dist/nc ;
slq = sl-3*ds ;
ql  = slq/(2*n) ;
b   = .5*sqrt(ql^2-ds^2) ;

x(1)    = xyA(1) ;
x(nc)   = xyB(1) ;
y(1)    = xyA(2) ;
y(nc)   = xyB(2) ;
x(2)    = xyA(1)+dx*1.5 ;
x(nc-1) = xyB(1)-dx*1.5 ;
y(2)    = xyA(2)+dy*1.5 ;
y(nc-1) = xyB(2)-dy*1.5 ;

ca = (xyB(1)-xyA(1))/dist ;
sa = (xyB(2)-xyA(2))/dist ;
xx = x(2) + dx ;
yy = y(2) + dy ;

for i=3:2:nc-3
    x(i) = xx - b*sa ;
    y(i) = yy + b*ca ;
    xx   = xx + dx ;
    yy   = yy + dy ;
    x(i+1) = xx + b*sa ;
    y(i+1) = yy - b*ca ;
    xx   = xx + dx ;
    yy   = yy + dy ;
end
