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;