Vielleicht ist es besser, die Laufvariable parametrisch zu Normieren und nicht als Winkel zu übernehmen.
Dann kann man das Rendering etwass besser steuern.
So ungefähr meine ich, ungetestet:
Delphi-Quellcode:
// Zeichnet eine Ellipse mit Mittelpunkt (xm, ym), Radien xR, yR,
// zwischen Startwinkel stangle und Endwinkel endangle (in Grad),
// mit numSteps Schritten für gleichmäßigere Punktverteilung
procedure DrawEllipse(xm, ym, xR, yR, stangle, endangle: Extended; numSteps: Integer);
var
t, tStart, tEnd, tStep: Extended;
i: Integer;
x, y: Extended;
begin
if numSteps < 1 then Exit; // Sicherheitsprüfung
// Winkel in Radiant umrechnen
tStart := DegToRad(stangle);
tEnd := DegToRad(endangle);
// Normierter Parameter t von tStart bis tEnd
tStep := (tEnd - tStart) / numSteps;
// Zeichne Punkte entlang der Ellipse
for i := 0 to numSteps do
begin
t := tStart + i * tStep;
// Parametrische Darstellung der Ellipse
x := xm + xR * Cos(t);
y := ym + yR * Sin(t);
DrawPixel(Round(x), Round(y)); // Zeichne Pixel
end;
end;