Kreis

Aus DGL Wiki
Version vom 18. Mai 2018, 20:07 Uhr von Mathias (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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;