DE102009018928B4 - Linienzeichenverfahren - Google Patents
Linienzeichenverfahren Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing 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
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). -
6A –6D 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. -
7A –7B 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). -
24A –24B 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 Rautenbestimmungseinheit10 zum Anwenden der Bestimmung nach einer DiamondExit-Regel auf Start- und Endpunkte und die Endpunktkorrektur, eine Zeichenrichtungsberechnungseinheit11 zum Berechnen von Zeichenrichtungen nach der Endpunktkorrektur, eine Zeichenrichtungsvergleichseinheit12 zum Prüfen von Zeichenrichtungen vor und nach der Korrektur und eine Zeichenbestimmungseinheit13 zum endgültigen Bestimmen, ob Pixel zu zeichnen sind. Die Diamond- oder Rautenbestimmungseinheit10 umfasst eine Startpunkt-D-Wert-Operationseinheit14 , eine Endpunkt-D-Wert-Operationseinheit15 , eine Hauptachsenbestimmungseinheit16 , eine Endpunktkorrektureinheit17 und ein Endpunktkorrekturspeicherregister18 . Die Startpunkt-D-Wert-Operationseinheit14 berechnet einen Wert (D-Wert), um zu bestimmen, ob ein Startpunkt im Inneren einer Raute (engl.: diamond) liegt. Die Endpunkt-D-Wert-Operationseinheit15 berechnet einen Wert (D-Wert), um zu bestimmen, ob ein Endpunkt im Inneren einer Raute liegt. Die Hauptachsenbestimmungseinheit16 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 Endpunktkorrektureinheit17 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 Endpunktkorrekturspeicherregister18 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 Rautenbestimmungseinheit10 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 Zeichenrichtungsvergleichseinheit12 (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 Zeichenbestimmungseinheit13 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 und5 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 bis6D 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
6A –6D 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 und7B 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”
-
7A und7B zeigen Beispiele für Linien mit X-Hauptachsen- bzw. Y-Hauptachsen. - Wie in
7A und7B 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 bis17 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 in8 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 in8 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 in8 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 in9 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 in10 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 in11 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 in12 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 in13 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 in14 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 in15 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 in16 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 in17 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 bis23 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. In18 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. In19 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. In20 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. In21 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. In22 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. In23 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.
-
24A –24B und25 erläutern einen Zeichenrichtungsbestimmungsprozess. - In
24A –24B und25 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 von24B 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 und27 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 Zeichenvorrichtung22 zeichnet gemäß den Programminhalten eines programmierbaren Shaders21 . In diesem Fall erhält die Zeichenvorrichtung22 Zeichendaten von einem Speichercontroller27 und einem Erfassungscontroller26 , die mit ihr durch einen Bus20 verbunden sind, erhält sie Anzeigedaten durch deren Verarbeitung, sendet sie die Anzeigedaten an einen Anzeigecontroller25 und zeigt diese an. Die Zeichenvorrichtung22 ist mit einer externen Schnittstelle24 über eine Host-Schnittstelle23 verbunden, um mit der Außenwelt zu kommunizieren. -
27 ist die interne Blockkonfiguration der in26 gezeigten Zeichenvorrichtung. Wenn der Zeichenvorrichtung22 Vertexdaten eingegeben werden, berechnet eine Vertexverarbeitungseinheit30 die Koordinaten eines Vertex. Die Koordinaten eines Vertex werden einer Graphikeinstelleinheit31 eingegeben, und es wird berechnet, welches Pixel zu zeichnen ist. Die Graphikeinstelleinheit31 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 in1 gezeigt. Wenn Pixelzeichendaten erhalten werden, werden diese an eine Zeichenprozesseinheit32 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 bis33 sind ein beispielhafter Vergleich zwischen dieser bevorzugten Ausführungsform und dem Stand der Technik. - In
28 und29 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 und31 werden erhalten, indem ein Teil vergrößert wird, der in28 bzw.29 von einem Kreis umgeben ist.32 zeigt die Differenz zwischen30 und31 . 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 zeigt33 das Resultat der in diesen Tabellen dargestellten Operationen. Tabelle 1 Tabelle 2Nr. 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 3Nr. 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 4Nr. 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 5Nr. 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 6Nr. 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 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.
*ΔY: Absolutwert eines Wertes, der durch Subtrahieren der Y-Koordinate eines Startpunktes von der Y-Koordinate eines Endpunktes erhalten wird.
Claims (8)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Linienzeichenverfahren nach Anspruch 1, bei dem die zur Hauptachse senkrechte Achse als Nebenachse spezifiziert wird und der Nebenachsen-Koordinatenwert des Startpunkts nicht korrigiert wird.
- 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.
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)
| 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)
| 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)
| 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 | 株式会社ソニー・コンピュータエンタテインメント | 描画方法、画像生成装置、および電子情報機器 |
-
2008
- 2008-06-27 JP JP2008168463A patent/JP4998386B2/ja not_active Expired - Fee Related
-
2009
- 2009-04-22 US US12/428,212 patent/US9129437B2/en active Active
- 2009-04-28 DE DE102009018928.9A patent/DE102009018928B4/de not_active Expired - Fee Related
- 2009-05-18 KR KR20090043188A patent/KR101030100B1/ko not_active Expired - Fee Related
Patent Citations (4)
| 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)
| 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 |