Vamos por partes, porque no entiendo muy bien lo que necesitas. Si lo que quieres es pintar partes de la espiral de diferentes colores puede que este algoritmo te sirva de ayuda, como el primero que puse solo se trata de un ejemplo y seguro que se puede optimizar.
La forma de usarlo es sencilla, a la función anterior le añadí un nuevo parámetro Z que determina cuantos cambios de color hay por cada vuelta de la espiral. Es decir, un valor de Z=0 nos dará una espiral de un solo color, con Z=1 se vera una espiral en que cada vuelta es de un color diferente, Z=2 cada vuelta tendrá 2 colores, etc ...
Aquí te la dejo y ya me dirás si es lo que buscabas:
Código Delphi
[-]
procedure Espiral(Canvas: TCanvas; X,Y,Ancho: Integer; V,Z: Real);
var
i: integer;
begin
Ancho:= Ancho * 16;
Z:= Z*V / Ancho;
V:= (2*V*pi)/Ancho;
Canvas.MoveTo(x,y);
for i:= 1 to Ancho do
begin
if odd(Trunc(i*Z)) then
Canvas.Pen.Color:= clBlue
else
Canvas.Pen.Color:= clRed;
Canvas.LineTo(x + (Round(i*cos(V*i))) shr 4,y + (Round(i*sin(V*i)) shr 4));
end;
end;
Un ejemplo:
Código Delphi
[-]
Espiral(Canvas,200,200,200,10,8);