![]() |
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 |
Re: Kreis zeichnen ohne Zeichenmethoden oder Winkelfunktione
Such mal nach dem Bresenham Algorithmus. Der laesst sich auch zum Kreis/Ellipse malen ueberreden.
|
Re: Kreis zeichnen ohne Zeichenmethoden oder Winkelfunktione
![]() ![]()
Delphi-Quellcode:
MfG.
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; |
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. |
Re: Kreis zeichnen ohne Zeichenmethoden oder Winkelfunktione
Zitat:
Zitat:
Zitat:
Zitat:
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