Rasterung von Kreisen

Unter der Rasterung von Kreisen in der Computergrafik des Zeichnens ( Rastern ) eines Kreises auf ihnen Punktraster einer Rastergrafik oder eines Raster-Grafikgerätes durch Einfärben entsprechender Pixel . Es Gibt hierfür Sowohl Algorithmus zur einfarb Rasterung Als Auch zum Anti – Aliasing .

Einfarbige Rasterung

Einfache Algorithmen

Eine einfache Möglichkeit, Kreise zu beziehen, basiert auf der Parameterdarstellung von Kreisen:

{\ displaystyle (x, \, y) = (r \ cos \ varphi, \, r \ sin \ varphi)}

Für Jeden {\ displaystyle \ varphi} zwischen 0 und {\ displaystyle 2 \ pi}In den Abkürzungen waren enthalten, welche ( x , y ) -Coordinaten nach Formelberechnet gemessen wurden und diejenigen vor Pixel eingefärbt wurden. Kreis mit beliebigem Mittelpunkt können durch eine Koordinatenverschiebung verschoben werden. Diese Methode ist so ineffizient, da die langfristigen Cosinus- und Sinusfunktionen verwöhnt werden.

Eine weitere Möglichkeit ist die Koordinatengleichung des Kreises{\ displaystyle x ^ {2} + y ^ {2} = r ^ {2}}) nach {\ displaystyle y} aufzulösen:

{\ displaystyle y = \ pm {\ sqrt {r ^ {2} -x ^ {2}}}}

Hier wird für jeden {\ displaystyle x} between {\ displaystyle 0} und {\ displaystyle r} {\ displaystyle y}berechnet. Diese Methode ist zum Wiegen der Wurzel ebenfalls ineffizient und lästig für{\ displaystyle x} nahe {\ displaystyle r} Lücken.

Die soeben beschriebenen Algorithmen könnten durch die Nutzung von Symmetrieeigenschaften verbessert werden. Dies bedeutet, dass Pixel symmetrisch sind, was sie zu einem trivialen Computing-Schweißen macht. Hier sehen Sie folgendes, und Sie werden folgendes finden: Pixelfolge acht Pixel einzufärben:

x , y ) y , x ) y , – x ) x , y ) (- x , – y ) (- y , – x ) (- y , x ) (- x , y )

Diese Methode wird verwendet, um das Problem der Lücken-Methode zu beschreiben.

Methode von Metzger

Wahl des nächsten Pixels bei der Methode von Metzger

Eine frühe Methode zum Rastern von Kreisen Wurde 1969 von Metzger vorgestellt. [1] Beide haben eine gute Idee von Pixel of Coordinates{\ displaystyle (x_ {i}, \, y_ {i})} Schluck die zwei Pixel, die die sind {\ displaystyle (x_ {i}, \, y_ {i} +1}} und Innerhalb {\ displaystyle (x_ {i} -1, \, y_ {i} +1}}des Kreises existieren, gewählt. WENN{\ displaystyle R_ {I}} Der Verzicht auf das Innere und {\ displaystyle R_ {A}}Es besteht keine Notwendigkeit für Pixelzum Kreismomentpunkt, also wird dasjeweilige Pixel gewählt, da bleibt nichts mehr übrig. Beispielsweise wird das äußere Pixel gewählt, fällt{\ displaystyle (r-R_ {I})> (R_ {A} -r)}.

Unter Anwendung des Satzes des Pythagoras ist es möglich, folgende Bedingungen zu erfüllen:

{\ displaystyle 2r> {\ sqrt {x_ {i} ^ {2} + {y_ {i} +1} ^ {2}}} + {\ sqrt {{x_ {i} -1) ^ {2} + (Xy {i} 1) ^ {2}}}}.

Meine Hilfe der Dreiecksungleichung , hier für alle{\ displaystyle r> 1 {,} 25} gültig ist, ergibt sich:

{\ displaystyle 4r ^ {2}> (x_ {i} -1) ^ {2} + (2y_ {i} +2) ^ {2}}.

Zur Umsetzung der Quadrationen ist eine allgegenwärtige Vermehrung erforderlich. This wise this in the incredible breaching of Bedding compounds, Metzger formulated allerdings keine der Ligeung.

Methode von Horn

Rastern eines Kreises mit der Methode von Horn

