Ver Mensaje Individual
  #8  
Antiguo 16-07-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
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);
Responder Con Cita