Kreis
Aus DGL Wiki
Ein Kreis lässt sich durch einen Winkel, Radius und Mittelpunkt parameterisieren.
int x = ofsx + r * cosf(alpha);
int y = ofsy + r * sinf(alpha);
Für einen vollständigen Kreis durchläuft man alpha von 0 bis 2PI und als Zeichenmodus wird GL_POINTS oder GL_LINE_STRIP gewählt.
Beispiel
Dieses Beispiel zeigt, wie man die obige Formel umsetzt, einfachheitshalber wird der Kreis auf den Canvas des Forms ausgegeben.
Bei OpenGL nimmt man anstelle MoveTo und LineTo, Vektoren.
procedure TForm1.Circle(ofsx, ofsy, radius: integer);
const
Sektoren = 24; // Die Auflösung des Kreises.
var
i: integer;
a: single;
begin
Canvas.MoveTo(ofsx + radius, ofsy);
for i := 1 to Sektoren do begin
a := Pi * 2 / Sektoren * i;
Canvas.LineTo(
ofsx + round(cos(a) * radius),
ofsy + round(sin(a) * radius)
);
end;
end;