Parametric equations and specifications of a triskelion (triple spiral) I haven't been able to find the parametric equations and specifications to form a triskelion, a triple spiral (this is made of three interlocked couples of spirals).
Using the parametric equation of an Archimedean spiral, I have tried this (in Matlab):
% Centers of spirals
theta = [0:360*3] * pi / 180; r = theta;
x = r .* cos(theta); y = r .* sin(theta);
theta = [90:120:360] * pi / 180;
xy(:, 1) = cos(theta) * 2 * x(end) / sqrt(3);
xy(:, 2) = sin(theta) * 2 * x(end) / sqrt(3);

% First spiral of first couple
theta = [0:(360*3-60)] * pi / 180; r = theta;
x11 = r .* cos(theta); y11 = r .* sin(theta);
plot(x11 + xy(1, 1), y11 + xy(1, 2))
hold on

% Second spiral of first couple
theta = [0:(360*3+60)] * pi / 180; r = theta;
x21 = r .* cos(theta); y21 = r .* sin(theta);
plot(-x21 + xy(1, 1), -y21 + xy(1, 2))

% First spiral of second couple
theta = [0:(360*3)] * pi / 180; r = theta;
x12 = r .* cos(theta); y12 = r .* sin(theta);
plot(x12 + xy(2, 1), y12 + xy(2, 2))

% Second spiral of second couple
theta = [0:(360*3-120)] * pi / 180; r = theta;
x22 = r .* cos(theta); y22 = r .* sin(theta);
plot(-x22 + xy(2, 1), -y22 + xy(2, 2))

% First spiral of third couple
theta = [0:(360*3+120)] * pi / 180; r = theta;
x13 = r .* cos(theta); y13 = r .* sin(theta);
plot(x13 + xy(3, 1), y13 + xy(3, 2))

% Second spiral of third couple
theta = [0:(360*3)] * pi / 180; r = theta;
x23 = r .* cos(theta); y23 = r .* sin(theta);
plot(-x23 + xy(3, 1), -y23 + xy(3, 2))

axis equal, axis off

As you see it cannot work, only two spirals are interlocked (by construction).
How should the spirals be in order to obtain a nice triskelion?
 A: Only a Triskelion ? Why not Polyskelions ?
var
   a,c,r,t,x,y,dt,x0,y0,t1,t2:real;
   n,Nsp,Nwh:integer;
begin
     Nsp:=3;        {Number of spirals}
     Nwh:=4;        {Number of whirls in each spiral}
     a:=1;          {Scale}
     dt:=0.0001;
     for n:=0 to Nsp-1 do
     begin
          r:=0;
          t:=0;
          x0:=a*cos(2*pi*n/Nsp);
          y0:=a*sin(2*pi*n/Nsp);
          t1:=2*pi*Nwh-pi/Nsp+pi/2;
          t2:=t1+2*pi/Nsp;
          c:=a*sin(pi/Nsp)*2/pi/(1+4*Nwh);
          repeat
                t:=t+dt;
                r:=c*t;
                x:=x0+r*cos(t+2*pi*n/Nsp);
                y:=y0+r*sin(t+2*pi*n/Nsp);
                PLOT(x,y);
                if t<=t1 then
                begin
                     x:=x0+r*cos(t+pi+2*pi*n/Nsp);
                     y:=y0+r*sin(t+pi+2*pi*n/Nsp);
                     PLOT(x,y);
                end;
          until(t>=t2);
     end;

$(x0,y0)$ are the cartesian coordinates of the center of one spiral.
$(r,t)$ are the corresponding polar coordinates.
$dt$ is the increment of angle from one point of the other.
The external branch of the spiral is drawn from angle $t=0$ to $t=t_2$  Meanwhile, the internal branch is drawn from $t=\pi$ to $t=t_1+\pi$. 


A: JJacquelin's solution in Matlab would be the following:
Nsp = 3; % Number of spirals
Nwh = 2; % Number of whirls in each spiral
a = 1; % Scale
dt = 0.0001;