Ein Algorithmus, der die Addition und Subtraktion verdorben hat, 1976 von Horn vorgestellt. [2] Bei Horns Verfahren sind die einzigen im Pixel inneren Kreis, ein Pixel breiter Bereich über den idealen Kreisbogen. WENN{\ displaystyle (x_ {i}, \, y_ {i})} Ihr aktuelles Pixel ist, Sie finden die Richtung des direkt darüberliegenden Pixels {\ displaystyle (x_ {i}, \, y_ {i} +1}}Mit ihnen Rechte Rand dieses Bereichs zu ermöglichen. Liegt es innerhalb des Bereichs, wird dieses Pixel ausgewählt. Lieg das Pixel außerhalb, so wird links Pixel übrig bleiben{\ displaystyle (x_ {i} -1, \, y_ {i} +1}}gewählt. Auf letzteren Fall Lesungen und andere Variablen{\ displaystyle d} folgendenmaßen Tests:

{\ displaystyle \ textstyle d_ {i} = {x_ {i} – {\ frac {1} {2}}) ^ {2} + y_ {i} ^ {2} -r ^ {2}> 0}.

Ein inkrementeller Algorithmus ist derselbe wie die Berücksichtigung der Differenz {\ displaystyle d_ {i + 1} -d_ {i}}Beide möglichen fällen. Bei Jedem Schritt wird{\ displaystyle d} äh {\ displaystyle 2y_ {i} +1}erhöht; wenn das linke Pixel gewählt wird, subtrahiert man{\ displaystyle 2x_ {i} -2}. Der Anfangswert der Kontrollvariablen{\ displaystyle \ textstyle -r + {\ frac {1} {4}}}, kann aus Kreisen mit ganzjährigen Mittelpunkten und Radien aufkommen {\ displaystyle -r} gerundet.

Der komplette Algorithmus lautet:

d = -r
 x = r
 y = 0
 Wiederloch bis  y > x
 Pixel (x, y) symmetrisches Pixel einfärben d = d + 2 × y + 1
 y = y + 1
 Wenn d d > 0
 d = d - 2 × x + 2
 x = x - 1

Optimierung für den Schritt {\ displaystyle d> 0}:
Wenn Mann de Zeile{\ displaystyle x = x-1} Inzwischen besteht kein Zweifel, dass Operation {\ displaystyle +2}einsparen.
Wenn auch vorher{\ displaystyle x} Über 1 wurde fertig, ist das {\ displaystyle +2}automatischer Schuh enthalten.
von{\ displaystyle x}wird in beiden Versionen 1 abgezogen. Trotz Vertauschung der Zeilen bleibt auch das Endergebnis für{\ displaystyle x}gleich.
für{\ displaystyle d} ending mit jetzt aber etwas: Statt mit dem einfachen {\ displaystyle x} wird in diese Zeile mit dem um 1 reduziert {\ displaystyle x} Ausrüstung, mit {\ displaystyle (x-1)}. von{\ displaystyle d} Es wird jetzt {\ displaystyle 2 * (x-1) = (2x-2)} abgezogen:

{\ displaystyle d = d- (2x-2)}

Klammern entfernen, entspricht:

{\ displaystyle d = d-2x + 2}

Sie können auch sehen, dass für {\ displaystyle d}der gleiche Wert, der in der unoptimierten Version ist. Damit seht, das das Endergebnis ist eine algorithmische nicht von unoptimierten Version unterscheide.

Optimiert sieht das das so aus:

d = -r
 x = r
 y = 0
 Wiederholen bis  y > x
 Pixel (x, y) Sowie Symmetrische Pixel einfarb d = d + 2 · y + 1
 y = y + 1
 WENN d > 0
 , x = x - 1
 d = d - 2 × x

Mittelpunktalgorithmus

Wahl des nächsten Pixels beim Midpoint Algorithmus

1964 und 1977 ergriff Bresenham einen einzigen Algorithmus [3] [4] [5] (siehe auch Bresenham-Algorithmus ). Ähnlich wie Metzger ist Pixel auf der Basis ihrer Entfernung zum Kreispunktpunkt aus. Ein einacher, Equalents Algorithmus dient als Midpoint-Formulierung, bei der der Mittelpunkt beide Pixeln betrachtet wird. [6]

Dort lief Midpoint-Algorithmus den Kreisbogen vom Pixel mit großer Y- Koordinate. Ausgesprochen wird von einer impliziten Form der Koordination von Kreisen:

{\ displaystyle F (x, y) = x ^ {2} + y ^ {2} -r ^ {2}}.

