Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kreis zeichnen ohne Zeichenmethoden oder Winkelfunktionen (https://www.delphipraxis.net/52859-kreis-zeichnen-ohne-zeichenmethoden-oder-winkelfunktionen.html)

clarity 5. Sep 2005 16:33


Kreis zeichnen ohne Zeichenmethoden oder Winkelfunktionen
 
Hallo Leute,
der Titel sagt es ja eigentlich schon.
Wir sollen einen Kreis zeichnen, ohne dabei Zeichenmethoden (Canvas.Ellipse o.ä.) zu verwenden. Ich hatte es jetzt mit winkelfunktionen gelöst, habe nun aber die Aufgabe bekommen, es ohne selbige zu lösen (wg. Schnelligkeit).
Hab schon im Forum gestöbert und gegoogelt hab aber kaum was brauchbares gefunden :wall:
Kann mir einer weiterhelfen ?? Kriegs einfach nicht gebacken , wäre sehr freundlich :oops:

Vlg, Alex

Robert Marquardt 5. Sep 2005 16:44

Re: Kreis zeichnen ohne Zeichenmethoden oder Winkelfunktione
 
Such mal nach dem Bresenham Algorithmus. Der laesst sich auch zum Kreis/Ellipse malen ueberreden.

turboPASCAL 5. Sep 2005 20:25

Re: Kreis zeichnen ohne Zeichenmethoden oder Winkelfunktione
 
Bresenham-Algorithmus zum Zeichnen eines Kreises

http://www.delphipraxis.net/images/common/icon_dp.gif einen Kreis zu Fuß zeichen

Delphi-Quellcode:
procedure Circle(Canvas: TCanvas; X, Y, Radius: Word; Color: TColor);
var
  x1, x2, y1, y2, r2, d: integer;
  h: real;
begin
  H := 0.5;
  Y2 := 0;
  d := round((Radius * 3.2) / (SQR(2) + h));
  X2 := Radius * Radius;
  x1 := Radius;
  R2 := X2 + d;
  for y1 := 0 to d do
  begin
    if Y2 + X2 > R2 then
    begin
      X2 := X2 - x1 - x1 + 1;
      x1 := x1 - 1;
    end;
    with Canvas do
    begin
      pixels[X - x1, Y - y1] := Color;
      // ...
    end;
    Y2 := Y2 + y1 + y1 + 1;
  end;
end;
MfG.

Robert Marquardt 6. Sep 2005 05:40

Re: Kreis zeichnen ohne Zeichenmethoden oder Winkelfunktione
 
turboPASCAL, du haettest vielleicht besser erst heute aund auf Anfrage antworten sollen.
Das ist bestimmt eine Hausaufgabe und da sollte man erst nur eine Spur auslegen, damit der Frager lernt selbst zu suchen.

Ist aber nicht wichtig. Ich suhle mich nur im Professorenmodus. :-)

Nun zu den Highlights des Bresenham-Algorrithmus:

- malt Strecken
- malt Kreise
- erlaubt Antialiasing

damit ist es *der* Kernalgorithmus der Grafik.

turboPASCAL 6. Sep 2005 09:35

Re: Kreis zeichnen ohne Zeichenmethoden oder Winkelfunktione
 
Zitat:

Zitat von Robert Marquardt
turboPASCAL, du haettest vielleicht besser erst heute und auf Anfrage antworten sollen.

...naja, heute, morgen oder doch lieber erst nächste Woche...

Zitat:

Zitat von Robert Marquardt
Das ist bestimmt eine Hausaufgabe und da sollte man erst nur eine Spur auslegen, damit der Frager lernt selbst zu suchen.

Hm, ja dachte ich mir auch schon...
  1. es ist keine Komplettlösung und man muss dann doch noch ein wenig nachdenken. Der Code zeichnet nicht den gesamten Kreis, man muss man ihn erst verstehen...
  2. der Link Bresenham-Algorithmus zum Zeichnen eines Kreises ist eine Ausgezeichnete Seite um zu lernen und zu verstehen... Linien, Polygone, Kreise u.v.m.
  3. .. ja, möglicher Weise schön ein wenig zuviel Hilfe :oops:
  4. fällt mir jetzt nix ein... :wink:
Zitat:

Zitat von Robert Marquardt
Ist aber nicht wichtig. Ich suhle mich nur im Professorenmodus. :-)

... das macht nix da ich mich im Dozentenmodus befinde :warn: (hoffentlich war das Jahr nicht um sonst) :wink:

Zitat:

Zitat von Robert Marquardt
Nun zu den Highlights des Bresenham-Algorrithmus:

- malt Strecken
- malt Kreise
- erlaubt Antialiasing

damit ist es *der* Kernalgorithmus der Grafik.

dito.


MfG.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz