Ver Mensaje Individual
  #9  
Antiguo 03-11-2016
Tuvan Tuvan is offline
Registrado
NULL
 
Registrado: nov 2016
Posts: 3
Reputación: 0
Tuvan Va por buen camino
Cita:
Empezado por seoane Ver Mensaje
Según entendí lo que tu quieres son las coordenadas de la elipse y con ellas poder hacer lo que quieras, dibujar la elipse o mover un objeto siguiendo esa trayectoria. Sea como sea, aquí te dejo una función, que pasándole como parámetros x1,y1,x2,y2 (que tienen el mismo significado que en la función de dibujo) y el ángulo entre 0 y 2pi nos devuelve las coordenadas del punto correspondiente de la elipse.

Código Delphi [-]
function EllipsePoint(X1,Y1,X2,Y2: Integer; Angulo: Double): TPoint;
var
  Cx,Cy,A,B: Double;
begin
  A:= abs(X2-X1)/2;
  B:= abs(Y2-Y1)/2;
  Cx:= (X1+X2)/2;
  Cy:= (Y1+Y2)/2;
  Result.X:= Trunc(Cx + A * cos(Angulo));
  Result.Y:= Trunc(Cy - B * sin(Angulo));
end;

Por ejemplo si queremos dibujar la elipse:
Código Delphi [-]
var
  i: integer;
  P: TPoint;
begin
  P:= EllipsePoint(10,10,300,100,0);
  Canvas.MoveTo(P.X,P.Y);
  for i:= 1 to 360 do
  begin
    P:= EllipsePoint(10,10,300,100,(Pi*i)/180);
    Canvas.LineTo(P.X,P.Y);
  end;
end;

O si queremos mover un botón a lo largo de la trayectoria:
Código Delphi [-]
var
  i: integer;
  P: TPoint;
begin
  for i:= 0 to 360 do
  begin
    P:= EllipsePoint(10,10,300,100,(Pi*i)/180);
    Button1.Left:= P.X;
    Button1.Top:= P.Y;
    Application.ProcessMessages;
    Sleep(10);
  end;
end;

Me ha salido de maravilla el codigo, pero ahora esta es la situacion, quiero hacer lo mismo que el botón pero lo he cambiado por un Timage

Sólo me faltaria marcar la ruta por la que pasa con una linea e irla marcando poco a poco con sleep.

La finalidad de mi animación es dibujar un patrón aleatorio de posibles elipses pero soy un poco malo en trigonométria, espero puedan ayudarme
Responder Con Cita