{\ displaystyle F}ist 0 von ihnen Kreis, positiv außerhalb und negativie innerhalb des Kreises. Bei jedem Schritt wird der „östliche“ und der „südöstliche“ Pixel gewählt. In dieser Gleichung wurden die Koordinaten des Mittelpunkts eingefügt:

{\ displaystyle \ textstyle d_ {i} = F (x_ {i} + 1, y_ {i} – {\ frac {1} {2}}) = (x_ {i} +1) ^ {2} + y_ {i} – {\ frac {1} {2}}) ^ {2} -r ^ {2}}.

bei {\ displaystyle d_ {i} <0}wird Pixel O gewählt, im anderen Fall SO.

Auch hier ist ein Inkrementer Algorithmus möglich. Die Änderung der Kontrollvariablen hängt von der Wahl des Pixels ab:

{\ displaystyle \ textstyle \ Delta _ {O} = d_ {i + 1} -d_ {i} = F (x_ {i} + 2, y_ {i} – {\ frac {1} {2}}) D_ {i} = 2x_ {i} 3}
{\ displaystyle \ textstyle \ Delta _ {SO} = d_ {i + 1} -d_ {i} = F (x_ {i} + 2, y_ {i} – {\ frac {3} {2}}) D_ {i} = 2x_ {i} -2y_ {i} 5}.

Der Anfangswert der Kontrollvariablen {\ displaystyle \ textstyle {\ frac {5} {4}} – r}. For the governmental rastering this should of the brother, dedicated from d {\ displaystyle \ textstyle {\ frac {1} {4}}}Abgestimmt wird. Dadurch ging in den Anfangswert hinein{\ displaystyle 1-r} Das ist der Vergleich {\ displaystyle d_ {i} <0} in {\ displaystyle \ textstyle d_ {i} <- {\ frac {1} {4}}}, sich durch {\ displaystyle d_ {i} <0} kreisförmiges Lesen.

Der daraus resultierende Algorithmus ist Horns Methode sehr ähnlich.

Im Gegensatz zum Midpoint-Algorithmus für Linien (siehe Rasterung von Linien ) sind{\ displaystyle \ Delta _ {O}} und {\ displaystyle \ Delta _ {SO}}nicht konstant, sondern von der aktuellen Position ab. Es ist möglich, Differenzen „zweite Ordnung“ zu betrachten, bei der{\ displaystyle \ Delta _ {O}} und {\ displaystyle \ Delta _ {SO}}selbst inkrementell berechnet. Mein Schlagalgorithmus ist die Initialisierer Aufwändiger; Innerhalb der Schleife erspart man im Fall der Wahl von SO Eine Addition. Auf dieses Verfahren hat IBM , Bresenhams damaliger Arbeitgeber, in mehreren Staaten Softwarepatente begonnen, darunter auch 1982 im Europäischen Patentamt . [7] [8] [9]

Sonstiges

Die Anzahl der Arithmetischen Operationen bei Bresenhams Algorithmus lasst sich weiter verringenern. [10] Entweder wurden noch andere, schwierigere Methoden vorprogrammiert, was bedeutet, dass die Pixel auf einmal zeichnen. Wu und Rokne gründeten 1987 ein Doppelschrittverfahren vor, bei dem Schleifendurchlauf zwei Pixel eingefärbt wurden. [11] Yao und Rokne sagten 1995, wer die Rasterung von Kreisen Pixelreihen auf einmal eingefärbt hätte können. [12]

Hier sind einige Methoden, um Kreise zu zeichnen. Eine der trivialsten Methoden der Welt, es ist nicht nur der Pixel einer Reihe zu zeichnen. Durch die Symmetrie wird der gesamte Kreis gefüllt. [13] Ebenfalls möglich ist eine minimale Anzahl von Rechten; Nacht ist hier, dass viele Pixel mehr eingefärbt werden. [14]

An einen Kreis durch seinen Mittelpunkt und seinen Radius, zu definieren, einen Mittelpunkt und einen Gläubigen in der Kreis liegenden Punkte anzulegen. Dabei dürfen aber keine bestimmten Punkte des Rasters auf den Straßen des Radius liegen. Algorithmen, die Kreise nach diesem Zeitplan anzeigen, müssen auf ungünstige Anfangspunkte Tests. [15]

Antialiasing

