[go: up one dir, main page]

DE102009018928B4 - Linienzeichenverfahren - Google Patents

Linienzeichenverfahren Download PDF

Info

Publication number
DE102009018928B4
DE102009018928B4 DE102009018928.9A DE102009018928A DE102009018928B4 DE 102009018928 B4 DE102009018928 B4 DE 102009018928B4 DE 102009018928 A DE102009018928 A DE 102009018928A DE 102009018928 B4 DE102009018928 B4 DE 102009018928B4
Authority
DE
Germany
Prior art keywords
correction
major axis
starting point
line
corrected
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102009018928.9A
Other languages
English (en)
Other versions
DE102009018928A1 (de
Inventor
Kouji Nishikawa
Makoto Adachi
Masayuki Nakamura
Motonobu Mamiya
Kae Yamashita
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cypress Semiconductor Corp
Original Assignee
Cypress Semiconductor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cypress Semiconductor Corp filed Critical Cypress Semiconductor Corp
Publication of DE102009018928A1 publication Critical patent/DE102009018928A1/de
Application granted granted Critical
Publication of DE102009018928B4 publication Critical patent/DE102009018928B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/23

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

Linienzeichenverfahren zum Zeichnen einer Linie, deren Koordinaten gegeben sind, auf einem Bildschirm, auf dem Pixel angeordnet sind, gemäß einer Diamond-Exit-Regel, welches Verfahren die Schritte umfasst: a) Bestimmen einer horizontalen oder vertikalen Achse als Hauptachse, je nachdem, ob der Betrag der Differenz zwischen den x-Koordinatenwerten des Endpunkts und des Startpunkts der Linie größer oder kleiner ist als der Betrag der Differenz zwischen den y-Koordinatenwerten des Endpunkts und des Startpunkts, b) Korrigieren der Koordinatenwerte des Startpunkts und/oder des Endpunkts der Linie, b1) wobei der Hauptachsen-Koordinatenwert des Startpunkts nur dann korrigiert wird, wenn dieser im Äußeren des Rautenrahmens eines Pixels liegt, wobei der Hauptachsen-Koordinatenwert des Startpunkts zum Hauptachsen-Koordinatenwert des Mittelpunkts desjenigen Pixels korrigiert wird, in dem ein vom Startpunkt ausgehendes Liniensegment zum ersten Mal einen Rautenrahmen von innen nach außen kreuzt, und b2) was den Endpunkt anbelangt, dessen Hauptachsen-Koordinatenwert zum Hauptachsen-Koordinatenwert des Mittelpunkts desjenigen Pixels korrigiert wird, in dem ein zum Endpunkt hinlaufendes Liniensegment zum letzten Mal einen Rautenrahmen von innen nach außen kreuzt, c) Ermitteln, ob eine Richtung entlang der Hauptachse von dem Startpunkt zu dem Endpunkt der Linie nach der Korrektur dieselbe wie vor der Korrektur ist; d) wenn die Richtungen entlang der Hauptachse vor und nach der Korrektur nicht übereinstimmen, ermitteln, ob ganzzahlige Werte der Hauptachsen-Koordinaten des Startpunktes und des Endpunktes nach der Korrektur dieselben sind; und e) Zeichnen mindestens eines Pixels, e1) wenn die Richtungen entlang der Hauptachse vor und nach der Korrektur dieselben sind oder e2) die Richtungen entlang der Hauptachse vor und nach der Korrektur verschieden sind, und ferner ganzzahlige Werte der Hauptachsen-Koordinaten des Startpunkts und des Endpunkts nach der Korrektur dieselben sind.