hold on
for n = 0:(Nsp - 1)

  x0 = a * cos(2 * pi * n / Nsp);
  y0 = a * sin(2 * pi * n / Nsp);
  t1 = 2 * pi * Nwh - pi / Nsp + pi / 2;
  t2 = t1 + 2 * pi / Nsp;
  c = a * sin(pi / Nsp) * 2 / pi / (1 + 4 * Nwh);

  t = dt:dt:t2;
  r = c * t;

  x = x0 + r .* cos(t + 2 * pi * n / Nsp);
  y = y0 + r .* sin(t + 2 * pi * n / Nsp);
  plot(x, y, '.b')

  inds = t <= t1;
  t = t(inds);
  r = r(inds);
  x = x0 + r .* cos(t + pi + 2 * pi * n / Nsp);
  y = y0 + r .* sin(t + pi + 2 * pi * n / Nsp);
  plot(x, y, '.r')

end
axis equal
axis off

Note that I coloured differently the spirals, for the only purpose to understand better how the code works.
A: I came upon this entry while trying to duplicate the Viking spiral found in Philip J. Davis's Spirals: from Theodorus to Chaos, p. 29, which was inspired by the ancient stone pictured here: http://www.alamy.com/stock-photo-viking-memorial-picture-stone-from-martebo-gotland-sweden-5th-century-28347224.html. Kudos to those who have contributed to the development of the polyskelion curve.
I have modified @randomatlabuser's Matlab code to provide the output as a single continuous curve or tile, if you will. The program uses complex variables in lieu of Cartesian coordinates for compactness and clarity. The code is provided here:
function Polyskelions4MathStack

% logarithmic triskelion or MULTIskelion spiral?  VIKING SPIRAL
% from helmut suppan at stackexchange (maybe others: search 'triskelion'
% http://math.stackexchange.com/questions/1688663/parametric-equations-and-specifications-of-a-logarithmic-triskelion-triple-spir?s=1|1.9323
Nsp=4; % Number of spirals
Nwh=3; % Number of whirls in each spiral

a=1; % Scale
dt=0.1;

for n=0:(Nsp-1)

   z0=a*exp(i*2*pi*n/Nsp);
   t1=2*pi*Nwh-pi/Nsp+pi/2;
   t2=t1+2*pi/Nsp;
   c=a*sin(pi/Nsp)*2/pi/(1+4*Nwh);

   t=(0:dt:t2)';
   r=c*t;

   z=z0+r.*exp(i*(t+2*pi*n/Nsp));
   assignHere(['z' num2str(n+1+Nsp)],z)

   inds=t<= t1;
   T=t(inds);
   R=r(inds);
   z=z0-R.*exp(i*(T+2*pi*n/Nsp));
   assignHere(['z' num2str(n+1)],flipud(z))

end

Z=[];
for k=1:Nsp
    Z=[Z;eval(['z' num2str(k)]);eval(['z' num2str(k+Nsp)])];
end
Z=unique(Z,'stable');
Z=[Z;Z(1)];
figure;plot(Z);axis equal;axis off

return

function assignHere(varargin)
%ASSIGNHERE Creates a variable in the current workspace.
%   ASSIGNHERE is a little trick to get ASSIGNIN to assign a
%   variable in the current workspace.
%
%   Example:  assignHere('test', [1 2 3]);
%   If this were attempted within a function file, it would not be
%   possible to assign in the current workspace, only the caller or
%   base.

%    Doug Hull <hull@mathworks.com>     3/11/2003
%    Copyright 1984-2003 The MathWorks, Inc.
%    This function is not supported by The MathWorks, Inc.
%    It is provided 'as is' without any guarantee of
%    accuracy or functionality.

assignin('caller', varargin{:})

I have also found that the quadskelion (4 spirals) will tessellate with astroids to any number of whorls. The figure below shows the result for Nsp=4 and Nwh=3.