Durch Antialiasing des Kreises Mittels ungewichtetes Flackern stellten wir fest, dass der Kreis für jedes Pixel mit einem Trapez angenähert wird. [16] Der Flächenanteil des Trapezes in der Mitte der Quadrate mit einem Pixel Kantenlänge bestimmt den Farbwert. Danke Inkrement oder Berechnung nutzt den Algorithmus durch Multiplikation und Addition.

Auch der Gupta-Sproell-Algorithmus für Linien kann auf Kreise erweitert werden. [17] Im Gegensatz dazu hängt sich der Glättungskerns nicht nur von der Entfernung ab. Dafür werden verschiedene Tische für verschiedene Radios verwendet. Für größere Kreise kann eine eindeutige Tabelle verwenken, bei der die Krümmung sinkt.

Literatur

  • James D. Foley ua: Computer Graphics: Principles and Practice in C . Addison Wesley, Reading (Massachusetts) 1995, ISBN 978-0-201-84840-3 .
  • David F. Rogers: Verfahrenselemente für die Computergrafik . WCB / McGraw Hill, Boston 1998, ISBN 978-0-07-053548-0 .
  • James F. Blinn : Wie viele Wege können Sie einen Kreis zeichnen? IEEE Computergraphik und Anwendungen 7, 8 (August 1987): 39-44, ISSN  0272-1716

Einzelstunden

  1. Hochspringen↑ Richard A. Metzger: Computergenerierte Grafiksegmente in einem Raster-Display. In AFIPS Conference Proceedings Bd. 34, Spring Joint Computer Conference 1969: 161-172. AFIPS Presse, Montvale 1969
  2. Hochspringen↑ BKP Horn: Kreisgeneratoren für Anzeigegeräte. Computergraphik und Bildverarbeitung 5, 2 (Juni 1976): 280-288, ISSN  0146-664X ( PDF, 580 KB )
  3. Hochspringen↑ Jack Bresenham: Ein linearer inkrementeller Algorithmus zum digitalen Zeichnen von Kreisen. Technischer Bericht TR02.286, IBM General Products Division, San Jose (Kalifornien), 27. Januar 1964
  4. Hochspringen↑ Jack Bresenham: Ein linearer Algorithmus zur inkrementellen digitalen Darstellung von Kreisbögen. Mitteilungen des ACM 20, 2 (1977): 100-106, ISSN  0001-0782
  5. Hochspringen↑ Zur Geschichte der Veröffentlichung dieses Algorithmus siehe http://tog.acm.org/resources/RTNews/html/rtnv20n1.html#art4
  6. Hochspringen↑ James D. Foley ua: Computergrafik: Grundlagen und Praxis in C , S. 83-87
  7. Hochspringen↑ Patent US4371933 .
  8. Hochspringen↑ Patent JP57064778 .
  9. Hochspringen↑ Patent EP0049360 .
  10. Hochspringen↑ Yevgeni P. Kuzmin: Ein effizienter Kreiszeichnungsalgorithmus. Computer Graphics Forum 9, 4 (Dezember 1990): 333-336, ISSN  0167-7055
  11. Hochspringen↑ X. Wu, JG Rokne: Zweistufige inkrementelle Generierung von Linien und Kreisen. Computer Vision, Graphik und Bildverarbeitung 37, 3 (März 1987): 331-344, ISSN  0734-189X
  12. Hochspringen↑ Chengfu Yao, Jon G. Rokne: Hybrid-Scan-Konvertierung von Kreisen. IEEE-Transaktionen auf Visualisierung und Computergrafik 1, 4 (Dezember 1995): 311-318, ISSN  1077-2626
  13. Hochspringen↑ M. Doros: Algorithmen zur Erzeugung von diskreten Kreisen, Ringen und Scheiben. Computergraphik und Bildverarbeitung 10 (1979): 366-371
  14. Hochspringen↑ NI Badler: Disk Generatoren für ein Grid Display Device. Computergraphik und Bildverarbeitung 6 (1977): 589-593
  15. Hochspringen↑ Marek Doros: Zu einigen Eigenschaften der Erzeugung von diskreten Kreisbögen auf einem quadratischen Gitter. Computer Vision, Graphics und Image Processing 28, 3 (Dezember 1984): 377-383
  16. Hochspringen↑ D. Field: Algorithmen zum Zeichnen von aliasierten Kreisen und Ellipsen. Computer Vision, Graphik und Bildverarbeitung 33, 1 (Januar 1986): 1-15
  17. Hochspringen↑ James D. Foley ua: Computergraphik: Prinzipien und Praxis in C , S. 969-971

Schreibe einen Kommentar