Description

  • Gebiet
  • Die hierin diskutierte Ausführungsform betrifft ein Linienzeichenverfahren zum Zeichnen von Linien auf einem Bildschirm.
  • Hintergrund
  • Als einer von Linienzeichenalgonthmen zum Zeichnen von Linien, deren Koordinaten gegeben sind, auf einem Bildschirm, auf dem Pixel angeordnet sind, existiert ein Verfahren mit der Bezeichnung DiamondExit-Regel (was soviel heißt wie Rautenaustrittsregel). Wenn Linien gemäß diesem Algorithmus gezeichnet werden, können selbst beim Zeichnen von kontinuierlichen Linien deren Anschlussstellen ohne jede Lücke verbunden werden und werden Pixel auch nicht zweimal gezeichnet. Konventionell werden, wenn keine DiamondExit-Regel zum Einsatz kommt, Linien manchmal unterbrochen. Deshalb ist es vorzuziehen, eine DiamondExit-Regel anzuwenden, wenn Linien gezeichnet werden.
  • Wenn diese Regel angewendet wird, ist jedoch Sorgfalt erforderlich, wenn eine Linie gezeichnet wird, deren Länge kleiner als 1 ist. Denn es kann der Fall eintreten, dass eine Linie komplett verschwindet (kein Pixel wird gezeichnet), und der Fall, dass nur ein Pixel gezeichnet wird, in Abhängigkeit von den Positionen des Startpunktes und Endpunktes einer Linie.
  • Wenn eine DiamondExit-Regel angewendet wird, ist ein Mechanismus zum Bestimmen dessen erforderlich, wie die Start- und Endpunkte einer Linie, deren Länge kleiner als 1 ist, bei allen denkbaren Mustern anzugeben sind. Wenn jedoch versucht wird, eine Logik zum Bestimmen dessen; wie bei allen Mustern zu zeichnen ist, durch eine digitale Schaltung zu realisieren, wird deren Schaltungsumfang groß und verlangsamt sich auch ihre Prozessgeschwindigkeit. Deshalb wird eine DiamondExit-Regel gewünscht, die angewendet werden kann, wenn eine Linie gezeichnet wird, deren Länge kleiner als 1 ist, und die mit einer einfacheren Logik realisiert werden kann.
  • Aus SEGAL, M. [et al.]: The Open GL Graphics System: A Specification (Version 1.1) ist ein Linienzeichenverfahren gemäß der DiamondExit-Regel zum Zeichnen von Linien, deren Koordinaten gegeben sind, bekannt.
  • In SUN, C. [et al.]: Hardware Acceleration for Spatial Selections and Joins. Proceedings of the 2003 ACM SIGMOD International Conference an Management of Data ist ein Graphik-Chip zum Implementieren eines Linienzeichenverfahrens gezeigt.
  • Zusammenfassung
  • Es ist eine Aufgabe der vorliegenden Erfindung, ein Linienzeichenverfahren vorzusehen, bei dem keine Linie unterbrochen wird und das mit einer einfacheren Logik mit hoher Geschwindigkeit realisiert werden kann.
  • Gemäß einem Aspekt der Erfindung ist ein Linienzeichenverfahren vorgesehen, zum Zeichnen von Linien, deren Koordinaten gegeben sind, auf einem Bildschirm, auf dem Pixel angeordnet sind, gemäß einer vorgeschriebenen Regel, welches Verfahren das Korrigieren von Koordinaten am Endpunkt einer Linie enthält, auf der Basis dessen, dass der Endpunkt ein Startpunkt oder ein Endpunkt ist oder ob der Endpunkt im Inneren eines vorgeschriebenen Rahmens liegt, das Bestimmen, ob eine Richtung von einem Startpunkt einer Linie nach Korrektur hin zu ihrem Endpunkt horizontal oder vertikal dieselbe ist wie eine Richtung von einem Startpunkt vor Korrektur einer Linie hin zu ihrem Endpunkt, sowie das Bestimmen, ob ganzzahlige Werte der Koordinaten von Start- und Endpunkten nach Korrektur dieselben sind, wenn Richtungen von Startpunkten nach und vor Korrektur einer Linie hin zu ihren Endpunkten nicht übereinstimmen.
  • Gemäß diesem Linienzeichenverfahren können Linien, die nicht unterbrochen sind, mit hoher Geschwindigkeit mit einer einfacheren Logik gezeichnet werden.
  • Das Ziel und die Vorteile der Erfindung werden mit den Elementen und Kombinationen realisiert und erreicht, auf die in den Ansprüchen besonders verwiesen wird.
  • Es versteht sich, dass sowohl die obige allgemeine Beschreibung als auch die folgende eingehende Beschreibung als Beispiel und zur Erläuterung dienen und die Erfindung, so wie beansprucht, nicht beschränken.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist eine Blockkonfiguration einer Linienzeichenvorrichtung zum Implementieren des Linienzeichenverfahrens in dieser bevorzugten Ausführungsform.
  • 2 zeigt einen Prozessablauf dieser bevorzugten Ausführungsform.
  • 3 zeigt die Definition eines Rautenrahmens (engl.: Diamond frame).
  • 4 ist eine beispielhafte Anwendung einer Diamond-Exit-Regel (Nr. 1).
  • 5 ist eine beispielhafte Anwendung einer Diamond-Exit-Regel (Nr. 2).
  • 6A6D zeigen, wie die Start- und Endpunkte einer Linie anzugeben sind, deren Länge 1 ist, sowie eine Regel, wie die Punkte gemäß einer DiamondExit-Regel zu zeichnen sind.
  • 7A7B erläutern die Grundidee des Linienzeichnens.
  • 8 erläutert einen Endpunktkorrekturprozess (Nr. 1).
  • 9 erläutert einen Endpunktkorrekturprozess (Nr. 2).
  • 10 erläutert einen Endpunktkorrekturprozess (Nr. 3).
  • 11 erläutert einen Endpunktkorrekturprozess (Nr. 4).
  • 12 erläutert einen Endpunktkorrekturprozess (Nr. 5).
  • 13 erläutert einen Endpunktkorrekturprozess (Nr. 6).
  • 14 erläutert einen Endpunktkorrekturprozess (Nr. 7).
  • 15 erläutert einen Endpunktkorrekturprozess (Nr. 8).
  • 16 erläutert einen Endpunktkorrekturprozess (Nr. 9).
  • 17 erläutert einen Endpunktkorrekturprozess (Nr. 10).
  • 18 ist ein Flussdiagramm des Endpunktkorrekturprozesses gemäß dieser bevorzugten Ausführungsform (Nr. 1).
  • 19 ist ein Flussdiagramm des Endpunktkorrekturprozesses gemäß dieser bevorzugten Ausführungsform (Nr. 2).
  • 20 ist ein Flussdiagramm des Endpunktkorrekturprozesses gemäß dieser bevorzugten Ausführungsform (Nr. 3).
  • 21 ist ein Flussdiagramm des Endpunktkorrekturprozesses gemäß dieser bevorzugten Ausführungsform (Nr. 4).
  • 22 ist ein Flussdiagramm des Endpunktkorrekturprozesses gemäß dieser bevorzugten Ausführungsform (Nr. 5).
  • 23 ist ein Flussdiagramm des Endpunktkorrekturprozesses gemäß dieser bevorzugten Ausführungsform (Nr. 6).
  • 24A24B erläutern einen Zeichenrichtungsbestimmungsprozess (Nr. 1).
  • 25 erläutert einen Zeichenrichtungsbestimmungsprozess (Nr. 2).
  • 26 ist eine Blockkonfiguration einer Vorrichtung zum Realisieren des Linienzeichenverfahrens in dieser bevorzugten Ausführungsform (Nr. 1).
  • 27 ist eine Blockkonfiguration einer Vorrichtung zum Realisieren des Linienzeichenverfahrens in dieser bevorzugten Ausführungsform (Nr. 2).
  • 28 ist ein beispielhafter Vergleich zwischen dieser bevorzugten Ausführungsform und dem Stand der Technik (Nr. 1).
  • 29 ist ein beispielhafter Vergleich zwischen dieser bevorzugten Ausführungsform und dem Stand der Technik (Nr. 2).
  • 30 ist ein beispielhafter Vergleich zwischen dieser bevorzugten Ausführungsform und dem Stand der Technik (Nr. 3).
  • 31 ist ein beispielhafter Vergleich zwischen dieser bevorzugten Ausführungsform und dem Stand der Technik (Nr. 4).
  • 32 ist ein beispielhafter Vergleich zwischen dieser bevorzugten Ausführungsform und dem Stand der Technik (Nr. 5).
  • 33 ist ein beispielhafter Vergleich zwischen dieser bevorzugten Ausführungsform und dem Stand der Technik (Nr. 6).
  • Beschreibung von Ausführungsformen
  • In dieser bevorzugten Ausführungsform wird die Endpunktkorrektur auf die Start- und Endpunkte einer Linie angewendet und wird eine Zeichenrichtung nach Korrektur erhalten. Falls die erhaltene Zeichenrichtung nach Korrektur dieselbe wie eine Zeichenrichtung vor Korrektur ist, wird bestimmt: ”Zeichnen (Nicht verschwinden lassen)”. Falls die erhaltene Zeichenrichtung nach Korrektur nicht mit einer Zeichenrichtung vor Korrektur koinzidiert, werden außerdem die ganzzahligen Werte der Startpunktkoordinaten und Endpunktkoordinaten nach der Korrektur verglichen (der ganzzahlige Wert der Koordinaten eines Punktes gibt die Position eines Pixels an). Falls die ganzzahligen Werte dieselben sind, wird bestimmt: ”Zeichnen (Nicht verschwinden lassen)”. Falls die ganzzahligen Werte nicht übereinstimmen, wird bestimmt: ”Nicht zeichnen (Verschwinden lassen)”. So kann das Zeichnen einer Linie, deren Länge kleiner als 1 ist, ziemlich leicht bestimmt werden.
  • In 1 ist die Blockkonfiguration einer Linienzeichenvorrichtung zum Implementieren des Linienzeichenverfahrens in dieser bevorzugten Ausführungsform gezeigt.
  • Die in 1 gezeigte Vorrichtung wird durch eine digitale Schaltung realisiert, die aus Hardware gebildet ist. Diese bevorzugte Ausführungsform umfasst eine Diamond- oder Rautenbestimmungseinheit 10 zum Anwenden der Bestimmung nach einer DiamondExit-Regel auf Start- und Endpunkte und die Endpunktkorrektur, eine Zeichenrichtungsberechnungseinheit 11 zum Berechnen von Zeichenrichtungen nach der Endpunktkorrektur, eine Zeichenrichtungsvergleichseinheit 12 zum Prüfen von Zeichenrichtungen vor und nach der Korrektur und eine Zeichenbestimmungseinheit 13 zum endgültigen Bestimmen, ob Pixel zu zeichnen sind. Die Diamond- oder Rautenbestimmungseinheit 10 umfasst eine Startpunkt-D-Wert-Operationseinheit 14, eine Endpunkt-D-Wert-Operationseinheit 15, eine Hauptachsenbestimmungseinheit 16, eine Endpunktkorrektureinheit 17 und ein Endpunktkorrekturspeicherregister 18. Die Startpunkt-D-Wert-Operationseinheit 14 berechnet einen Wert (D-Wert), um zu bestimmen, ob ein Startpunkt im Inneren einer Raute (engl.: diamond) liegt. Die Endpunkt-D-Wert-Operationseinheit 15 berechnet einen Wert (D-Wert), um zu bestimmen, ob ein Endpunkt im Inneren einer Raute liegt. Die Hauptachsenbestimmungseinheit 16 bestimmt, welche von einer X-Koordinaten-Differenz oder einer Y-Koordinaten-Differenz größer ist, auf der Basis einer Differenz von Koordinaten zwischen Start- und Endpunkten, und legt die Achse der größeren Koordinaten (X- oder Y-Achse) als Hauptachse fest. Die Endpunktkorrektureinheit 17 umfasst eine Startpunkt-Hauptachsenkoordinaten-Endpunktkorrektureinheit, eine Startpunkt-Nebenachsenkoordinaten-Endpunktkorrektureinheit, eine Endpunkt-Hauptachsenkoordinaten-Endpunktkorrektureinheit und eine Endpunkt-Nebenachsenkoordinaten-Endpunktkorrektureinheit und wendet eine Endpunktkorrektur auf die Hauptachsenkoordinaten und Nebenachsenkoordinaten (Koordinaten der Koordinatenachse, die nicht die Hauptachse ist) von Start- und Endpunkten an. Das Endpunktkorrekturspeicherregister 18 speichert die Koordinaten eines Endpunktes nach der Korrektur.
  • 2 zeigt einen Prozessablauf dieser bevorzugten Ausführungsform.
  • Die Diamond- oder Rautenbestimmungseinheit 10 wendet eine Endpunktkorrektur auf die Start- und Endpunkte einer Linie unter Verwendung einer DiamondExit-Regel unabhängig an. Wenn die Koordinaten der Start- und Endpunkte eingegeben werden (Schritt S0), berechnet die Rautenbestimmungseinheit 10 bei Schritt S1 die D-Werte der Start- und Endpunkte. Der D-Wert wird wie folgt berechnet. Z = |X1 – X0| + |Y1 – Y0|
  • Falls Z < 0,5 ist, liegt er im Inneren eines Rautenrahmens. Falls Z ≥ 0,5 ist, liegt er im Außeren des Rautenrahmens.
  • In der obigen Gleichung sind (X1, Y1) die Koordinaten eines Startpunktes oder eines Endpunktes und sind (X0, Y0) die Koordinaten des Pixelzentrums. Diese Gleichung bestimmt, ob die Koordinatenposition eines Startpunktes oder eines Endpunktes im Inneren einer Raute eines Pixels liegt. Dann wird eine Hauptachsenbestimmung angewendet. Sowohl in dem Fall, wenn die X-Achse die Hauptachse ist, als auch in dem Fall, wenn die Y-Achse die Hauptachse ist, werden die X- oder Y-Koordinatenachsen von Start- und Endpunkten korrigiert.
  • Nach der Endpunktkorrektur erhält die Zeichenrichtungsberechnungseinheit 11 eine Zeichenrichtung nach Korrektur und sendet ihr Resultat an die Zeichenrichtungsvergleichseinheit 12 (Schritt S3). Eine Zeichenrichtung nach Korrektur wird erhalten, indem die Hauptachsenkoordinaten eines Startpunktes nach Korrektur von den Hauptachsenkoordinaten eines Endpunktes nach Korrektur subtrahiert werden. Falls ihr Subtraktionsresultat negativ ist, wird bestimmt, dass die Zeichenrichtung ”Negativ” ist. Falls es positiv ist, wird bestimmt, dass die Zeichenrichtung ”Positiv” ist. Auch das Gegenteil kann möglich sein (es genügt, wenn das Berechungsverfahren vor und nach der Korrektur das gleiche ist).
  • Die Zeichenrichtungsvergleichseinheit 12 prüft die Zeichenrichtung vor und nach der Korrektur (Schritt S4). Das Vergleichsresultat wird an die Zeichenbestimmungseinheit 13 gesendet. Es sei erwähnt, dass die Zeichenrichtung vor der Korrektur erhalten wird, indem die Hauptachsenkoordinate des Startpunktes vor Korrektur von der Hauptachsenkoordinate des Endpunktes vor Korrektur subtrahiert wird. Falls das Subtraktionsresultat negativ ist, wird bestimmt, dass die Zeichenrichtung ”Negativ” ist, und falls es positiv ist, wird bestimmt, dass die Zeichenrichtung ”Positiv” ist, oder umgekehrt. (Es genügt, wenn das Berechnungsverfahren vor und nach der Korrektur das gleiche ist.)
  • Die Zeichenrichtungsberechnungseinheit 13 bestimmt, ob die empfangenen Zeichenrichtungsvergleichsresultate ”übereinstimmen” (Schritt S5). Falls dies so ist, wird bestimmt: ”Ein Pixel zeichnen”. Falls die empfangenen Zeichenrichtungsvergleichsresultate ”nicht übereinstimmen”, werden die ganzzahligen Werte der Hauptachsenkoordinaten eines Startpunktes nach Korrektur und die Hauptachsenkoordinaten eines Endpunktes nach Korrektur verglichen (Schritt S6), und es wird bestimmt, ob die ganzzahligen Werte dieselben sind (Schritt S7). Falls sie dieselben sind, wird bestimmt: ”Ein Pixel zeichnen”. Falls sie verschieden sind, wird bestimmt: ”Nicht zeichnen”.
  • Als Nächstes wird die DiamondExit-Regel beschrieben.
  • 3 zeigt die Definition eines Rautenrahmens.
  • Wie in 3 gezeigt, ist eine Gruppe dieser Punkte als ”Rautenrahmen” definiert. Das Innere und das Äußere (einschließlich des Rahmens) der Gruppe von Punkten sind als Inneres des Rautenrahmens bzw. Äußeres des Rautenrahmens definiert. Die Definitionsgleichung des Rautenrahmens ist wie folgt. |X1 – X0| + |Y1 – Y0| = 0,5
  • In der obigen Gleichung sind (X1, Y1) die Koordinaten eines Startpunktes oder eines Endpunktes und sind (X0, Y0) die Koordinaten des Pixelzentrums.
  • 4 und 5 sind beispielhafte Anwendungen einer DiamondExit-Regel.
  • Wenn eine DiamondExit-Regel angewendet wird, wird ein Pixel gezeichnet, das ein Liniensegment hat, das einen Rautenrahmen kreuzt und von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft. Da im Falle von (1) der Startpunkt eines Pixels, das den Startpunkt enthält, den Rautenrahmen nicht kreuzt, wird der Startpunkt nicht gezeichnet. Da der Endpunkt eines Pixels, das den Endpunkt enthält, den Rautenrahmen nicht kreuzt, wird der Endpunkt nicht gezeichnet. Da im Falle von (2) ein Liniensegment vorhanden ist, das einen Rautenrahmen kreuzt und von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, wird der Startpunkt gezeichnet. Da kein Liniensegment vorhanden ist, das einen Rautenrahmen kreuzt und von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, wird der Endpunkt nicht gezeichnet. Da im Falle von (3) ein Liniensegment vorhanden ist, das einen Rautenrahmen kreuzt und von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, wird der Startpunkt gezeichnet. Da ein Liniensegment vorhanden ist, das einen Rautenrahmen kreuzt und von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, wird der Endpunkt gezeichnet.
  • Wie in 5 gezeigt, werden von dem Liniensegment von dem Startpunkt, der durch einen Kreis angegeben ist, bis zu dem Endpunkt, der durch ein Rechteck angegeben ist, nur Pixel gezeichnet, die der obigen Regel entsprechen.
  • 6A bis 6D zeigen, wie die Start- und Endpunkte einer Linie angegeben werden, deren Länge 1 ist, sowie eine Regel, wie die Punkte gemäß der DiamondExit-Regel gezeichnet werden.
  • Obwohl bei diesen Beispielen Linien ”von links nach rechts” gezeichnet werden (11 Beispiele), können Linien in vier Richtungen gezeichnet werden, nämlich ”von links nach rechts”, ”von rechts nach links”, ”von oben nach unten” und ”von unten nach oben”. Deshalb gibt es wenigstens 44 Möglichkeiten. Was die Pfeile anbelangt, die in 6A6D beschrieben sind, bedeutet der Pfeil, der durch durchgehende Linien angegeben ist, ”Ein Pixel zeichnen”, und bedeutet der Pfeil, der durch gestrichelte Linien angegeben ist, ”Nicht zeichnen”.
  • Soviel zur Beschreibung der Zusammenfassung der DiamondExit-Regel.
  • Als Nächstes wird unten die Grundidee des Linienzeichnens beschrieben.
  • 7A und 7B erläutern die Grundidee des Linienzeichnens.
  • Wenn eine Linie gezeichnet wird, werden Linien durch den Vergleich von ΔX und ΔY wie folgt in die X-Hauptachse und die Y-Hauptachse klassifiziert:
    • – X-Hauptachse: ”ΔX ≥ ΔY”
    • – Y-Hauptachse: ”ΔX < ΔY”
    *ΔX: Absolutwert eines Wertes, der durch Subtrahieren der X-Koordinate eines Startpunktes von der X-Koordinate eines Endpunktes erhalten wird;
    *ΔY: Absolutwert eines Wertes, der durch Subtrahieren der Y-Koordinate eines Startpunktes von der Y-Koordinate eines Endpunktes erhalten wird.
  • 7A und 7B zeigen Beispiele für Linien mit X-Hauptachsen- bzw. Y-Hauptachsen.
  • Wie in 7A und 7B gezeigt, sind im Falle einer Linie mit Y-Hauptachse die Hauptachsen- und Nebenachsenkoordinaten als Y-Koordinate bzw. X-Koordinate definiert. Im Falle einer Linie mit X-Hauptachse sind die Hauptachsen- und Nebenachsenkoordinaten als X-Koordinate bzw. Y-Koordinate definiert.
  • Soviel zur Beschreibung der Grundidee des Linienzeichnens.
  • 8 bis 17 erläutern einen Endpunktkorrekturprozess.
  • Die Grundidee der Korrekturoperation ist wie folgt.
  • Was einen Startpunkt anbelangt, werden nur dann, wenn spezifizierte Koordinaten, die jene eines Pixels enthalten, das die spezifizierten Startkoordinaten enthält, im Äußeren des Rautenrahmens liegen, die Hauptachsenkoordinaten bis an das Zentrum eines Pixels korrigiert, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt. Was die Nebenachsenkoordinate anbelangt, wird ((die Bewegungsdistanz der Hauptachsenkoordinate)*(der Neigungswert einer Linie)) zu der Nebenachsenkoordinate eines Startpunktes addiert und wird dieser korrigiert. Was einen Endpunkt anbelangt, werden die Hauptachsenkoordinaten bis an das Zentrum eines Pixels korrigiert, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuletzt kreuzt. Es wird keine Nebenachsenkoordinate korrigiert.
  • In 8 werden im Falle von (1), was einen Startpunkt anbelangt, da ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt, ein Pixel unmittelbar nach einem Pixel ist, das einen Startpunkt enthält, die Hauptachsenkoordinaten (da die Linie in 8 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels unmittelbar nach ihm korrigiert. Die Nebenachsenkoordinate wird im Anschluss an die oben beschriebene Korrekturoperation korrigiert. Seine Position nach Korrektur ist durch ein nach oben zeigendes Dreieck angegeben. Was einen Endpunkt anbelangt, werden, da ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Bautenrahmen zuletzt kreuzt, ein Pixel unmittelbar vor einem Pixel ist, das einen Endpunkt enthält, die Hauptachsenkoordinaten (da die Linie in 8 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels unmittelbar vor ihm korrigiert. Sein Korrekturresultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • Im Falle von (2) ist, was einen Startpunkt anbelangt, ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Bautenrahmen zuerst kreuzt, ein Startpunkt. Da es einen Startpunkt enthält und der Startpunkt im Inneren des Rautenrahmens liegt, wird der Startpunkt jedoch nicht korrigiert. Was einen Endpunkt anbelangt, wird, da ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuletzt kreuzt, ein Pixel unmittelbar vor einem Pixel ist, das einen Endpunkt enthält, die Hauptachsenkoordinate (da die Linie in 8 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels unmittelbar vor ihm korrigiert. Sein Korrekturresultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • Im Falle von (3) ist ein Pixel, was einen Startpunkt anbelangt, in dem ein Liniensegment, das von dem Äußeren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt, ein Startpunkt. Da es einen Startpunkt enthält und der Startpunkt im Äußeren des Rautenrahmens liegt, wird jedoch die Hauptachsenkoordinate (da die Linie in 8 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert. Die Nebenachsenkoordinaten werden im Anschluss an die oben beschriebene Korrekturoperation korrigiert. Als Resultat wird seine Korrekturposition durch ein nach oben zeigendes Dreieck angegeben. Was einen Endpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuletzt kreuzt, einen Endpunkt. Da ein Endpunkt jedoch immer korrigiert wird, wird die Hauptachsenkoordinate (da die Linie in 8 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert, das einen Endpunkt enthält. Sein Resultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • 9 erläutert ein detailliertes Korrekturbeispiel für einen Endpunkt (Nr. 1).
  • Was einen Startpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Äußeren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt, einen Startpunkt. Da es einen Startpunkt enthält und der Startpunkt im Äußeren des Rautenrahmens liegt, wird jedoch die Hauptachsenkoordinate (da die Linie in 9 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert. Was die Nebenachsenkoordinate anbelangt, wird ((die Bewegungsdistanz der Hauptachsenkoordinate)*(der Neigungswert einer Linie)) zu der Nebenachsenkoordinate eines Startpunktes addiert und wird dieser korrigiert. Das Resultat ist durch ein nach oben zeigendes Dreieck angegeben. Was einen Endpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuletzt kreuzt, einen Endpunkt. Da ein Endpunkt immer korrigiert wird, wird jedoch die Hauptachsenkoordinate (da die Linie in 9 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert, das einen Endpunkt enthält. Eine Nebenachsenkoordinate wird nicht korrigiert. Sein Resultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • 10 erläutert ein detailliertes Korrekturbeispiel für einen Endpunkt (Nr. 2).
  • Was einen Startpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Äußeren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt, einen Startpunkt. Da es einen Startpunkt enthält und der Startpunkt im Äußeren des Rautenrahmens liegt, wird jedoch die Hauptachsenkoordinate (da die Linie in 10 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert. Was die Nebenachsenkoordinate anbelangt, wird ((die Bewegungsdistanz der Hauptachsenkoordinate)*(der Neigungswert einer Linie)) zu der Nebenachsenkoordinate eines Startpunktes addiert und wird dieser korrigiert. Das Resultat ist durch ein nach oben zeigendes Dreieck angegeben. Was einen Endpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuletzt kreuzt, einen Endpunkt. Deshalb wird die Hauptachsenkoordinate (da die Linie in 10 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert, das einen Endpunkt enthält. Die Nebenachsenkoordinate wird auf die Position des Zentrums des Pixels korrigiert. Sein Resultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • 11 erläutert ein detailliertes Korrekturbeispiel für einen Endpunkt (Nr. 3).
  • Was einen Startpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Äußeren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt, einen Startpunkt. Da es einen Startpunkt enthält und der Startpunkt im Äußeren des Rautenrahmens liegt, wird jedoch die Hauptachsenkoordinate (da die Linie in 11 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert. Was die Nebenachsenkoordinate anbelangt, wird ((die Bewegungsdistanz der Hauptachsenkoordinate)*(der Neigungswert einer Linie)) zu der Nebenachsenkoordinate eines Startpunktes addiert und wird dieser korrigiert. Das Resultat ist durch ein nach oben zeigendes Dreieck angegeben. Was einen Endpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuletzt kreuzt, einen Endpunkt. Deshalb wird die Hauptachsenkoordinate (da die Linie in 11 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert, das einen Endpunkt enthält. Was die Nebenachsenkoordinate anbelangt, wird ((die Bewegungsdistanz der Hauptachsenkoordinate)*(der Neigungswert einer Linie)) von der Nebenachsenkoordinate eines Endpunktes subtrahiert und wird dieser korrigiert. Sein Resultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • 12 erläutert ein detailliertes Korrekturbeispiel für einen Endpunkt (Nr. 4).
  • Was einen Startpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Äußeren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt, einen Startpunkt. Da es einen Startpunkt enthält und der Startpunkt im Äußeren des Rautenrahmens liegt, wird jedoch die Hauptachsenkoordinate (da die Linie in 12 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert. Die Nebenachsenkoordinate wird auch bis an das Zentrum des Pixels korrigiert. Sein Resultat ist durch ein nach oben zeigendes Dreieck angegeben. Was einen Endpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Bautenrahmen zuletzt kreuzt, einen Endpunkt. Da ein Endpunkt immer korrigiert wird, wird jedoch die Hauptachsenkoordinate (da die Linie in 12 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert, das einen Endpunkt enthält. Eine Nebenachsenkoordinate wird nicht korrigiert. Sein Resultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • 13 erläutert ein detailliertes Korrekturbeispiel für einen Endpunkt (Nr. 5).
  • Was einen Startpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Äußeren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt, einen Startpunkt. Da es einen Startpunkt enthält und der Startpunkt im Äußeren des Rautenrahmens liegt, wird jedoch die Hauptachsenkoordinate (da die Linie in 13 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert. Die Nebenachsenkoordinate wird auch bis an das Zentrum des Pixels korrigiert. Sein Resultat ist durch ein nach oben zeigendes Dreieck angegeben. Was einen Endpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Bautenrahmen zuletzt kreuzt, einen Endpunkt. Deshalb wird die Hauptachsenkoordinate (da die Linie in 13 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert, das einen Endpunkt enthält. Die Nebenachsenkoordinate wird auf die Position des Zentrums des Pixels korrigiert. Sein Resultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • 14 erläutert ein detailliertes Korrekturbeispiel für einen Endpunkt (Nr. 6).
  • Was einen Startpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Äußeren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt, einen Startpunkt. Da es einen Startpunkt enthält und der Startpunkt im Äußeren des Rautenrahmens liegt, wird jedoch die Hauptachsenkoordinate (da die Linie in 14 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert. Die Nebenachsenkoordinate wird auch bis an das Zentrum des Pixels korrigiert. Sein Resultat ist durch ein nach oben zeigendes Dreieck angegeben. Was einen Endpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Bautenrahmen zuletzt kreuzt, einen Endpunkt. Deshalb wird die Hauptachsenkoordinate (da die Linie in 14 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert, das einen Endpunkt enthält. Was die Nebenachsenkoordinate anbelangt, wird ((die Bewegungsdistanz der Hauptachsenkoordinate)*(der Neigungswert einer Linie)) von der Nebenachsenkoordinate eines Endpunktes subtrahiert und wird dieser korrigiert. Sein Resultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • 15 erläutert ein detailliertes Korrekturbeispiel für einen Endpunkt (Nr. 7).
  • Was einen Startpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Äußeren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt, einen Startpunkt. Da es einen Startpunkt enthält und der Startpunkt im Äußeren des Rautenrahmens liegt, wird jedoch die Hauptachsenkoordinate (da die Linie in 15 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert. Eine Nebenachsenkoordinate wird nicht korrigiert. Sein Resultat ist durch ein nach oben zeigendes Dreieck angegeben. Was einen Endpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuletzt kreuzt, einen Endpunkt. Da ein Endpunkt jedoch immer korrigiert wird, wird die Hauptachsenkoordinate (da die Linie in 15 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert, das einen Endpunkt enthält. Eine Nebenachsenkoordinate wird nicht korrigiert. Sein Resultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • 16 erläutert ein detailliertes Korrekturbeispiel für einen Endpunkt (Nr. 8).
  • Was einen Startpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Äußeren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt, einen Startpunkt. Da es einen Startpunkt enthält und der Startpunkt im Äußeren des Rautenrahmens liegt, wird jedoch die Hauptachsenkoordinate (da die Linie in 16 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert. Eine Nebenachsenkoordinate wird nicht korrigiert. Sein Resultat ist durch ein nach oben zeigendes Dreieck angegeben. Was einen Endpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuletzt kreuzt, einen Endpunkt. Deshalb wird die Hauptachsenkoordinate (da die Linie in 16 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert, das einen Endpunkt enthält. Die Nebenachsenkoordinate wird auf die Position des Zentrums des Pixels korrigiert. Sein Resultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • 17 erläutert ein detailliertes Korrekturbeispiel für einen Endpunkt (Nr. 9).
  • Was einen Startpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Äußeren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuerst kreuzt, einen Startpunkt. Da es einen Startpunkt enthält und der Startpunkt im Äußeren des Rautenrahmens liegt, wird jedoch die Hauptachsenkoordinate (da die Linie in 17 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert. Eine Nebenachsenkoordinate wird nicht korrigiert. Sein Resultat ist durch ein nach oben zeigendes Dreieck angegeben. Was einen Endpunkt anbelangt, enthält ein Pixel, in dem ein Liniensegment, das von dem Inneren des Rahmens hin zu dem Äußeren des Rahmens verläuft, den Rautenrahmen zuletzt kreuzt, einen Endpunkt. Deshalb wird die Hauptachsenkoordinate (da die Linie in 17 eine X-Hauptachse ist, ist die Hauptachsenkoordinate eine X-Koordinate) bis an das Zentrum des Pixels korrigiert, das einen Endpunkt enthält. Was die Nebenachsenkoordinate anbelangt, wird ((die Bewegungsdistanz der Hauptachsenkoordinate)*(der Neigungswert einer Linie)) von der Nebenachsenkoordinate eines Endpunktes subtrahiert und wird dieser korrigiert. Sein Resultat ist durch ein nach unten zeigendes Dreieck angegeben.
  • 18 bis 23 sind Flussdiagramme des Endpunktkorrekturprozesses gemäß dieser bevorzugten Ausführungsform.
  • 18 erläutert ein Endpunktkorrekturbeispiel für die X-Koordinate eines Startpunktes im Falle einer X-Hauptachse. In 18 werden die folgenden Korrekturgleichungen verwendet.
    • Korrekturgleichung A: Startpunkt-X-Koordinate nach Korrektur AXs = int(Xs-PARAM) + 1,5
    • Korrekturgleichung B: Startpunkt-X-Koordinate nach Korrektur AXs = int(Xs-PARAM) + 0,5
    • Korrekturgleichung C: Startpunkt-X-Koordinate nach Korrektur AXs = int(Xs-PARAM) – 0,5
    • Korrekturgleichung D: Startpunkt-X-Koordinate nach Korrektur AXs = int(Xs) – α
  • In den obigen Gleichungen ist der PARAM-Wert wie folgt.
    Xs ≥ 0: 0
    Xs < 0: 1
  • In den obigen Gleichungen ist α ein Infinitesimalwert und ist 2^–16 [0,00625], wenn er in einem vierstelligen Dezimalzahl ausgedrückt wird. Mit int ist der ganzzahlige Teil eines Zahlenwertes gemeint, der eingeklammert ist.
  • Zuerst erfolgt bei Schritt S10 die D-Bestimmung oder die Bestimmung dessen, ob ein Startpunkt im Inneren des Rautenrahmens liegt. Falls bei Schritt S10 bestimmt wird, dass er im Inneren des Rautenrahmens liegt, wird keine Korrektur ausgeführt und geht der Prozess zur Zeichenrichtungsberechnung über. Falls bei Schritt S10 bestimmt wird, dass er im Äußeren des Rautenrahmens liegt, wird bei Schritt S11 bestimmt, ob Xs > X0 ist (Xs ist die X-Koordinate eines Startpunkt, X0 ist die zentrale X-Koordinate eines Pixels, dem ein Startpunkt entspringt). Falls die Bestimmung bei Schritt S11 NEIN lautet, wird bei Schritt S13 eine Zeichenrichtung bestimmt. Falls bestimmt wird, dass die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls bestimmt wird, dass die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls die Bestimmung bei Schritt S11 JA lautet, wird bei Schritt S12 eine Zeichenrichtung bestimmt. Falls bei Schritt S12 bestimmt wird, dass die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls bei Schritt S12 bestimmt wird, dass die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung A. Falls bei Schritt S10 bestimmt wird, dass ein Startpunkt auf dem Rautenrahmen liegt, wird bei Schritt S14 bestimmt, ob int(X0) = Xs ist. Falls die Bestimmung bei Schritt S14 JA lautet, erfolgt die Korrektur durch die Korrekturgleichung D. Falls die Bestimmung bei Schritt S14 NEIN lautet, wird bestimmt, ob Xs ≤ X0 ist. Falls die Bestimmung bei Schritt S15 NEIN lautet, erfolgt die Korrektur durch die Korrekturgleichung D. Falls die Bestimmung bei Schritt S15 JA lautet, wird bei Schritt S16 eine Zeichenrichtung bestimmt. Falls bei Schritt S16 die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls bei Schritt S16 die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung B. Nach der Korrektur geht der Prozess zur Zeichenrichtungsberechnung über.
  • 19 erläutert ein Endpunktkorrekturbeispiel für die Y-Koordinate eines Startpunktes im Falle einer X-Hauptachse. In 19 werden die folgenden Korrekturgleichungen verwendet.
    • Korrekturgleichung A: Startpunkt-Y-Koordinate nach Korrektur AYs = Y0 + (|X0 – Xs|*Neigung)
  • In der obigen Gleichung sind X0 und Xs dieselben wie in 18. Y0 ist die zentrale Y-Koordinate eines Pixels, das einen Startpunkt enthält.
  • Bei Schritt S20 wird bestimmt, ob ein Startpunkt im Inneren des Rautenrahmens liegt. Falls bei Schritt S20 bestimmt wird, dass er im Inneren des Rahmens liegt, geht der Prozess zur Zeichenrichtungsberechnung über, ohne eine Korrektur auszuführen. Falls bei Schritt S20 bestimmt wird, dass er im Äußeren des Rahmens liegt, erfolgt die Korrektur durch die Korrekturgleichung A. Falls bei Schritt S20 bestimmt wird, dass er auf dem Rahmen liegt, wird bei Schritt S21 bestimmt, ob int(X0) = Xs ist. Falls die Bestimmung bei Schritt S21 JA lautet, geht der Prozess zur Zeichenrichtungsberechnung über, ohne eine Korrektur auszuführen. Falls die Bestimmung bei Schritt S21 NEIN lautet, wird bei Schritt S22 bestimmt, ob Xs ≤ X0 ist. Falls die Bestimmung bei Schritt S22 NEIN lautet, wird nicht korrigiert. Falls die Bestimmung bei Schritt S22 JA lautet, erfolgt die Korrektur durch die Korrekturgleichung A. Nachdem diese Prozesse vollendet sind, geht der Prozess zur Zeichenrichtungsberechnung über.
  • 20 erläutert ein Endpunktkorrekturbeispiel für die X-Koordinate eines Endpunktes im Falle einer X-Hauptachse. In 20 werden die folgenden Korrekturgleichungen verwendet.
    • Korrekturgleichung A: Endpunkt-X-Koordinate nach Korrektur AXe = int(Xe-PARAM) + 1,5
    • Korrekturgleichung B: Endpunkt-X-Koordinate nach Korrektur AXe = int(Xe-PARAM) + 0,5
    • Korrekturgleichung C: Endpunkt-X-Koordinate nach Korrektur AXe = int(Xe-PARAM) – 0,5
    • Korrekturgleichung D: Endpunkt-X-Koordinate nach Korrektur AXe = int(Xs-PARAM) – 1,5
  • In den obigen Gleichungen ist der PARAM-Wert wie folgt.
    Xe ≥ 0: 0
    Xe < 0: 1
  • Bei Schritt S25 wird bestimmt, ob ein Endpunkt im Inneren des Rautenrahmens liegt. Falls bei Schritt S25 bestimmt wird, dass er im Inneren des Rahmens liegt, wird bei Schritt S26 eine Zeichenrichtung bestimmt. Falls bei Schritt S26 bestimmt wird, dass die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung A. Falls bei Schritt S26 bestimmt wird, dass die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls bei Schritt S25 bestimmt wird, dass er im Äußeren des Rahmens liegt, wird bei Schritt S27 bestimmt, ob Xe > X0 ist. Falls die Bestimmung bei Schritt S27 NEIN lautet, wird bei Schritt S29 eine Zeichenrichtung bestimmt. Falls bestimmt wird, dass die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls bestimmt wird, dass die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls die Bestimmung bei Schritt S27 JA lautet, wird bei Schritt S28 eine Zeichenrichtung bestimmt. Falls bestimmt wird, dass die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung A. Falls bestimmt wird, dass die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls bei Schritt S25 bestimmt wird, dass der Endpunkt auf dem Rahmen liegt, wird bei Schritt S30 bestimmt, ob int(X0) = Xe ist. Falls die Bestimmung bei Schritt S30 JA lautet, wird bei Schritt S34 eine Zeichenrichtung bestimmt. Falls die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung D. Falls die Bestimmung bei Schritt S30 NEIN lautet, wird bei Schritt S31 bestimmt, ob Xe ≤ X0 ist. Falls die Bestimmung bei Schritt S31 JA lautet, wird bei Schritt S32 eine Zeichenrichtung bestimmt. Falls bestimmt wird, dass die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls bestimmt wird, dass die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls die Bestimmung bei Schritt S31 NEIN lautet, wird bei Schritt S33 eine Zeichenrichtung bestimmt. Falls sie negativ ist, erfolgt die Korrektur durch die Korrekturgleichung A. Falls sie positiv ist, erfolgt die Korrektur durch die Korrekturgleichung C. Nach der Korrektur geht der Prozess zur Zeichenrichtungsberechnung über.
  • 21 erläutert ein Endpunktkorrekturbeispiel für die Y-Koordinate eines Startpunktes im Falle einer Y-Hauptachse. In 21 werden die folgenden Korrekturgleichungen verwendet.
    • Korrekturgleichung A: Startpunkt-Y-Koordinate nach Korrektur AYs = int(Ys-PARAM) + 1,5
    • Korrekturgleichung B: Startpunkt-Y-Koordinate nach Korrektur AYs = int(Ys-PARAM) + 0,5
    • Korrekturgleichung C: Startpunkt-Y-Koordinate nach Korrektur AYs = int(Ys-PARAM) – 0,5
  • In den obigen Gleichungen ist der PARAM-Wert wie folgt.
    Ys ≥ 0: 0
    Ys < 0: 1
  • Ys ist die Y-Koordinate eines Startpunktes.
  • Bei Schritt S40 wird bestimmt, ob ein Startpunkt im Inneren des Rautenrahmens liegt. Falls bei Schritt S40 bestimmt wird, dass er im Inneren des Rahmens liegt, geht der Prozess zu einem Zeichenrichtungsberechnungsprozess über, ohne eine Korrektur auszuführen. Falls bei Schritt S40 bestimmt wird, dass er im Äußeren des Rahmens liegt, wird bei Schritt S41 bestimmt, ob Ys ≥ Y0 ist (zentrale Y-Koordinate eines Pixels, zu dem der Startpunkt gehört). Falls die Bestimmung bei Schritt S41 NEIN lautet, wird bei Schritt S42 eine Zeichenrichtung bestimmt. Falls die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls die Bestimmung bei Schritt S41 JA lautet, wird bei Schritt S43 eine Zeichenrichtung bestimmt. Falls die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung A. Falls bei Schritt S40 bestimmt wird, dass er auf dem Rahmen liegt, wird bei Schritt S44 bestimmt, ob Xs < X0 ist. Falls die Bestimmung bei Schritt S44 JA lautet, wird bei Schritt S45 bestimmt, ob Ys < Y0 ist. Falls die Bestimmung bei Schritt S45 NEIN lautet, wird bei Schritt S47 eine Zeichenrichtung bestimmt. Falls die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung A. Falls die Bestimmung bei Schritt S45 JA lautet, wird bei Schritt S46 eine Zeichenrichtung bestimmt. Falls bei Schritt S46 bestimmt wird, dass die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls bei Schritt 46 bestimmt wird, dass die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls die Bestimmung bei Schritt S44 NEIN lautet, wird bei Schritt S48 bestimmt, ob Xs = X0 ist. Falls die Bestimmung bei Schritt S48 NEIN lautet, geht der Prozess zu einem Zeichenrichtungsberechnungsprozess über, ohne eine Korrektur auszuführen. Falls die Bestimmung bei Schritt S48 JA lautet, wird bei Schritt S49 eine Zeichenrichtung bestimmt. Falls bei Schritt S49 bestimmt wird, dass die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls bei Schritt äS49 bestimmt wird, dass die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung C. Nach der Korrektur geht der Prozess zu einem Zeichenrichtungsberechnungsprozess über.
  • 22 erläutert ein Endpunktkorrekturbeispiel für die X-Koordinate eines Startpunktes im Falle einer Y-Hauptachse. In 22 werden die folgenden Korrekturgleichungen verwendet.
    • Korrekturgleichung A: Startpunkt-X-Koordinate nach Korrektur AXs = X0 + (|Y0 – Ys|)*Neigung)
    • Korrekturgleichung B: Startpunkt-X-Koordinate nach Korrektur AXs = (X0 + (|Y0 – Ys|)*Neigung)) – α
    • Korrekturgleichung C: Startpunkt-X-Koordinate nach Korrektur AXs = X0 – α
  • In den obigen Gleichungen ist α ein Infinitesimalwert und ist 2^–16 [0,00625], wenn er in einem vierstelligen Dezimalzahl ausgedrückt wird.
  • Bei Schritt S50 wird bestimmt, ob ein Startpunkt im Inneren des Rautenrahmens liegt. Falls bei Schritt S50 bestimmt wird, dass er im Inneren des Rahmens liegt, geht der Prozess zu einem Zeichenrichtungsberechnungsprozess über, ohne eine Korrektur auszuführen. Falls bei Schritt S50 bestimmt wird, dass er im Äußeren des Rahmens liegt, erfolgt die Korrektur durch die Korrekturgleichung A. Falls bei Schritt S50 bestimmt wird, dass er auf dem Rahmen liegt, wird bei Schritt S51 bestimmt, ob X0 ≤ Xs ist. Falls die Bestimmung bei Schritt S51 JA lautet, erfolgt die Korrektur durch die Korrekturgleichung B. Falls die Bestimmung bei Schritt S51 NEIN lautet, erfolgt die Korrektur durch die Korrekturgleichung C. Nach der Korrektur geht der Prozess zu einem Zeichenrichtungsberechnungsprozess über.
  • 23 erläutert ein Endpunktkorrekturbeispiel für die Y-Koordinate eines Endpunktes im Falle einer Y-Hauptachse. In 23 werden die folgenden Korrekturgleichungen verwendet.
    • Korrekturgleichung A: Endpunkt-Y-Koordinate nach Korrektur AYe int(Ye-PARAM) + 1,5
    • Korrekturgleichung B: Endpunkt-Y-Koordinate nach Korrektur AYe = int(Ye-PARAM) + 0,5
    • Korrekturgleichung C: Endpunkt-Y-Koordinate nach Korrektur AYe = int(Ye-PARAM) – 0,5
  • In den obigen Gleichungen ist der PARAM-Wert wie folgt.
    Ye ≥ 0: 0
    Ye < 0: 1
  • Bei Schritt S55 wird bestimmt, ob ein Endpunkt im Inneren des Rautenrahmens liegt. Falls bestimmt wird, dass er im Inneren des Rahmens liegt, wird bei Schritt S56 eine Zeichenrichtung bestimmt. Falls bestimmt wird, dass die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung A. Falls bestimmt wird, dass die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls bei Schritt S55 bestimmt wird, dass er im Äußeren des Rahmens liegt, wird bei Schritt S57 bestimmt, ob Ye ≥ Y0 ist. Falls die Bestimmung bei Schritt S57 NEIN lautet, wird bei Schritt S59 eine Zeichenrichtung bestimmt. Falls die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls die Bestimmung bei Schritt S57 JA lautet, wird bei Schritt S58 eine Zeichenrichtung bestimmt. Falls die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung A. Falls er bei Schritt S55 auf dem Rahmen liegt, wird bei Schritt S60 bestimmt, ob int(X0) = Xe ist. Falls die Bestimmung bei Schritt S60 JA lautet, wird bei Schritt S61 eine Zeichenrichtung bestimmt. Falls die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung A. Falls die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls die Bestimmung bei Schritt S60 NEIN lautet, wird bei Schritt S62 bestimmt, ob Xe = X0 ist. Falls die Bestimmung bei Schritt S62 JA lautet, wird bei Schritt S68 eine Zeichenrichtung bestimmt. Falls die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls die Bestimmung bei Schritt S62 NEIN lautet, wird bei Schritt S63 bestimmt, ob Xe < X0 ist. Falls die Bestimmung bei Schritt S63 NEIN lautet, wird bei Schritt S67 eine Zeichenrichtung bestimmt. Falls die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung A. Falls die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung C. Falls die Bestimmung bei Schritt S63 JA lautet, wird bei Schritt S64 bestimmt, ob Ye < Y0 ist. Falls die Bestimmung bei Schritt S64 NEIN lautet, wird bei Schritt S65 eine Zeichenrichtung bestimmt. Falls die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung A. Falls die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls die Bestimmung bei Schritt S64 JA lautet, wird bei Schritt S66 eine Zeichenrichtung bestimmt. Falls die Zeichenrichtung negativ ist, erfolgt die Korrektur durch die Korrekturgleichung B. Falls die Zeichenrichtung positiv ist, erfolgt die Korrektur durch die Korrekturgleichung C. Nach der Korrektur geht der Prozess zu einem Zeichenrichtungsberechnungsprozess über.
  • 24A24B und 25 erläutern einen Zeichenrichtungsbestimmungsprozess.
  • In 24A24B und 25 erfolgen die Beschreibungen unter der Annahme, dass die Hauptachse die X-Achse ist. 24A zeigt einen Fall, wenn Zeichenrichtungen vor und nach der Korrektur dieselben sind. Eine Linie wird zwischen einem Startpunkt in einem Pixel A und einem Endpunkt in einem Pixel B gezeichnet, und es muss bestimmt werden, ob nur das Pixel A oder auch das Pixel B zu zeichnen ist. Da es sich bei diesem Beispiel um eine Linie mit X-Hauptachse handelt, ist die Hauptachsenkoordinate eine X-Koordinate. Was den Startpunkt anbelangt, werden die Hauptachsenkoordinate und die Nebenachsenkoordinaten korrigiert. Was den Endpunkt anbelangt, wird die Hauptachsenkoordinate korrigiert. Da nach der Korrektur sowohl der Start- als auch der Endpunkt in dem Pixel A enthalten ist, wird das Pixel B nicht gezeichnet und ist das Problem vorhanden, ob das Pixel A zu zeichnen ist. In diesem Fall werden ihre Zeichenrichtungen vor und nach der Korrektur bestimmt. Da die Zeichenrichtung vor der Korrektur positiv ist (es wird angenommen, dass die Richtung nach rechts positiv ist) und die Zeichenrichtung nach der Korrektur auch positiv ist, sind die Zeichenrichtungen vor und nach der Korrektur dieselben, und es wird bestimmt, das Pixel A zu zeichnen.
  • 24B zeigt einen Fall, wenn Zeichenrichtungen vor und nach der Korrektur verschieden sind. Da es sich in diesem Fall um eine Linie mit X-Hauptachse handelt, ist die Hauptachsenkoordinate eine X-Koordinate. Wie oben bei der Endpunktkorrektur beschrieben, wird im Falle von 24B ein Startpunkt nicht korrigiert. Was einen Endpunkt anbelangt, wird die Hauptachsenkoordinate korrigiert. Da seine Zeichenrichtung vor der Korrektur positiv ist und seine Zeichenrichtung nach der Korrektur negativ ist, wird detektiert, dass die Zeichenrichtungen vor und nach der Korrektur verschieden sind. Dann werden die ganzzahligen Werte der X-Koordinate der Start- und Endpunkte nach der Korrektur verglichen (falls die ganzzahligen Werte dieselben sind, liegen sie in demselben Pixel). Da die Hauptachsenkoordinaten nach der Korrektur dieselben sind, wird in diesem Fall bestimmt, das Pixel A zu zeichnen.
  • 25 zeigt den Bestimmungsprozess im Falle des Nicht-Zeichnens. Da es sich um eine Linie mit X-Hauptachse handelt, ist die Hauptachsenkoordinate eine X-Koordinate. Was einen Startpunkt anbelangt, werden die Hauptachsenkoordinate (X-Koordinate) und die Nebenachsenkoordinate (Y-Koordinate) korrigiert. Was einen Endpunkt anbelangt, wird die Hauptachsenkoordinate korrigiert. Da eine Zeichenrichtung vor der Korrektur positiv ist und eine Zeichenrichtung nach der Korrektur negativ ist, wird detektiert, dass sich die Zeichenrichtungen unterscheiden. Da in diesem Fall die ganzzahligen Werte der Hauptachsenkoordinaten nach der Korrektur verschieden sind, wird dann bestimmt, die beiden Pixel A und B nicht zu zeichnen.
  • 26 und 27 sind Blockkonfigurationen einer Vorrichtung zum Realisieren des Linienzeichenverfahrens in dieser bevorzugten Ausführungsform.
  • 26 ist die Konfiguration eines Graphik-Chips, wie etwa eines Autonavigationssystems und dergleichen. Eine Zeichenvorrichtung 22 zeichnet gemäß den Programminhalten eines programmierbaren Shaders 21. In diesem Fall erhält die Zeichenvorrichtung 22 Zeichendaten von einem Speichercontroller 27 und einem Erfassungscontroller 26, die mit ihr durch einen Bus 20 verbunden sind, erhält sie Anzeigedaten durch deren Verarbeitung, sendet sie die Anzeigedaten an einen Anzeigecontroller 25 und zeigt diese an. Die Zeichenvorrichtung 22 ist mit einer externen Schnittstelle 24 über eine Host-Schnittstelle 23 verbunden, um mit der Außenwelt zu kommunizieren.
  • 27 ist die interne Blockkonfiguration der in 26 gezeigten Zeichenvorrichtung. Wenn der Zeichenvorrichtung 22 Vertexdaten eingegeben werden, berechnet eine Vertexverarbeitungseinheit 30 die Koordinaten eines Vertex. Die Koordinaten eines Vertex werden einer Graphikeinstelleinheit 31 eingegeben, und es wird berechnet, welches Pixel zu zeichnen ist. Die Graphikeinstelleinheit 31 umfasst eine Dreieckeinstelleinheit und eine Linieneinstelleinheit, die Dreiecke bzw. Linien verarbeiten. Die oben beschriebene bevorzugte Ausführungsform wird auf die Linieneinstelleinheit angewendet, und deren Inneres ist in 1 gezeigt. Wenn Pixelzeichendaten erhalten werden, werden diese an eine Zeichenprozesseinheit 32 gesendet, an einen externen Speicher (Bildspeicher etc.) gesendet und angezeigt.
  • Die oben beschriebenen bevorzugten Ausführungsformen können ähnlich auch auf ein Liniensegment angewendet werden, dessen Länge 1 oder mehr beträgt. Genauer gesagt: was ein Verfahren zum Detektieren von 44 Typen von Zeichenmustern anbelangt, deren Linienlänge kleiner als 1 ist, können alle Zeichenmuster ziemlich leicht detektiert werden, wodurch das Zeichnen einer Linie, deren Länge kleiner als 1 ist, unter Verwendung der DiamondExit-Regel sicher realisiert wird.
  • 28 bis 33 sind ein beispielhafter Vergleich zwischen dieser bevorzugten Ausführungsform und dem Stand der Technik.
  • In 28 und 29 ist jeweilig das Zeichnen in dem Fall gezeigt, wenn nach Stand der Technik die DiamondExit-Regel nicht angewendet wird, und ist das Zeichnen in dem Fall gezeigt, wenn die DiamondExit-Regel in dieser bevorzugten Ausführungsform angewendet wird. Diese werden erhalten, indem zwei Kreise unter Verwendung einer Gruppe von kurzen Liniensegmenten gezeichnet werden (die ein Liniensegment enthalten, dessen Länge kleiner als 1 ist). Auch wenn nach Stand der Technik ein Teil eines Kreises unterbrochen ist und sporadisch nicht angezeigt wird, werden gemäß dieser bevorzugten Ausführungsform deutliche Kreise gezeichnet.
  • 30 und 31 werden erhalten, indem ein Teil vergrößert wird, der in 28 bzw. 29 von einem Kreis umgeben ist. 32 zeigt die Differenz zwischen 30 und 31. Dementsprechend wird ein Pixel, das nach Stand der Technik nicht gezeichnet wird, in dieser bevorzugten Ausführungsform gezeichnet und wird eine Linie nicht unterbrochen.
  • 33 ist ein detailliertes Beispiel für die Koordinatenspezifizierung bei einer Linie in dem ersten Abschnitt gemäß dieser bevorzugten Ausführungsform. Die Tabelle 1 enthält detaillierte Beispiele für Koordinaten, und die Tabellen 2 bis 4 zeigen verschiedenartige Kombinationen von Endpunktkorrekturverfahren. Die Tabellen 5 und 6 zeigen die Bestimmungsresultate einer Zeichenrichtung. Dann zeigt 33 das Resultat der in diesen Tabellen dargestellten Operationen. Tabelle 1
    Nr. Koordinaten Linie zeichnen Bemerkungen
    Startpunkt Endpunkt
    X Y X Y
    1 66,75 139,9375 67,1875 139,1875 Zeichnen (67, 139)
    2 67,1875 139,1875 67,625 138,4375 Nicht zeichnen
    3 67,625 138,4375 68,0625 137,6875 Zeichnen (67, 138)
    4 68,0625 137,6875 68,5625 136,9375 Zeichnen (68, 137)
    5 68,5625 136,9375 69,0 136,1875 Zeichnen (68, 136)
    6 69,0 136,1875 69,4375 135,4375 Nicht zeichnen
    Tabelle 2
    Nr. Sache Startpunktkorrektur Bemerkungen
    Hauptachsenkoordinate Nebenachsenkoordinate
    1 Verfahren 1 Position von *,5 Position von ”verschobener Hauptachsenabschnitt)*(Neigung der geraden Linie)”
    2 Verfahren 2 Position von *,5 Position von *,5
    3 Verfahren 3 Position von *,5 Keine Korrektur
    Tabelle 3
    Nr. Sache Endpunktkorrektur
    Hauptachsenkoordinate Nebenachsenkoordinate Bemerkungen
    1 Verfahren 1 Position von *,5 Keine Korrektur
    2 Verfahren 2 Position von *,5 Position von *,5
    3 Verfahren 3 Position von *,5 Position von ”verschobener Hauptachsenabschnitt)*(Neigung der geraden Linie)”
    Tabelle 4
    Nr. Kombinationsverfahren Bemerkungen
    Startpunktkorrektur Endpunktkorrektur
    1 Verfahren 1 Verfahren 1 Fig. 9
    2 Verfahren 2 Fig. 10
    3 Verfahren 3 Fig. 11
    4 Verfahren 2 Verfahren 1 Fig. 12
    5 Verfahren 2 Fig. 13
    6 Verfahren 3 Fig. 14
    7 Verfahren 3 Verfahren 1 Fig. 15
    8 Verfahren 2 Fig. 16
    9 Verfahren 3 Fig. 17
    Tabelle 5
    Nr. Sache Operationsverfahren Zeichenrichtung Bemerkungen
    Hauptachse Operationsformel Vorzeichen Resultat
    1 Vor Korrektur X-Hauptachse Endpunkt-X-Koordinate vor Korrektur – Startpunkt-X-Koordinate vor Korrektur + Positiv
    2 Negativ
    3 Y-Hauptachse Endpunkt-Y-Koordinate vor Korrektur – Startpunkt-Y-Koordinate vor Korrektur + Positiv
    4 Negativ
    5 Nach Korrektur X-Hauptachse Endpunkt-X-Koordinate nach Korrektur – Startpunkt-X-Koordinate nach Korrektur + Positiv
    6 Negativ
    7 Y-Hauptachse Endpunkt-Y-Koordinate nach Korrektur – Startpunkt-Y-Koordinate nach Korrektur + Positiv
    8 Negativ
    Tabelle 6
    Nr. Sache Operationsverfahren Zeichenrichtung Bemerkungen
    Hauptachse Operationsformel Vorzeichen Resultat
    1 Vor Korrektur X-Hauptachse Startpunkt-X-Koordinate vor Korrektur – Endpunkt-X-Koordinate vor Korrektur + Negativ
    2 Positiv
    3 Y-Hauptachse Startpunkt-Y-Koordinate vor Korrektur – Endpunkt-Y-Koordinate vor Korrektur + Negativ
    4 Positiv
    5 Nach Korrektur X-Hauptachse Startpunkt-X-Koordinate nach Korrektur – Endpunkt-X-Koordinate nach Korrektur + Negativ
    6 Positiv
    7 Y-Hauptachse Startpunkt-Y-Koordinate nach Korrektur – Endpunkt-Y-Koordinate nach Korrektur + Negativ
    8 Positiv
  • In der obigen Tabelle ist mit ”Position von *,5” die Koordinatenposition des Zentrums eines Pixels gemeint.
  • Alle Beispiele und die bedingte Fachsprache, die hierin verwendet wurden, dienen pädagogischen Zwecken, um den Leser beim Verstehen der Erfindung und der durch den Erfinder beigesteuerten Konzepte zum Fördern der Technik zu unterstützen, und sind im Hinblick auf solche speziell verwendeten Beispiele und Bedingungen als unbeschränkt aufzufassen, wobei auch die Gliederung solcher Beispiele in der Beschreibung weder die Überlegenheit noch die Minderwertigkeit der Erfindung darstellen soll. Obwohl die Ausführungsformen der vorliegenden Erfindungen eingehend beschrieben worden sind, versteht sich, dass die verschiedensten Veränderungen, Ersetzungen und Abwandlungen daran vorgenommen werden könnten, ohne vom Grundgedanken und Umfang der Erfindung abzuweichen.

Claims (8)

  1. Linienzeichenverfahren zum Zeichnen einer Linie, deren Koordinaten gegeben sind, auf einem Bildschirm, auf dem Pixel angeordnet sind, gemäß einer Diamond-Exit-Regel, welches Verfahren die Schritte umfasst: a) Bestimmen einer horizontalen oder vertikalen Achse als Hauptachse, je nachdem, ob der Betrag der Differenz zwischen den x-Koordinatenwerten des Endpunkts und des Startpunkts der Linie größer oder kleiner ist als der Betrag der Differenz zwischen den y-Koordinatenwerten des Endpunkts und des Startpunkts, b) Korrigieren der Koordinatenwerte des Startpunkts und/oder des Endpunkts der Linie, b1) wobei der Hauptachsen-Koordinatenwert des Startpunkts nur dann korrigiert wird, wenn dieser im Äußeren des Rautenrahmens eines Pixels liegt, wobei der Hauptachsen-Koordinatenwert des Startpunkts zum Hauptachsen-Koordinatenwert des Mittelpunkts desjenigen Pixels korrigiert wird, in dem ein vom Startpunkt ausgehendes Liniensegment zum ersten Mal einen Rautenrahmen von innen nach außen kreuzt, und b2) was den Endpunkt anbelangt, dessen Hauptachsen-Koordinatenwert zum Hauptachsen-Koordinatenwert des Mittelpunkts desjenigen Pixels korrigiert wird, in dem ein zum Endpunkt hinlaufendes Liniensegment zum letzten Mal einen Rautenrahmen von innen nach außen kreuzt, c) Ermitteln, ob eine Richtung entlang der Hauptachse von dem Startpunkt zu dem Endpunkt der Linie nach der Korrektur dieselbe wie vor der Korrektur ist; d) wenn die Richtungen entlang der Hauptachse vor und nach der Korrektur nicht übereinstimmen, ermitteln, ob ganzzahlige Werte der Hauptachsen-Koordinaten des Startpunktes und des Endpunktes nach der Korrektur dieselben sind; und e) Zeichnen mindestens eines Pixels, e1) wenn die Richtungen entlang der Hauptachse vor und nach der Korrektur dieselben sind oder e2) die Richtungen entlang der Hauptachse vor und nach der Korrektur verschieden sind, und ferner ganzzahlige Werte der Hauptachsen-Koordinaten des Startpunkts und des Endpunkts nach der Korrektur dieselben sind.
  2. Linienzeichenverfahren nach Anspruch 1, bei dem die zur Hauptachse senkrechte Achse als Nebenachse spezifiziert wird und, was die Koordinaten des Endpunkts anbelangt, der Hauptachsen-Koordinatenwert korrigiert wird und der Nebenachsen-Koordinatenwert nicht korrigiert wird.
  3. Linienzeichenverfahren nach Anspruch 1, bei dem die zur Hauptachse senkrechte Achse als Nebenachse spezifiziert wird, und was die Koordinaten des Endpunkts anbelangt, der Hauptachsen-Koordinatenwert korrigiert wird, und zur Korrektur des Nebenachsen-Koordinatenwerts das Produkt aus der Bewegungsdistanz der Hauptachsenkoordinate und dem Neigungswert der Linie zum Nebenachsen-Koordinatenwert addiert wird.
  4. Linienzeichenverfahren nach Anspruch 1, bei dem die zur Hauptachse senkrechte Achse als Nebenachse spezifiziert wird und, was die Koordinaten des Endpunkts anbelangt sowohl der Hauptachsen-Koordinatenwert als auch der Nebenachsen-Koordinatenwert bis an den Mittelpunkt desjenigen Pixels korrigiert werden, in dem ein zum Endpunkt hinlaufendes Liniensegment zum letzten Mal einen Rautenrahmen von innen nach außen kreuzt.
  5. Linienzeichenverfahren nach Anspruch 1, bei dem die zur Hauptachse senkrechte Achse als Nebenachse spezifiziert wird und, wenn der Hauptachsen-Koordinatenwert des Startpunkts korrigiert wird, auch der NebenachsenKoordinatenwert des Startpunkts korrigiert wird, indem das Produkt aus der Bewegungsdistanz der Hauptachsenkoordiinate und dem Neigungswert der Linie zum Nebenachsen-Koordinatenwert addiert wird.
  6. Linienzeichenverfahren nach Anspruch 1, bei dem die zur Hauptachse senkrechte Achse als Nebenachse spezifiziert wird und, wenn der Hauptachsen-Koordinatenwert des Startpunkts korrigiert wird, auch der Nebenachsen-Koordinatenwert des Startpunkts korrigiert wird, und zwar zum Nebenachsen-Koordinatenwert des Mittelpunkts desjenigen Pixels, in dem ein vom Startpunkt ausgehendes Liniensegment zum ersten Mal einen Rautenrahmen von innen nach außen kreuzt.
  7. Linienzeichenverfahren nach Anspruch 1, bei dem die zur Hauptachse senkrechte Achse als Nebenachse spezifiziert wird und der Nebenachsen-Koordinatenwert des Startpunkts nicht korrigiert wird.
  8. Vorrichtung zur Durchführung des Linienzeichenverfahrens nach Anspruch 1 umfassend: einen Korrigierer (10) zum Bestimmen der Hauptachse und zur Durchführung der Korrektur der Koordinatenwerte des Startpunkts und/oder des Endpunkts einer Linie gemäß den Merkmalen a), b), b1) und b2); eine erste Sektion (11), die konfiguriert ist, um zu bestimmen, ob die Richtung entlang der Hauptachse von dem Startpunkt zu dem Endpunkt der Linie nach Korrektur dieselbe wie vor der Korrektur ist; eine zweite Sektion (12), die konfiguriert ist, um, wenn die Richtungen entlang der Hauptachse vor und nach der Korrektur nicht übereinstimmen, zu ermitteln, ob ganzzahlige Werte die Hauptachsen-Koordinaten des Startpunkts und des Endpunkts nach der Korrektur dieselben sind; und eine Zeichensektion (13), die konfiguriert ist, um mindestens ein Pixel zu zeichnen, wenn die Richtungen entlang der Hauptachse vor und nach der Korrektur verschieden sind und ferner ganzzahlige Werte der Hauptachsen-Koordinaten des Startpunkts und des Endpunkts nach der Korrektur dieselben sind.
DE102009018928.9A 2008-06-27 2009-04-28 Linienzeichenverfahren Expired - Fee Related DE102009018928B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008168463A JP4998386B2 (ja) 2008-06-27 2008-06-27 ライン描画方法
JP2008-168463 2008-06-27

Publications (2)

Publication Number Publication Date
DE102009018928A1 DE102009018928A1 (de) 2010-03-25
DE102009018928B4 true DE102009018928B4 (de) 2017-01-19

Family

ID=41446821

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009018928.9A Expired - Fee Related DE102009018928B4 (de) 2008-06-27 2009-04-28 Linienzeichenverfahren

Country Status (4)

Country Link
US (1) US9129437B2 (de)
JP (1) JP4998386B2 (de)
KR (1) KR101030100B1 (de)
DE (1) DE102009018928B4 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101562153B1 (ko) 2011-11-09 2015-10-20 미쓰비시덴키 가부시키가이샤 묘화 장치 및 컴퓨터 판독 가능 기록 매체
JP5900254B2 (ja) * 2012-09-06 2016-04-06 株式会社ソシオネクスト ライン描画装置、ライン描画方法、及びライン描画プログラム
CN104794306B (zh) * 2015-05-07 2017-08-25 河北工业大学 干式配电变压器与低压开关柜间的主母线连接图绘制方法
CN106408627B (zh) * 2016-09-21 2019-05-24 中国航空无线电电子研究所 一种线状符号绘制方法
CN111524446B (zh) * 2019-02-01 2021-11-12 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及可读存储介质
GB2586087B (en) * 2019-12-23 2022-09-14 Imagination Tech Ltd Rasterising aliased lines

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5729750A (en) * 1994-06-11 1998-03-17 Rohm Co. Ltd. Automatic dimensioning in computer aided design
US20040139080A1 (en) * 2002-12-31 2004-07-15 Hauke Schmidt Hierarchical system and method for on-demand loading of data in a navigation system
US7307628B1 (en) * 2004-08-06 2007-12-11 Nvidia Corporation Diamond culling of small primitives
US20080062204A1 (en) * 2006-09-08 2008-03-13 Microsoft Corporation Automated pixel snapping for anti-aliased rendering

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2721019B2 (ja) * 1990-01-08 1998-03-04 松下電器産業株式会社 任意角度回転転送装置
JP2550418B2 (ja) * 1990-01-20 1996-11-06 富士通株式会社 アウトライン文字補正方式
JPH0554145A (ja) 1991-08-28 1993-03-05 Seiko Instr Inc 直線発生方法
JP2964841B2 (ja) 1993-07-15 1999-10-18 ブラザー工業株式会社 データ変換装置
JPH0877372A (ja) * 1994-08-31 1996-03-22 Oki Electric Ind Co Ltd アウトライン塗りつぶし装置
JPH08190635A (ja) * 1995-01-09 1996-07-23 Fujitsu Ltd 直線発生方法
US5764228A (en) * 1995-03-24 1998-06-09 3Dlabs Inc., Ltd. Graphics pre-processing and rendering system
JPH103471A (ja) * 1996-06-19 1998-01-06 Nec Off Syst Ltd 画像処理方法および画像処理装置
JPH10149452A (ja) 1996-11-21 1998-06-02 Toshiba Corp 太線描画方法およびその描画装置
JP3161372B2 (ja) * 1997-07-10 2001-04-25 ヤマハ株式会社 多角形描画方法及び装置
JP2004030385A (ja) 2002-06-27 2004-01-29 Canon Inc 描画方法
JP4327105B2 (ja) * 2005-01-25 2009-09-09 株式会社ソニー・コンピュータエンタテインメント 描画方法、画像生成装置、および電子情報機器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5729750A (en) * 1994-06-11 1998-03-17 Rohm Co. Ltd. Automatic dimensioning in computer aided design
US20040139080A1 (en) * 2002-12-31 2004-07-15 Hauke Schmidt Hierarchical system and method for on-demand loading of data in a navigation system
US7307628B1 (en) * 2004-08-06 2007-12-11 Nvidia Corporation Diamond culling of small primitives
US20080062204A1 (en) * 2006-09-08 2008-03-13 Microsoft Corporation Automated pixel snapping for anti-aliased rendering

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
"Processing"-Forumseintrag von 2007, URL: http://processing.org/bugs/bugzilla/501.html ;[recherchiert am 9.7.2012] *
„Processing"-Forumseintrag von 2007, URL: http://processing.org/bugs/bugzilla/501.html ;[recherchiert am 9.7.2012]
OpenGL SuperBible: "14 Rasterization and Operations on the Framebuffer", 22. Juni 2008, S. 1-5 und Altersnachweis (1 S.) gemäß Internet Archive "WayBack", http://www.opengl.org/resources/faq/technical/rasterization.htm *
OpenGL-Forumseintrag vom September 2003, URL: http://www.opengl.org/discussion_boards/showthread.php/147055-2D-line-rendering?p=1054333#post1054333 ; [recherchiert am 9.7.2012].
OpenGL-Forumseintrag vom September 2003, URL: http://www.opengl.org/discussion_boards/showthread.php/147055-2D-line-rendering?p=1054333#post1054333 ; [recherchiert am 9.7.2012]. *
SEGAL, M. [et al.]: The OpenGL Graphics System: A Specification. Version 1.1 vom 4.3.1997,URL: http://www.graphics.stanford.edu/courses/cs448a-01-fall/GLspec1.1.pdf ;[recherchiert am 3.7.2012].
SEGAL, M. [et al.]: The OpenGL Graphics System: A Specification. Version 1.1 vom 4.3.1997,URL: http://www.graphics.stanford.edu/courses/cs448a-01-fall/GLspec1.1.pdf ;[recherchiert am 3.7.2012]. *
SUN, C. [et al.]: Hardware Acceleration for Spatial Selections and Joins. Proceedings of the 2003 ACM SIGMOD International Conference on Management of Data, S. 455-466. *

Also Published As

Publication number Publication date
JP2010009350A (ja) 2010-01-14
KR101030100B1 (ko) 2011-04-20
JP4998386B2 (ja) 2012-08-15
KR20100002102A (ko) 2010-01-06
US9129437B2 (en) 2015-09-08
US20090322759A1 (en) 2009-12-31
DE102009018928A1 (de) 2010-03-25

Similar Documents

Publication Publication Date Title
DE102009018928B4 (de) Linienzeichenverfahren
DE60023814T2 (de) Verfahren und Gerät zur Grafikdarstellung mit Subpixel-Antialiasing
DE10053439B4 (de) Grafik-Beschleuniger mit Interpolationsfunktion
EP2494784B1 (de) Verfahren und vorrichtung zum erzeugen einer kalibrierten projektion
DE3851046T2 (de) Verfahren zum Füllen von Polygonen.
DE3750784T2 (de) Generation eines intrapolierten charakteristischen Wertes zur Anzeige.
DE68926571T2 (de) Wirksames verfahren zur aktualisierung eines zeitverschachtelt arbeitenden einzeltor-z-pufferspeichers
DE3619420A1 (de) Computer-displayeinrichtung
DE10144932A1 (de) Visualisierung von Werkstücken bei der Simulation von Fräsprozessen
DE3515037A1 (de) Bildsignalverarbeitungsvorrichtung
DE112022006176T5 (de) Anzeigevorrichtung und Computerprogramm
DE3524505A1 (de) Bilderkennungsvorrichtung
DE112021007014T5 (de) Bewegungsübelkeit-regulierungsvorrichtung, bewegungsübelkeit-regulierungsverfahren und bewegungsübelkeit-regulierungsprogramm
DE3938366C2 (de) Vorrichtung zur Bilddatenreduktion für ein Anzeigegerät
DE112022002410T5 (de) Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und steuerprogramm
DE60212900T2 (de) Bilderzeugungsverfahren und Rechnerprogramm dafür
DE102005025025A1 (de) Integrierte Schaltung mit Warping-Berechnungseinheit
DE102019212799A1 (de) Abstandsbildanzeigevorrichtung und Abstandsbildanzeigeverfahren
EP3695594B1 (de) Helligkeit- und kontrastoptimierung von bildern in echtzeit
DE102014219418B4 (de) Verfahren zur Stereorektifizierung von Stereokamerabildern und Fahrerassistenzsystem
EP1537538B1 (de) Verfahren zur festlegung von gewichtungsfaktoren für die farbberechnung eines farbwerts von texeln für einen footprint
DE102008008048B3 (de) Verfahren zur Einstellung von Betriebsparametern eines Datenverarbeitungssystems
DE68923745T2 (de) System zum Generieren einer geneigten rechteckigen Form.
DE60123608T2 (de) Verfahren und gerät zur berechnung von graphischem rechnerbild
DE10052263A1 (de) Verfahren und Anordnung zur Bildverarbeitung mit gleichzeitiger Koordinatentransformation

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: FUJITSU SEMICONDUCTOR LTD., YOKOHAMA, KANAGAWA, JP

8128 New person/name/address of the agent

Representative=s name: SEEGER SEEGER LINDNER PARTNERSCHAFT PATENTANWAELTE

R002 Refusal decision in examination/registration proceedings
R006 Appeal filed
R008 Case pending at federal patent court
R082 Change of representative

Representative=s name: VON KREISLER SELTING WERNER, DE

R082 Change of representative

Representative=s name: VON KREISLER SELTING WERNER, DE

R081 Change of applicant/patentee

Owner name: SPANSION LLC (N.D.GES.D. STAATES DELAWARE), US

Free format text: FORMER OWNER: FUJITSU SEMICONDUCTOR LTD., YOKOHAMA, JP

Effective date: 20140331

Owner name: SPANSION LLC (N.D.GES.D. STAATES DELAWARE), SU, US

Free format text: FORMER OWNER: FUJITSU SEMICONDUCTOR LTD., YOKOHAMA, KANAGAWA, JP

Effective date: 20140331

Owner name: CYPRESS SEMICONDUCTOR CORP. (N.D.GES.D.STAATES, US

Free format text: FORMER OWNER: FUJITSU SEMICONDUCTOR LTD., YOKOHAMA, KANAGAWA, JP

Effective date: 20140331

R082 Change of representative

Representative=s name: VON KREISLER SELTING WERNER - PARTNERSCHAFT VO, DE

Effective date: 20140331

Representative=s name: VON KREISLER SELTING WERNER - PARTNERSCHAFT VO, DE

Effective date: 20140327

Representative=s name: MURGITROYD & COMPANY, DE

Effective date: 20140331

Representative=s name: MURGITROYD & COMPANY, DE

Effective date: 20140327

R081 Change of applicant/patentee

Owner name: CYPRESS SEMICONDUCTOR CORP. (N.D.GES.D.STAATES, US

Free format text: FORMER OWNER: SPANSION LLC (N.D.GES.D. STAATES DELAWARE), SUNNYVALE, CALIF., US

R082 Change of representative

Representative=s name: MURGITROYD & COMPANY, DE

R019 Grant decision by federal patent court
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee