DE3815361A1 - Einrichtung und verfahren zum erzeugen von vektoren auf einem displaygeraet - Google Patents
Einrichtung und verfahren zum erzeugen von vektoren auf einem displaygeraetInfo
- Publication number
- DE3815361A1 DE3815361A1 DE3815361A DE3815361A DE3815361A1 DE 3815361 A1 DE3815361 A1 DE 3815361A1 DE 3815361 A DE3815361 A DE 3815361A DE 3815361 A DE3815361 A DE 3815361A DE 3815361 A1 DE3815361 A1 DE 3815361A1
- Authority
- DE
- Germany
- Prior art keywords
- bresenham
- vector
- error
- register
- coordinate
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/20—Function-generator circuits, e.g. circle generators line or curve smoothing circuits
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Description
Die Erfindung bezieht sich auf ein Verfahren und eine Einrich
tung zur Erzeugung von Bildern auf einer Kathodenstrahlröhre
(CRT) und insbesondere auf die genaue Erzeugung von Kurven und
gekrümmten Flächen höherer Ordnung, Vektoren oder Objekten auf
einer CRT oder einem anderen Display.
Bei vielen Computersystemen ist es üblich, einem Benutzer
Informationen durch digitale Bilder darzustellen und zu über
tragen. Diese Bilder können viele Formen annehmen, beispiels
weise alphanumerische Zeichen, kartesische Graphiken und ande
re Bilddarstellungen. Bei vielen Anwendungen werden die digi
talen Bilder auf einem Display, z. B. einem Rasterabtast-Video
monitor, einem Drucker o. dgl. an einen Benutzer übermittelt.
Typischerweise werden die wiederzugebenden Bilder in digitaler
Form gespeichert, verarbeitet und danach zur Anzeige gebracht.
Parametrische Kurven und gekrümmte Flächen sind gewöhnliche
Funktionen, die bei der Computererzeugung von Flächen und
Objekten auf einem Display beispielsweise bei mechanischen
computergestützten Konstruktionsarbeiten ("CAD") benutzt wer
den. Seitdem Hochgeschwindigkeitshardware bekannt ist, die
Vektoren und Polygone zu erzeugen vermag, erfolgt die Hochge
schwindigkeitserzeugung von gekrümmten Linien und Flächen
gewöhnlich durch deren Unterteilen und Abbilden auf einer CRT
als Vielzahl von geraden Linien oder ebenen Polygonen. (Zur
Erzielung eines besseren Verständnisses der bekannten Methoden
zur Erzeugung von Kurven und/oder Oberflächen wird verwiesen
auf: Bishop, G. und Weimer, D., "Fast Phong Shading", Seiten
103 bis 106, in Computer Graphics, Band 20, Nr. 4, August
1986; Foley, J.D. und Van Dam, A., 1983 in Fundamentals of
Interactive Computer Graphics, Addison Wesley, Reading, MA,;
Gouraud, H., Juni 1971 "Continuous Shading of Curved Surfaces"
in IEEE Transactions on Computers, Band 20, Nr. 6, Seiten
623-628; Swanson, R. und Thayer, L. "A Fast Shaded-Polygon
Renderer" in Computer Graphics, Band 20, Nr. 4, Seiten 95-101,
August 1986).
Bei der Erzeugung bzw. Abbildung von Kurven und Flächen höhe
rer Ordnung verwenden bekannte Systeme jedoch rekursive Unter
teilungsmethoden, deren Implementierung in Computerhardware
wegen der Hochgeschwindigkeitsstapelspeicheranforderung teuer
ist.
Die Erfindung verwendet eine adaptive Vorwärtsdiffe
renz("AFD")-Methode, welche die mit dem Stande der Technik
verbundenen Probleme überwindet und nur relativ einfache und
preiswerte Schaltungen unter Verwendung gewöhnlicher Vorwärts
differenzbindung (forward differencing) benötigt (Bewegung
entlang einer parametischen Kurve oder Fläche mit konstanten
Parameterschritten), sowie eine neue adaptive Methode, die
überlegen ist den bekannten adaptiven Unterteilungsmethoden
der rekursiven Unterteilung des Objekts bis hin zu Teilen, die
kleiner als ein Pixel (Bildelement) sind. Die Erfindung paßt
das Vorwärtsparameterdifferenzinkrement derart an, daß das
Verrücken entlang der Kurve oder Fläche bei einer Schrittgröße
(d. h. einer Distanz zwischen dem zuvor gezeichneten Pixelort
und dem gegenwärtigen Pixelort der zu erzeugenden Kurve oder
Fläche) erfolgt, die angenähert gleich dem Abstand zwischen
zwei benachbarten Pixeln ist (im folgenden als ein "Einzelpi
xel-" oder "Ein-Pixel-Inkrement" bezeichnet). Diese Anpassung
wird durchgeführt durch Transformieren der Gleichung der Kurve
in eine identische Kurve mit anderer Parameterisierung derart,
daß die Schrittgröße erhöht oder vermindert wird, so daß die
Kurve im wesentlichen in einheitlichen Inkrementen von einem
Pixel zum nächsten fortschreitet. AFD unterscheidet sich von
den bekannten rekursiven Unterteilungsmethoden zur Erzeugung
von Kurven dadurch, daß sie keine Manipulation der komplizier
ten bekannten Stapelspeicherschaltung bedingt und daher einfa
cher und effizienter ist. Außerdem ist die Erzeugung (rende
ring) der Kurve, der gekrümmten Fläche oder des Objekts bei
der Erfindung genauer als bei der Erzeugung mit einer bekann
ten, üblicherweise verwendeten Vorwärtsdifferenzbildungsme
thode mit stückweise geradliniger oder planarer Polygonappro
ximation.
Die Erfindung überwindet die Schwierigkeiten und Nachteile
bekannter Methoden durch ein adaptives Vorwärtsdifferenzbil
dungsgerät zur Erzeugung einer Kurve auf einem Display (bei
spielsweise einer CRT) durch Betätigung von Displayelementen,
welche die Kurve definieren. Das erfindungsgemäße Gerät ent
hält eine Einrichtung zur Aufnahme einer Vielzahl von für die
Displayelemente repräsentativen Datenpunkten, welche die Bil
der definieren, und ein Mittel zum inkrementellen Erzeugen der
Kurve in praktisch einheitlichen Einzelpixel-Schritten.
Das Mittel zum inkrementellen Erzeugen des Bildes in praktisch
einheitlichen Einzelpixel-Schritten weist X, Y, Z und W adap
tive Vorwärtsdifferenzbildungseinheit(AFDU)-Schaltungen zur
Berechnung von x, y, z und w für einen Punkt in homogenen
Koordinaten auf. Die W-AFDU-Schaltung ist mit einer 1/w-Schal
tung gekoppelt, welche den Reziprokwert 1/w der homogenen
Koordinate w erzeugt. Das Ausgangssignal der 1/w-Schaltung
wird mit den x, y, z-Koordinaten multipliziert, um die ratio
nalen Kuben x/w, y/w und z/w zu gewinnen. Die AFDU-Schaltungen
sind außerdem mit einer Pixel-Filterschaltung gekoppelt, die
im Zusammenwirken mit den AFDU-Schaltungen die erfindungsge
mäße AFD-Methode implementiert, indem die x, y, z und w-kubi
schen Funktionen derart reparameterisiert werden, daß eine
Kurve in praktisch gleichmäßigen ein-Pixel-großen Inkrementen
erzeugt wird.
Die Pixel-Filterschaltung nach der Erfindung vergleicht den
aktuellen Pixelort mit dem vorhergehenden Pixelort, berechnet
von den AFDU-Schaltungen, und befiehlt dann, wenn der aktuelle
x, y-Pixelort der Displayeinrichtung mehr als ein Ein-Pixel-
Inkrement von dem zuvor definierten x, y-Pixelort entfernt
ist, den X, Y, Z und W-AFDU-Schaltungen, die Schrittlänge bei
der zu erzeugenden Kurve zu reduzieren.
Wenn die berechneten x und y-Inkremente der gerade erzeugten
Kurve kleiner als ein vorgegebener Teil (d. h. 0,5 Pixel) sind,
befiehlt das Pixelfilter den X, Y, Z und W-AFDU-Schaltungen,
die Schrittweite der zu erzeugenden Kurve zu vergrößern.
Bei der Vektorerzeugung implementiert die AFDU-Schaltung nach
der Erfindung den Bresenham-Algorithmus unter Verwendung einer
Vielzahl derselben Schaltungskomponenten, wie sie bei der
adaptiven Vorwärtsdifferenzmethode verwendet werden. In Wei
terbildung der Erfindung sind auch eine Einrichtung zum Defi
nieren von Abschneidezonen (clipping regions) auf einem CRT-
Display, eine Einrichtung zum Abbilden von imaginären Struktu
ren (imagery) auf gekrümmten Flächen und auf Kurven und eine
Einrichtung zur Schattenbildung (shading) und Trimmen gekrümm
ter Flächen vorgesehen. Andere Merkmale und Vorteile der Er
findung ergeben sich aus der nachfolgenden Figurenbeschrei
bung. In der Zeichnung zeigt
Fig. 1 ein Gesamt-Blockschaltbild der Erfindung;
Fig. 2 ein Blockschaltbild der 1/w-Schaltung aus Fig.
1;
Fig. 3 ein detaillierteres Blockschaltbild der X-AFDU-
Schaltung aus Fig. 1;
Fig. 4 einen Teil der in Fig. 3 dargestellten Schaltung
zur Erzeugung von Vektoren;
Fig. 5 ein Ablaufdiagramm, das eine Operationsfolge bei
der Schaltung gemäß Fig. 4 veranschaulicht;
Fig. 6
und 6a die Darstellung eines Aspekts der Erfindung, der
sich auf die Aktivierung von Pixeln auf einem
Display bezieht; und
Fig. 7 eine genauere Ansicht der Pixel-Filterschaltung
gemäß Fig. 1.
Beschrieben wird eine Einrichtung und ein Verfahren zur gra
phischen Wiedergabe von Bildern, deren bevorzugtes Anwendungs
gebiet in einem Computersystem liegt. Obwohl die Erfindung
unter Bezugnahme auf spezielle Schaltungen, Blockschaltbilder,
Signale, Algorithmen usw. beschrieben wird, ist es für den
Fachmann klar, daß derartige Einzelheiten einfach zur Erleich
terung des Verständnisses der Erfindung angegeben werden. Es
ist daher für den Fachmann klar, daß die Erfindung auch ohne
diese besonderen Einzelheiten realisiert werden kann. In ande
ren Fällen werden bekannte Schaltungen nur in Form eines
Blockschaltbildes gezeigt, um die Beschreibung der Erfindung
nicht mit unnötigen Einzelheiten zu belasten.
In der Fig. 1 ist ein Gesamtblockschaltbild der Erfindung
gezeigt. Um Bilder auf einem CRT-Display oder einer anderen
Wiedergabeeinrichtung zu definieren, ist es notwendig, die
Daten mit hoher Geschwindigkeit zu bearbeiten, um diejenigen
Pixel eines CRT-Displays auszuwählen, welche die Kurve, ge
krümmte Fläche, den Vektor oder das wiederzugebende Bild defi
nieren. Es ist bekannt, daß der Ort jedes auf einem CRT wie
derzugebenden Punktes häufig durch in einer Speichervorrich
tung gespeicherte Digitalwerte dargestellt wird, die x, y, z
und w homogenen Koordinaten entsprechen.
Die Koeffizienten der Gleichungen, welche die von der Schal
tung gemäß Fig. 1 zu erzeugenden Kurven beschreiben, werden
von einer CPU 9 berechnet und zugeführt und zu den W, X, Y und
Z adaptiven Vorwärtsdifferenzbildungsein
heit("AFDU")-Schaltungen 10, 12, 14 und 16 übertragen, die
jeweils x, y, w und z-Koordinaten für jedes auf dem Display zu
zeichnende Pixel ausgeben. Die von der W-AFDU-Schaltung 10
ausgegebene w-Koordinate wird zu einer 1/w-Schaltung 18 über
tragen, die ihrerseits den aktuellen Wert von 1/w ausgibt. Die
x, y und z-Koordinaten werden durch die homogene Koordinate w
geteilt (d. h. mit dem aktuellen 1/w-Wert multipliziert, um das
Verhältnis von zwei kubischen Funktionen zu gewinnen), und
zwar von der 1/w-Schaltung 18 und den drei Multiplizierern 20,
22 und 24.
Genauer gesagt, gibt die X-AFDU-Schaltung 12 die aktuelle
x-Koordinate an einen Multiplizierer 20 aus, in welchem sie
mit dem entsprechenden 1/w-Wert multipliziert wird, der von
der 1/w-Schaltung 18 geliefert wird, so daß ein aktueller
x/w-Wert an das Pixelfilter 30 angelegt wird. In ähnlicher
Weise werden y/w und z/w jeweils von den W, Y und Z-AFDU-
Schaltungen 10, 14 und 16, der 1/w-Schaltung 18 und den Multi
plizierern 22 und 24 dem Pixelfilter 30 zugeführt. Auf diese
Weise werden x, y und z-Koordinaten der rationalen kubischen
Funktionen dem Pixelfilter 30 eingegeben und zur Auswahl der
die Bilder der rationalen kubischen Funktionen auf einer CRT
definierenden Pixel verwendet.
Das Pixelfilter 30 der Fig. 1 vergleicht die aktuellen x, y
und z-Pixelkoordinaten, welche ihm von den Multiplizierern 20,
22 und 24 zugeführt werden, mit den x, y und z-Pixelkoordina
ten, welche dem Pixelfilter 30 einen Taktzyklus zuvor zuge
führt wurden, und befiehlt den W, X, Y und Z-AFDU-Schaltungen
ein "Hochstellen" (d. h. Vorrücken der Kurve oder gekrümmten
Fläche in größeren Inkrementen) durch Multiplizierung des
Parameters t mit zwei, oder eine "Herunterjustierung" (d. h.
ein Vorrücken der Kurve oder gekrümmten Fläche in kleineren
Inkrementen) durch Division des Parameters t durch zwei, oder
ein "Vorrücken" zum nächsten Pixel derart, daß die x, y und
z-Koordinaten, die vom Pixelfilter ausgegeben werden, auf der
Kurve, die auf der CRT wiederzugeben ist, im wesentlichen mit
Einzel-Pixel-Inkrementen vorrücken. Diese Einstellmethode wird
weiter unten genauer beschrieben.
Das Pixelfilter 30 bestimmt und ersetzt auch "Ellenbogen"
(wobei ein Kurvenabschnitt mit beispielsweise den Koordinaten
(x₀, y₀), (x₀, y₁) und (x₁, y₁) (siehe Fig. 6),
durch einen Kurvenabschnitt mit den Koordinaten (x₀, y₀)
und (x₁, y₁) ersetzt wird (siehe Fig. 6a). Dies geschieht
zur Verbesserung des Erscheinungsbildes der erzeugten Kurve
durch Eliminierung der Eckpixel (d. h. Pixel x₀, y₁ in Fig.
6).
Das Pixelfilter 30 ist an Ausgängen 33, 35 und 37 mit einem in
der Zeichnung nicht gezeigten Rahmenpuffer gekoppelt, der
seinerseits mit einem CRT-Display (ebenfalls nicht gezeigt)
oder einem anderen geeigneten Displaygerät gekoppelt ist, um
Bilder zu definieren durch Aktivierung oder Schreiben eines
Farbwertes an denjenigen Pixeln, die von den Pixelkoordinaten,
ausgegeben vom Pixelfilter 30 an Ausgängen 33, 35 und 37,
definiert sind.
Ein Bogenlängen-Ausgang 31 des Pixelfilters 30 ist mit einem
Zeichnungsabschnitt 150 (nicht gezeigt) gekoppelt, der Pixel
entsprechend dem vom Pixelfilter 30 am Ausgang 31 ausgegebenen
Bogenlängen bezeichnet. Der Bogenlängenwert dient zum Zeichnen
von strukturierten (textured), beispielsweise gestrichelten,
gepunkteten usw. Linien und Flächen. Das Zeichnen von gestri
chelten Linien und Oberflächen bildet jedoch keinen wesentli
chen Teil der hier beschriebenen und beanspruchten Erfindung,
so daß eine genauere Erläuterung hierzu nicht erforderlich
ist.
In Fig. 2 ist eine ausführlichere Ansicht der 1/w-Schaltung 18
aus Fig. 1 gezeigt. Die 1/w-Schaltung 18 gemäß Fig. 1 hat
gegenüber bekannten Schaltungen zur Gewinnung des Reziprok
werts von w den Vorteil, daß sie den Reziprokwert von w ra
scher, mit weniger Berechnungsschritten und geringerer Latenz
als vergleichbare bekannte Schaltungen ergibt.
Bekannte 1/w-Schaltungen verwenden in typischer Ausführung
einen Newton-Iterationsalgorithmus unter Verwendung einer
einzigen Nachschlagetabelle für die Anfangsapproximation des
Reziprokwerts von w. Diese früheren Methoden bedingten eine
große Multiplizierschaltung und benötigten einige Taktzyklen
zur Gewinnung eines Ergebnisses. In direktem Gegensatz hierzu
bedingt die Erfindung nur einen Taktzyklus für die Iterations
berechnung, wodurch die Latenz im Vergleich zu bekannten Me
thoden wesentlich verringert wird (zu bekannten Methoden zur
Teilung mittels Divisor-Reziprokbildung wird verwiesen auf:
"Computer Arithmetic", Kai Hwang, Seiten 259-264, Johny Wiley
& Sons, New York, N.Y., 1979). Um die oben beschriebenen über
legenen Ergebnisse zu erzielen, benutzt die Erfindung eine
abgebrochene Taylorreihenannäherung unter Verwendung von zwei
kleinen Nachschlagetabellen 76 und 78 (d. h. bei dem bevorzug
ten Ausführungsbeispiel hat Tabelle 76 8K Eingänge und 20 Bit
Ausgang, während Tabelle 78 8 Bit Ausgang 8k Eingänge und
kleinere Rechenhardware zum Implementieren derselben hat, um
eine Approximation von 1/w zu gewinnen, und zwar ohne die
kostspieligen, langsameren Rechenvorgänge, wie sie beim Stande
der Technik erforderlich sind).
Bekanntlich dient die Taylor-Reihen-Approximation zur Ablei
tung des Reziprokwerts der homogenen Koordinate w. Nach der
Taylor-Reihen-Approximation gilt:
1/w≈(1/w₀) [1-d/w₀ + (d/w₀)² - (d/w₀)³ + (d/w₀)⁴ + (d/w₀)⁵ . . .]
wobei w₀ eine vorgegebene Größe der am höchsten bewerteten
Bits des w-Werts und d eine vorgegebene Größe der am niedrig
sten bewerteten Bits des w-Werts darstellen. Es wurde festge
stellt, daß der Abbruch der oben aufgeführten Taylor-Reihen-
Approximation nach nur den ersten beiden Termen (d. h. 1/w₀-
d (1/w₀)² einen 1/w-Wert ergibt, der zum Zwecke der Gewin
nung der rationalen kubischen Funktionen x/w, y/w und z/w zur
Erzeugung von Bildern ausreichend genau ist.
Der von W-AFDU-Schaltung 10 ausgegebene w-Wert enthält bei dem
beschriebenen Ausführungsbeispiel der Erfindung 21 Bits. Die
13 am höchsten bewerteten Bits (hier als "w₀" bezeichnet)
dieses 21-Bit-Werts werden den Nachschlagetabellen 76 und 78
zugeführt. Die Nachschlagetabelle 76 gibt den Reziprokwert
(1/w₀) des 13-Bit-Werts aus, der in das Register 80 eingege
ben wurde. In ähnlicher Weise gibt die Nachschlagetabelle 78
einen (1/w₀)²-Wert entsprechend den 13 am höchsten bewer
teten eingegebenen Bits an das Register 82 aus. Die 8 am nie
drigsten bewerteten Bits des 21-Bit-w-Werts werden einem 8-Bit
Verzögerungsregister 84 zugeführt. Letzteres verzögert ledig
lich die 8 am niedrigsten bewerteten Bits über eine Zeit, die
ausreicht, um die Ausgabe von (1/w₀)² durch das Register
82 zu ermöglichen, so daß der Multiplizierer 87 die 8 am nie
drigsten bewerteten Bits (hier als "d" bezeichnet) mit dem
Inhalt des Registers 82 multipliziert und d (1/w₀)² an eine
Subtraktionseinrichtung 89 ausgibt, wo d (1/w₀)² von
(1/w₀) subtrahiert wird, um am Register 90
1/w₀ - d (1/w₀)² zu erzeugen. Wie oben gesagt, ist
1/w₀ - d (1/w₀)²≈1/w. Register 90 gibt seinerseits den
Wert 1/w an die Multiplizierer 20, 22 und 24 aus, wie zuvor
unter Bezugnahme auf Fig. 1 erläutert wurde. Verzögerungs
schaltungen 13, 11 und 15 sind vorhanden, um sicherzustellen,
daß die x, y und z-Koordinaten, die jeweils von den X, Y und
Z-AFDU-Schaltungen 12, 13 bzw. 16 ausgegeben werden, an den
Multiplizierern 20, 22 und 24 im wesentlichen gleichzeitig mit
dem berechneten entsprechenden 1/w-Wert ankommen, der vom
Register 90 ausgegeben wird.
Der Multiplizierer 87 ist ein 8 Bit mal 8 Bit-Multiplizierer.
(1/w₀)² und d sind 8 Bit Terme und werden daher zur Sub
traktionseinrichtung 89 und damit zum Register 90 in nur einem
Taktzyklus übertragen.
Aus der obigen Erläuterung wird klar, daß durch Verwendung der
beiden Nachschlagetabellen 76 und 78, die 1/w₀ und
(1/w₀)² ergeben, und Berechnung dieser Werte zur Erzeugung
von 1/w erfindungsgemäß die lange Latenz bewirkenden Berech
nungen vermieden werden, welche bei den eingangs beschriebenen
bekannten Einrichtungen erforderlich waren, wodurch die Ge
schwindigkeit bei der Berechnung von 1/w erhöht w d. Bei dem
bevorzugten Ausführungsbeispiel der 1/w-Schaltung 18 wird ein
1/w-Wert erzeugt, der 20 bewertete Bits hat; es ist jedoch
klar, daß mehr oder weniger Bits verwendet werden können,
solange die in den Nachschlagetabellen gespeicherten Werte
entsprechend eingestellt werden.
In Fig. 3 ist eine detailliertere Ansicht der X-AFDU-Schaltung
12 aus Fig. 1 gezeigt. Y, Z und W-AFDU-Schaltungen 14, 16 und
10 sind schaltungsmäßig identisch mit der X-AFDU-Schaltung 12,
so daß die Erläuterung der X-AFDU-Schaltung 12 auch die Schal
tung und Funktionsweise der Y, Z und W-AFDU-Schaltungen 10, 14
und 16 verständlich machen.
Jede AFDU-Schaltung berechnet eine parametrische kubische
Funktion f(t) die dargestellt wird als:
f(t) = aB₃(t) + bB₂(t) + cB₁(t) + dB₀(t). (1)
Für jede x, y, z und w-Koordinate ist die parametrische kubi
sche Funktion f:
x(t) = a x B₃ + b x B₂ + c x B₁ + d x B₀
y(t) = a y B₃ + b y B₂ + c y B₁ + d y B₀
z(t) = a z B₃ + b z B₂ + c z B₁ + d z B₀
w(t) = a w B₃ + b w B₂ + c w B₁ + d w B₀
y(t) = a y B₃ + b y B₂ + c y B₁ + d y B₀
z(t) = a z B₃ + b z B₂ + c z B₁ + d z B₀
w(t) = a w B₃ + b w B₂ + c w B₁ + d w B₀
Die obigen Funktionen B₃(t), B₂(t), B₁(t) und B₀(t)
sind Vorwärtsdifferenz-Basisfunktionen, welche sich voneinan
der unterscheiden, wenn t sich von 0 bis 1 entlang einer Kurve
ändert. Die dt-Schritt-Größe für t wird automatisch derart
eingestellt, daß die Kurve angenähert in Ein-Pixel-Schritten
in der oben beschriebenen Weise inkrementiert. Die 4 Vorwärts
differenz-Basisfunktionen B₃, B₂, B₁ und B₀ sind unten
aufgeführt:
Die oben genannten kubischen Funktionen x(t), y(t), z(t) und
w(t) werden von jeder AFDU-Schaltung getrennt berechnet. Die 4
Koeffizienten a, b, c und d, welche eine kubische Kurve be
schreiben, werden in die 4 Koeffizientenregister 34, 50, 62
und 72 jeder AFDU-Schaltung bei Initialisierung durch die CPU
9 geladen. Bei jedem Taktzyklus nimmt der Parameter t um dt
zu, und die 4 Koeffizienten werden zu a′, b′, c′, d′ aktuali
siert, während die vier AFDU-Schaltungen 10, 12, 14 und 16 die
einem besonderen Pixel auf dem CRT-Display entsprechenden
Koordinaten erzeugen.
Wenn die gerade von den X und Y-AFDU-Schaltungen 12 und 14
berechneten x, y-Koordinaten einen Pixelort auf dem CRT-Dis
play definieren, der um mehr als einen einzigen Pixelschritt
vom zuvor definierten Pixel entfernt ist, so befiehlt das
Pixelfilter 30 jeder AFDU-Schaltung, dt durch 2 zu teilen
(herunterzujustieren), wodurch die x, y-Inkremente reduziert
werden, so daß bei jedem Taktzyklus jede AFDU-Schaltung Koor
dinaten ausgibt, welche Pixel entlang der Kurve im wesentli
chen entsprechend Einzelpixelinkrementen definieren. Wenn der
x,y-Adreßschritt kleiner als 1/2 Pixel-Inkrement entfernt vom
zuvor definierten Pixel ist, so wird dt verdoppelt (hochge
stellt) um die Änderung in den x, y-Koordinaten derart zu
erhöhen, daß wieder praktisch um einen Pixel-Schritt bei jedem
Taktzyklus inkrementiert wird. Um dt auf die Hälfte zu redu
zieren, werden die kubischen Funktionen x(t), y(t), z(t) und
w(t) wie folgt transformiert:
x′(t) = x(t/2) = a′ x B₃ + b′ x B₂ + c′ x B₁ + d′ x B₀
y′(t) = y(t/2) = a′ y B₃ + b′ y B₂ + c′ y B₁ + d′ y B₀
z′(t) = z(t/2) = a′ z B₃ + b′ z B₂ + c′ z B₁ + d′ z B₀
w′(t) = w(t/2) = a′ w B₃ + b′ w B₂ + c′ w B₁ + d′ w B₀
y′(t) = y(t/2) = a′ y B₃ + b′ y B₂ + c′ y B₁ + d′ y B₀
z′(t) = z(t/2) = a′ z B₃ + b′ z B₂ + c′ z B₁ + d′ z B₀
w′(t) = w(t/2) = a′ w B₃ + b′ w B₂ + c′ w B₁ + d′ w B₀
Die Koeffizienten des transformierten Satzes kubischer Funk
tionen sind gegeben durch:
a′ = a/8
b′ = b/4 - a/8
c′ = c/2 - b/8 + a/16
d′ = d
b′ = b/4 - a/8
c′ = c/2 - b/8 + a/16
d′ = d
Um dt zu verdoppeln, werden die koordinierten kubischen Funk
tionen transformiert durch:
x′(t) = x (2t)
y′(t) = y (2t)
z′(t) = z (2t)
w′(t) = w (2t)
y′(t) = y (2t)
z′(t) = z (2t)
w′(t) = w (2t)
Im Falle der Verdoppelung von dt benutzt die Erfindung die
folgende Koeffiziententransformation:
a′ = 8a
b′ = 4b + 4a
c′ = 2c + b
d′ = d
b′ = 4b + 4a
c′ = 2c + b
d′ = d
Wenn die aktuelle Schrittgröße, die von AFDU-Schaltungen be
nutzt wird, richtig ist, (d. h. im wesentlichen ein Ein-Pixel-
Inkrement), so erzeugen die AFDU-Schaltungen Koordinaten
entsprechend einem neuen Pixel und rücken vor zu dem Pixel
durch Berechnung der folgenden Transformation:
x′(t) = x(t + 1)
y′(t) = y(t + 1)
z′(t) = z(t + 1)
w′(t) = w(t + 1)
y′(t) = y(t + 1)
z′(t) = z(t + 1)
w′(t) = w(t + 1)
Die entsprechende Koeffiziententransformation für ein Inkre
ment eines Pixels ist:
a′ = a
b′ = b + a
c′ = c + b
d′ = d + c
b′ = b + a
c′ = c + b
d′ = d + c
Im folgenden wird auf Fig. 3 erneut Bezug genommen. Um die
obigen Transformationen (hochjustieren, herunterjustieren oder
vorrücken) zu implementieren, gibt das Pixelfilter 30 Steuer
signale an Multiplexer 32, 44, 46, 54, 56 und 70. Dadurch wird
ein geeigneter Eingang jeweils in Addier/Subtrahierschaltun
gen 45, 58 und 66 ausgewählt. Die Multiplexer selektieren die
geeigneten transformierten Werte für die a′, b′, c′ und d′-Ko
effizienten. Wie gesagt, werden die Werte a, b, c und d an
fänglich von der CPU 9 in Register 34, 50, 62 und 72 geladen.
Neue Koeffizientenwerte entsprechend der gewünschten Pixelstel
le werden aktualisiert und bei jedem Taktzyklus in Register
34, 50, 62 und 72 geladen. Dadurch wird die parametrische
Funktion x(t)=a x B₃+b x B₂+c x B₁+d x B₀ schrittweise
berechnet. Wenn die x, y und w-Koordinaten, die von AFDU-
Schaltungen 12, 10 und 14 ausgegeben werden, einem Pixelort
entsprechen, der mehr als einen Pixelschritt vom zuvor defi
nierten Pixel entfernt ist, werden die Koeffizienten von a′,
b′, c′ und d′ ausgewählt als a′=a/8, b′=b/4-a/8,
c′=c/2-b/8+a/16 und d′=d. Der 8a-Eingang zum Multiplexer 32
ist verdrahtet mit einer Linksverschiebung von 3 Bits, um den
Wert 8a zur Verwendung in den oben angegebenen Gleichungen zu
erzeugen. In ähnlicher Weise wird der Eingang a/8 um drei Bits
nach rechts verschoben, um den Wert a/8 zu gewinnen.
Generell erfolgt das Teilen durch oder Multiplizieren mit
einer ganzzahligen Potenz von 2 durch eine festverdrahtete
Rechts- oder Linksverschiebung. Die Koeffizienten für eine
Herunterjustier- bzw. Verkürzungsoperation werden in zwei
Taktzyklen wie folgt gewonnen: Erster Taktzyklus, Pixelfilter
30 legt Steuersignale an Bus 51 und bewirkt dadurch, daß Mul
tiplexer 32 A/8, Multiplexer 4 A/8, Multiplexer 46 B/4, Multi
plexer 56 0 und Multiplexer 54 C/2 auswählt. Am Ende dieses
Taktzyklus ergeben sich A′=A/8, B′=B/4-A/8 und C′=C/2. Während
des zweiten Taktzyklus legt das Pixelfilter 30 Steuersignale
an Bus 51, wodurch bewirkt wird, daß Multiplexer 32 a, Multi
plexer 44 0, Multiplexer 46 b, Multiplexer 56 b/2 und Multi
plexer 54 c wählt. Am Ende dieses Taktzyklus ist das Ergebnis
der beiden Taktzyklusoperationen A′=A/8, B′=B/4-A/8,
C′=C/2-(B/4-A/8)/2. Addierer/Subtrahierer 45 und 58 sowie
Addierer 66 werden vom Pixelfilter 30 gesteuert, um die für
die oben beschriebenen Transformationen notwendigen Additions-
oder Subtraktionsoperationen auszuführen.
Wenn ein von der X-AFDU-Schaltung 12 berechnetes Pixelinkre
ment kleiner als 0,5 eines Pixelschritts ist, werden die Koef
fizienten a, b, c und d transformiert durch: a′=8a, b′=4b+4a, c′=2c+b und d′=d. Um diese Transformationen durchzuführen,
werden geeignete Steuersignale vom Pixelfilter 30 an Multiple
ser 32, 44, 46, 54, 56 und 70 angelegt, so daß die 8a, 4a, 4b
und 2c in die entsprechenden Register in Verbindung mit Addie
rer/Subtrahierer 45, 58 und 66 eingetaktet werden.
Wenn andererseits die AFDU-Schaltung ein x-Inkrement zwischen
0,5 und 1 und ein y-Inkrement zwischen 0,5 und 1 berechnet, so
werden die a, b, c und d-Koeffizienten von Multiplexern 32,
44, 46, 54, 56 und 70 durch geeignete Steuersignale ausge
wählt, die vom Pixelfilter 30 angelegt werden, so daß Register
50 durch b′=b+a, Register 62 durch c′=c+b, d-Register 72
durch d′=d+c aktualisiert werden und ein Register 34 ungeän
dert bleibt. Es ist verständlich, daß nur die Ausgangssignale
aus den AFDU-Schaltungen X, Y, und W vom Pixelfilter zur Steue
rung der Nachstellung aller vier AFDU-Schaltungen benutzt
werden, da die x/w und y/w-Koordinaten den Pixelort aus
reichend definieren. Auf diese Weise stellen die AFDU-Schal
tungen 10, 12 und 14 im Zusammenwirken mit der 1/w-Schaltung
18, den Multiplizierern 20, 22 und 24 und dem Pixelfilter 30
sicher, daß die erzeugten Kurven in Inkrementen von etwa einem
Pixel inkrementiert werden.
Speicherpuffer 48, 60 und 68 dienen zur Speicherung einer
Folge von wenigstens N b, c und d-Werten, damit die geeignet
verzögerten d-Koordinatenwerte in Zuordnung zu dem Pixelfil
ter-Steuersignal verwendet werden. Dies ist notwendig, da das
Pixelfilter 30 Steuerentscheidungen einige Takte nach der
Erzeugung der Pixeladressen durch die AFDU trifft. Speicher
puffer 48, 60 und 68 speichern eine Folge von Werten derart,
daß der b-Wert mit einer Verzögerung gleich der Anzahl von
Takten zwischen der AFDU und dem Pixelfilter zum Berechnen von
b′ verwendet wird. Kein Speicherpuffer ist für das Register 34
notwendig, da sich "a" während einer Vorwärtsschritt-AFDU-
Operation nicht ändert.
Im folgenden wird ein anderer wichtiger Aspekt der vorliegen
den Erfindung beschrieben.
Ein kritisches Problem, das typischerweise bei bekannten Vor
wärtsdifferenzbildungsmethoden zur Gewinnung von Kurven auf
tritt, ist der Überlauf oder ein Überladen der Register, die
zur Speicherung der ganzzahligen Koeffizientenwerte der para
metrischen kubischen Funktion zur Berechnung der Kurve verwen
det werden. Wenn ein zur Speicherung eines Koeffizienten ver
wendetes Register die Kapazitätsgrenze erreicht und überläuft,
wird natürlich eine genaue Berechnung der parametrischen kubi
schen Funktion unmöglich. Die Erfindung stellt eine besondere
Methode und ein Gerät zur Verhinderung des Auftretens eines
solchen Überlaufens zur Verfügung, wodurch gewährleistet wird,
daß die parametrische kubische Funktion zur Erzeugung der
Kurve fortlaufend genau implementiert wird. Im folgenden wird
dieser Aspekt der Erfindung näher erläutert.
Bei dem beschriebenen Ausführungsbeispiel haben die Register
34 und 50 der Schaltung gemäß Fig. 3 eine Speicherkapazität
von drei ganzzahligen Bits, die zweckmäßigerweise hier mit
a₁, a₂, a₃ und b₁, b₂, b₃ bezeichnet werden.
a₁ und b₁ sind die am höchsten bewerteten ganzzahligen
Bits. Das am höchsten bewertete fraktionelle Bit des Registers
34 wird hier mit a₄ bezeichnet. Da Register 62 den Inhalt
von Register 50 bei einem Vorwärtsschritt akkumuliert, hat es
bei dem beschriebenen Ausführungsbeispiel eine Speicherkapazi
tät von mehr als drei ganzzahligen Bits. Das am höchsten be
wertete ganzzahlige Bit des Registers 62 wird hier als c₁
bezeichnet. Register 34, 50 und 62 sind mit einer Steuerschal
tung 92 in Fig. 7 (eine Detailbeschreibung der Operationswei
se des Pixelfilters 30 und der Steuerschaltung 92 gemäß Fig.
7 wird weiter unten gegeben) innerhalb des Pixelfilters 30
verbunden und geben dorthin Bits aus, die der Steuerschaltung
92 angegeben, daß die ganzzahlige Speicherkapazität der Register
34, 50 und/oder 62 am Überlaufen ist oder möglicherweise mit
der nächsten Berechnung überläuft. Unten sind die Bedingungen
aufgeführt, bei denen Register 34 und 50 ein Bit (hier als
"Warnbit" bezeichnet) ausgeben, das die Steuerschaltung 92 des
Pixelfilters 30 davon unterrichtet, daß das nächste Hochju
stieren bzw. Vergrößern zu einem Überlaufen der ganzzahligen
Speicherkapazität der Register 34 und 50 führt.
Ein Warnbit wird angelegt, wenn:
a₁ ≠ Vorzeichenbit (sb) von Register 34 oder
a₂ ≠ Vorzeichenbit von Register 34 oder
a₃ ≠ Vorzeichenbit von Register 34 oder
a₄ ≠ Vorzeichenbit von Register 34 oder
b₁ ≠ Vorzeichenbit von Register 50 oder
b₂ ≠ Vorzeichenbit von Register 50 oder
b₃ ≠ Vorzeichenbit von Register 50
a₂ ≠ Vorzeichenbit von Register 34 oder
a₃ ≠ Vorzeichenbit von Register 34 oder
a₄ ≠ Vorzeichenbit von Register 34 oder
b₁ ≠ Vorzeichenbit von Register 50 oder
b₂ ≠ Vorzeichenbit von Register 50 oder
b₃ ≠ Vorzeichenbit von Register 50
Das Pixelfilter sendet, wie gesagt, Steuersignale an Multiple
xer 32, 44, 46, 54 und 70, welche jeder AFDU-Schaltung ein
Hochstellen bzw. Vergrößern, Herunterstellen bzw. Verkürzen
oder ein Vorrücken zum nächsten Pixel befehlen. Wenn ein Warn
bit an der Steuerschaltung 92 des Pixelfilters 30 ansteht,
befiehlt das Pixelfilter 30 jeder AFDU-Schaltung, zum nächsten
Pixel vorzurücken (anstelle einer Hochstellung), wenn ein
Hochstellen nach den durch das Pixelfilter 30 durchgeführten
Berechnungen annonciert wird. Ein Herunterstellen bzw. Verkür
zen und Vorwärtsrücken wird durch Anlegen von Warnbits nicht
berührt. Der jeder AFDU-Schaltung erreichende Befehl zum Vor
rücken bewirkt keinen Überlauf der Register 34 und 50, da ein
Vorrücken keine Multiplikation des Koeffizienten "a"-Terms mit
8 oder eine Multiplikation des "b"-Terms mit 4 erforderlich
macht. Die AFDU-Schaltungen werden daher solange vor einem
Hochstellen geschützt, bis die Kurve komplettiert ist oder bis
das Warnbit abgenommen wird.
In ähnlicher Weise wird dasjenige Bit, welches das Pixelfilter
30 darüber unterrichtet, daß die ganzzahlige Speicherkapazität
der Register 34, 50 und 62 mit dem nächsten Hochstell- bzw.
Vergrößerungsschritt oder Vorwärtsschritt überläuft (hier als
"Überlaufbit") bezeichnet, immer dann angelegt, wenn a₁ ≠
Vorzeichenbit von a; b₁ ≠ Vorzeichenbit von b oder c₁ ≠
Vorzeichenbit von c. Wenn das Überlaufbit angelegt ist, be
fiehlt es der Steuerschaltung 92, Steuersignale an die AFDU-
Multiplexer anzulegen, die jeder AFDU-Schaltung ein Herunter
stellen befehlen, und zwar unabhängig davon, ob ein Hochstell-
oder ein Vorrücken von den durch das Pixelfilter 30 durchge
führten Berechnungen indiziert ist. Ein Herunterstellen erlei
chtert das Überlaufproblem in Registern 34, 50 und 62 und
bewirkt dadurch die Unterbrechung des Überlaufbits. Das Vor
zeichenbit von Registern 34, 50 und 62 wird dazu benutzt, das
Warnbit und Überlaufbits anzulegen, wenn der ganzzahlige Teil
der dort gespeicherten Zahl in positiver Richtung zu groß oder
in negativer Richtung zu klein in Zweierkomplementdarstellung
wird.
Für den Fachmann ist verständlich, daß Register, die eine
Speicherkapazität für mehr oder weniger ganzzahlige Werte
haben, anstelle der Register 34 und 50 verwendet werden kön
nen, ohne dadurch von den hier beschriebenen Konzepten der
vorliegenden Erfindung abzuweichen.
Es ist auch verständlich aus der obigen Beschreibung, daß ein
kritisches Problem, das aus bekannten Vorwärtsdifferenzbil
dungsschaltungen erwächst (d. h. Überlauf der die Kurve erzeu
genden Einheiten), mit Hilfe der oben beschriebenen Merkmale
der Erfindung ausgeräumt werden kann.
Die oben beschriebenen Funktionen der AFDU-Schaltung beziehen
sich auf das Zeichnen von Kurven. Fig. 4 zeigt ein verein
fachtes Schaltbild des X-AFDU-Chip 12 (in Fig. 3 gezeigt),
wobei nur die zum Zeichnen von Vektoren verwendeten Komponen
ten dargestellt sind. Fig. 5 ist ein Ablaufdiagramm, das die
Operationsweise der in Fig. 4 gezeigten Schaltung veranschau
licht, wobei als Beispiel die Operation des Zeichnens eines
x-Hauptvektors unter Verwendung des bekannten Bresenham-Algo
rithmus durchgeführt wird.
Wenn die Vektorerzeugung eingeleitet wird, werden die Bresen
ham-Algorithmus-Parameter dx (die Änderung von x), dy (die
Änderung von y), Err (das Bresenham-Fehlerterm), Inc 1 (ein
erstes Inkrement) und Inc 2 (ein zweites Inkrement), die wei
ter unten unter Bezugnahme auf Fig. 5 noch genauer erläutert
werden, von der CPU 9 berechnet. Die CPU 9 lädt Register 34,
38 und 50 mit Inc 1, Inc 2 und Err. Die CPU 9 lädt auch Regi
ster 72 mit dem Vektor-Endpunktwert x₀ und lädt das c-Regi
ster 62 mit dem Wert 0. Die Operation der Schaltung gemäß
Fig. 4 bei der Erzeugung eines x-Hauptvektors in Verbindung
mit dem Ablaufdiagramm gemäß Fig. 5 wird im folgenden erläu
tert.
Eine Bedienungsschaltung 64 gibt ein Bit immer dann aus, wenn
die Vorzeichenbits von Registern 50 und 62 übereinstimmen.
Daher gibt die Schaltung 64 eine 1 als Eingangssignal an den
Addierer 69 nur dann, wenn Register 50 und 62 das gleiche
Vorzeichen haben. Wie gesagt, ist das Vorzeichen des Registers
62 stets 0, da es zum Anfangszeitpunkt mit 0 geladen ist. Die
Schaltung 64 gibt eine 1 an den Addierer 66 immer dann, wenn
das Vorzeichenbit aus dem Register 50 0 ist (d. h. das Err ist
größer als 0). Bei Beginn der Erzeugung eines Vektors befiehlt
die CPU 9 dem Pixelfilter 30, ein Steuersignal an die AFDU-
Schaltungen anzulegen, so daß Multiplexer 44 die Steuerung
für die das Vorzeichenbit-Ausgangssignal des Registers 50
bildet. Wenn das Vorzeichenbit des Registers 50 0 ist, schal
tet der Multiplexer 44 das Ausgangssignal von Register 38
durch. Wenn das Vorzeichenbit von Register 50 1 ist, wählt
Multiplexer 44 das Ausgangssignal des Registers 34.
Im folgenden wird auf Fig. 5 Bezug genommen. Die Bresenham-
Parameter für einen Vektor zwischen den Kurven-Anfangs- und
Endkoordinaten x₀, y₀ und x₁, y₁ werden von der CPU 9
initialisiert, wie im Block 160 der Fig. 5 aufgeführt. Das
Fehlerterm (Err) wird aus der Gleichung Err = -1/2 dx+dy be
rechnet, wobei dx = x₁-x₀ und dy = y₁-y₀. Im Block 162
wird das Pixel mit den aktuellen x und y-Koordinaten (x ge
speichert im Register 72 der Fig. 4 und y gespeichert im
entsprechenden Register der Y-AFDU-Schaltung 14) auf dem CRT-
Display geschrieben. Danach rückt der Ablauf vor zum Schritt
164, wo bestimmt wird, ob Err (Wert im Register 50) größer als
0 ist.
Wenn der Fehler größer oder gleich 0 ist, ist auch das Vorzei
chenbit von Register 50 0, und der Auflauf rückt auf Schritt
168 vor, wo Err durch Addition von Inc 2 zum zuvor berechneten
Err aktualisiert wird. Das Vorzeichenbit von Register 50 steu
ert Multiplexer 44 derart, daß Inc 2 (Eingangssignal am Multi
plexer 44, das im Register 38 gespeichert wird) ausgewählt
wird und danach durch den Addierer/Subtrahierer 45 in das
Register 50 immer dann eingetaktet wird, wenn das Vorzeichen
bit von Register 50 0 ist. Im Block 168 werden die x und
y-Koordinaten in den X und Y-AFDU-Schaltungen durch Addition
von 1 zum Inhalt des Registers 72 in X-AFDU 12 und des ent
sprechenden Registers in der Y-AFDU-Schaltung 14 aktualisiert.
Wie oben beschrieben, wird diese Addition von dem Addierer 66
durchgeführt, der das Ausgangssignal von Schaltung 64 zu dem
vorhergehenden Inhalt von Register 72 nur dann addiert, wenn
das Vorzeichenbit des Registers 62 gleich dem Vorzeichenbit
von Register 50 ist.
Wenn andererseits das Err kleiner als 0 ist, rückt das Ablauf
diagramm zum Schritt 166 vor. In diesem Schritt wird Err so
eingestellt, daß es gleich dem zuvor berechneten Err (ge
speichert im Register 50) + Inc 1 (gespeichert im Register 34)
wird, und x wird um Eins erhöht. (Zu beachten ist: Bei dieser
beispielsweisen Operationsweise wird die y-Koordinate im
Schritt 166 nicht erhöht, da der Addierer in der Y-AFDU-Schal
tung 14 entsprechend dem Addierer 66 den Ausgang von Schaltung
64 (der 0 ist) zum Inhalt des dem Register 72 entsprechenden
Registers in der Y-AFDU-Schaltung 14 addiert).
Inc 2, das im Register 38 gespeichert ist, wird vom Multiple
xer 44 selektiert und zum Inhalt von Register 50 von dem Ad
dierer 45 immer dann addiert, wenn das Err größer oder gleich
0 ist. Wenn das Vorzeichenbit von Register 50 positiv ist,
addiert der Addierer 66 das Ausgangssignal der Schaltung 64
zum Inhalt von Register 72 und taktet sich durch den Multiplexer
70 in das Register 72. Der Ablauf endet beim Schritt 170, wenn
x größer ist als x₁.
Die oben beschriebene Schaltung der Fig. 4 ermöglicht auch
die Erzeugung eines dreidimensionalen Vektors. Wenn
dz<dx<dy, so daß die z-Achse die Hauptachse und die x-Achse
eine Nebenachse ist, findet die Initialisierung von geeigneten
Registern entsprechend den folgenden Bedingungen statt:
Der Rest (residual) von z, hier bezeichnet mit "RESZ", wird
gleich dem ganzzahligen Teil von |dz| / |dx|;
der Rest (remainder) von z, der hier mit remZ bezeichnet wird, wird gleich dem ganzzahligen Teil von |dz| / |dx| gemacht;
der Inhalt des c′-Registers der Z-AFDU-Schaltung (hier be zeichnet als "reg cz") = dem Komplementärwert von RESZ (zu beachten ist: der Komplementärwert von z wird in diesem Falle benutzt, da der Wert von z in der beschriebenen beispielswei sen Operationsweise abnimmt, wenn der Vektor erzeugt wird);
das z Bresenham-Fehlerterm, hier bezeichnet als "ERRZ" = 2* remZ - dx)»1 (wobei "»1" eine Rechtsverschiebung um ein Bit bezeichnet);
Inkrement 1 für die Z-AFDU-Schaltung ("incr 1Z = remZ; incr 2Z = remZ - |dx|;
der Inhalt des d-Registers der Z-AFDU-Schaltung wird gleich dem Anfangswert von Z am Startpunkt des zu erzeugenden Vektors gemacht.
der Rest (remainder) von z, der hier mit remZ bezeichnet wird, wird gleich dem ganzzahligen Teil von |dz| / |dx| gemacht;
der Inhalt des c′-Registers der Z-AFDU-Schaltung (hier be zeichnet als "reg cz") = dem Komplementärwert von RESZ (zu beachten ist: der Komplementärwert von z wird in diesem Falle benutzt, da der Wert von z in der beschriebenen beispielswei sen Operationsweise abnimmt, wenn der Vektor erzeugt wird);
das z Bresenham-Fehlerterm, hier bezeichnet als "ERRZ" = 2* remZ - dx)»1 (wobei "»1" eine Rechtsverschiebung um ein Bit bezeichnet);
Inkrement 1 für die Z-AFDU-Schaltung ("incr 1Z = remZ; incr 2Z = remZ - |dx|;
der Inhalt des d-Registers der Z-AFDU-Schaltung wird gleich dem Anfangswert von Z am Startpunkt des zu erzeugenden Vektors gemacht.
Der Rest (residual) von y, "RESY" = der ganzzahlige Teil von
|dy| |dx| (zu beachten: RESY ist 0 der hier beschrie
benen Beispielsoperation, da dy<dx).
Der Rest (remainder) von y "remY" = der ganzzahlige Rest
von |dy|/ |dx| (zu beachten: remy ist dy in dem Beispiel der
hier beschriebenen Operation, da dy<dx).
Der Inhalt des c′-Registers der Y-AFDU-Schaltung = RESY (zu
beachten: In der hier beschriebenen beispielsweisen Operation
wird y nicht komplementiert, da y bei der Vektorerzeugung
zunimmt).
Der y-Bresenham-Fehler "ERRY" = (2* remY - dx) »1 (wobei "»1"
eine Rechtsverschiebung um 1 Bit bedeutet);
incr 1Y = remY;
incr 2Y = remY - |dx|;
incr 2Y = remY - |dx|;
Der Inhalt des d′-Registers der Y-AFDU-Schaltung wird gleich
dem Anfangswert von y am Startpunkt des zu erzeugenden Vektors
gemacht.
Die Ergebnisse der o. g. Bedingungen werden dann in die ent
sprechenden Z- und Y-AFDU-Schaltungen geladen. Die ERR, incr 1,
incr 2 und c′-Register 62 der X-AFDU-Schaltung werden auf 0
gesetzt, und das d′-Register 72 der X-AFDU-Schaltung wird mit
dem Anfangswert von x am Startpunkt des zu erzeugenden Vektors
geladen.
Während jedes Schrittes bei der Erzeugung des Vektors wird das
c′-Register jeder AFDU-Schaltung zum korrespondierenden d′-Re
gister addiert. Ein zusätzliches Übertragsbit wird ebenfalls
zum geeigneten d′-Register addiert, wenn das Vorzeichenbit des
Fehlers und das Vorzeichenbit des c′-Registers denselben Wert
haben (hier als "Übertragsbedingung" bezeichnet).
Wichtig ist die Feststellung bei der hier beschriebenen bei
spielsweisen Operation, daß eine Übertragsbedingung stets eine
1 an die X-AFDU-Schaltung anlegt, und daher wird der Koordina
tenwert x in der hier beschriebenen Operationsweise stets um 1
inkrementiert. Die Übertragsbedingung in der Y-AFDU-Schaltung
legt eine 1 an, wenn der Bresenham-Fehler positiv ist. In dem
Fall, daß der Bresenham-Fehler in der Z-AFDU-Schaltung kleiner
als 0 ist, legt die Übertragsbedingung eine 1 an, da das Vor
zeichen des c′-Registers 1 ist. Das Vorzeichen des c′-reg in
der Z-AFDU ist 1, da es mit dem Komplementärwert von RESZ
geladen wird. Da die Übertragsbedingung in der Z-AFDU-Schal
tung 1 ist, wird -RESZ zum d′-Register der Z-AFDU-Schaltung
addiert. Wenn das Vorzeichen des Fehlers 0 ist, ist die Über
tragsbedingung 0, und -RESZ-1 wird zum d′-Register der Z-AFDU-
Schaltung hinzuaddiert.
Aus der oben beschriebenen Operationsweise wird klar, daß nach
Wahl der ersten Achse die andere Achse unter Verwendung der
oben beschriebenen Methode berechnet werden kann, und zwar
unabhängig davon, ob die anderen Achsen in der zunehmenden
oder abnehmenden Richtung erzeugt werden, und unabhängig da
von, ob die Änderung entlang der anderen Achse größer oder
kleiner als die Änderung entlang der ersten Achse ist.
Aus der obigen Erörterung wird verständlich, daß beim Zeichnen
von Vektoren die AFDU-Schaltung ein neuartiges Verfahren zum
genauen Implementieren des als solchem bekannten Bresenham-
Algorithmus schafft. Aus der obigen Diskussion wird außerdem
verständlich, daß bei geeigneter Initialisierung die AFDU-
Schaltung auch die bekannte generalisierte Version des Bre
senham-Algorithmus implementieren kann, welche das einer Ide
allinie zwischen den Anfangs- und Endpunkten nächstliegende
Pixel berechnet und trotzdem nur einen Pixelort x, y für jedes
Einheitsinkrement in y erzeugt. Diese generalisierten Versio
nen des Bresenham-Algorithmus werden weiterhin verwendet zum
schrittweisen Vorrücken entlang der Ecke eines Polygons in
Abtastzeilen-Ordnung und bei der Anti-Alias-Vektormethode.
(Verwiesen wird auf Dan Field, "Incremental Linear Interpola
tion", ACM Transactions on Graphics, Band 4, Nr. 1, Januar
1985; Akira Fujimoto und Ko Iwata "Jag Free Images on a Raster
CRT", Computer Graphics Theory and Applications, herausgegeben
von Tosiyasu Kunii im Springer-Verlag, 1983.)
In Fig. 7 ist eine detaillierte Ansicht des Pixelfilters 30
der Fig. 1 gezeigt. Es ist zu beachten, daß beim Zeichnen von
Vektoren das Pixelfilter 30 die Steuerung der AFDU-Schaltungen
zur Durchführung des Bresenham-Algorithmus in der unter Bezug
nahme auf Fig. 4 zuvor beschriebenen Weise überträgt. In
diesem Falle werden die 1/w-Schaltung 18 und die W-AFDU 10
nicht benutzt. Wenn jedoch Kurven gezeichnet werden, steuert
das Pixelfilter 30 die X, Y, Z und W-AFDU-Schaltungen 10, 12,
14 und 16, wie zuvor unter Bezugnahme auf Fig. 3 beschrieben
wurde, um die Verstellungen (Industrierungen) und das Vor
wärtsrücken durchzuführen.
Register 102, 103, 104, 105 und 106 in Fig. 7 speichern Ko
ordinatenwerte x n bis x n+4, welche von der X-AFDU-Schal
tung 12 und dem Multiplizierer 20 (Fig. 1) in fünf aufeinan
derfolgenden vorhergehenden Taktzyklen angelegt werden. In
ähnlicher Weise speichern y-Register 120, 121, 122, 123 und
124 y-Werte y n bis y n+4. Ebenfalls in ähnlicher Weise
speichern Register 134, 135, 136, 137 und 138 z-Werte z n bis
z n+4. Register 148, 149, 152, 154 und 158 sowie Addierer 156
und Komparator 144 arbeiten ebenfalls in Verbindung mit den
zuvor angegebenen Komponenten, wie weiter unten noch erörtert
werden wird.
Register 102-106 speichern nacheinander jede ihnen von der
X-AFDU-Schaltung 12 zugeführte X-Koordinate derart, das x n+4
die zuletzt berechnete Koordinate ist. Bei jedem Taktzyklus
vergleicht der Komparator 94 die Werte x n+3 im Register 105
und x n+4 im Register 106 und Komparator 112 den Wert y n+3
im Register 123 mit y n+4 im Register 124. Wenn der Absolut
wert von x n+4-x n+3 und der Absolutwert von
y n+4-y n+3 beide kleiner als 0,5 eines Einzelpixelin
krements sind, gibt das Steuergerät 92 ein Steuersignal an
alle vier AFDU-Schaltungen und instruiert diese, die Schritt
weite in der zuvor anhand der Fig. 1 bis 3 beschriebenen
Weise zu verlängern (hochzustellen). Wenn der Absolutwert von
x n+4-x n+3 größer als 1 oder der Absolutwert von
y n+4-y n+3 größer als 1 ist, legt das Steuergerät ein
Steuersignal an alle vier AFDU-Schaltungen, das letzteren
befiehlt, die Schrittweite zu verringern (herunterzustellen),
wie dies zuvor unter Bezugnahme auf die Fig. 1 bis 3 erläu
tert worden ist.
Die in Registern 138 und 137 gespeicherten Werte z n+4 und
z n+3 werden nicht dazu benutzt, zu bestimmen, ob die
Schrittweite verlängert oder verkürzt werden soll, da die x
und y-Koordinaten einen Pixelort auf einem CRT-Display aus
reichend genau definieren. Register 138 und 137 arbeiten viel
mehr als Verzögerungspuffer derart, daß Werte z n+2, z n+1
und z n (welche jeweils in Registern 136-134 gespeichert
sind) den Werten von y n+2, y n+1 und y n (gespeichert in
122, 121 bzw. 120) und den Werten x n+2, x n+1 und x n
(gespeichert in Registern 104, 103 und 102) entsprechen.
Wenn alternativ der Absolutwert von x n+4-x n+3 und der
Absolutwert von y n+4-y n+3 beide zwischen 0,5 und 1,0
Pixeleinheiten liegen, so weisen die Komparatoren 94 und 112
die Steuerschaltung 92 an, allen vier AFDU-Schaltungen die
Durchführung einer Vorwärtsschrittoperation in der zuvor be
schriebenen Weise zu befehlen.
Zu beachten ist, daß alle vier AFDU-Schaltungen 10, 12, 14 und
16 der Fig. 1 vom Pixelfilter 30 synchron hoch- oder herun
tergestellt oder vorgerückt werden.
Die Eliminierung von redundanten Pixeln bei einem wiederge
gebenen Bild wird im folgenden beschrieben. Komparator 96 ver
gleicht den Wert x n+2, der im Register 104 gespeichert ist,
mit dem im Register 103 gespeicherten x n+1-Wert. Der Kom
parator 114 vergleicht den im Register 122 gespeicherten Wert
y n+2 mit dem im Register 121 gespeicherten Wert y n+1. Wenn
x n+2=x n+1 und y n+2=y n+1, legen die Komparatoren 96
und 114 Signale an die Steuerschaltung 92 an, die ihrerseits
ein ungültiges Pixelbit an den Zeichnungsabschnitt (paint
section) 150 ausgibt, so daß der Zeichnungsabschnitt 150 die
Modifikationen entsprechend dem Pixel mit den Koordinaten
x n+1 und y n+1 ungültig macht.
Im folgenden wird die Beseitigung von "Ellbogen" (siehe Fig.
6 und 6a) in einem wiedergegebenen Bild beschrieben. Der
Komparator 96 vergleicht den ganzzahligen Teil des Werts
x n+2 im Register 104 mit dem ganzzahligen Teil des Werts
x n im Register 102, und der Komparator 114 vergleicht den
ganzzahligen Teil des Wertes y n+2 im Register 122 mit dem
ganzzahligen Teil des Werts y n im Register 120. Wenn der
Absolutwert von x n+2-x n =1 und der Absolutwert von
y n+2-y n =1 sind, so legen Komparatoren 96 und 114 Signale
an die Steuerschaltung 92, die ihrerseits ein ungültiges Pi
xelbit an den Zeichnungsabschnitt 150 ausgibt, so daß letz
terer 150 dasjenige Pixel nicht zeichnet, dessen Koordinaten
x n+1 und y n+1 entsprechen.
Im folgenden wird die Definition des abzuschneidenden oder zu
kappenden Bereichs auf dem Displayschirm beschrieben. Vorgela
den im Register 100, 118, 132 und 146 sind jeweils x-Minimal-
und Maximalwerte, y-Minimal- und Maximalwerte, z-Minimal- und
Maximalwerte und t-Minimal- und Maximalwerte. Der Komparator
98 ist mit dem Register 103 gekoppelt und vergleicht den Wert
x n+1 mit dem x-Maximal- und Minimalwert. Wenn x n+1 nicht
innerhalb der x-Minimal- und -Maximalwerte liegt, legt der
Komparator 98 ein Steuersignal an die Steuerschaltung 92 an,
die ihrerseits den Zeichnungsabschnitt 150 anweist, die Modi
fizierungen entsprechend dem von der Koordinate x n+1,
y n+1, z n+1, t n+1 definierten Pixel ungültig zu machen,
da das Pixel außerhalb des durch die im Register 100 gespei
cherten x-Minimal- und -Maximalwerte definierten Fensters
liegt. Die gleichen Aktionen laufen bezüglich der im Register
118 gespeicherten y-Minimal- und -Maximalwerte, im Register
132 gespeicherten z-Minimal- und -Maximalwerte und im Register
146 gespeicherten t-Minimal- und -Maximalwerte ab. Wenn daher
y n+1, gespeichert im Register 121, kleiner ist als der y-Mi
nimalwert oder größer als der y-Maximalwert, gespeichert im
Register 118, löst der Komparator 116 ein Steuersignal zur
Steuerung der Schaltung 92 aus, die schließlich die Zeich
nungsabschnittseinrichtung 150 anweist, das Pixel (x n+1,
y n+1, z n+1, t n+1) nicht zu zeichnen. Wenn z n+1, ge
speichert im Register 135, kleiner als ein z-Minimalwert oder
größer als der z-Maximalwert im Register 132 ist, legt in
ähnlicher Weise ein Komparator 130 ein Steuersignal an die
Steuerungsschaltung 92, die ihrerseits den Zeichnungsabschnitt
150 instruiert, das Pixel (x n+1, y n+1, z n+1, t n+1)
nicht zu zeichnen. Wenn schließlich das im Register 150 ge
speicherte t n+1 kleiner ist als der t-Minimalwert oder
größer als der t-Maximalwert, gespeichert im Register 146,
legt Komparator 144 ein Signal an die Steuerschaltung 92 an,
die ihrerseits den Zeichnungsabschnitt 150 anweist, das
Pixel (x n+1, y n+1, z n+1, t n+1) nicht zu zeichnen. Die
in Registern 100, 118, 132 und 146 gespeicherten Minimal- und
Maximalwerte werden von der CPU vorgeladen, um ein gewünschtes
"Fenster" oder einen Abschneidebereich auf dem Bildschirm zu
definieren.
Ein vorberechneter Wert dt, der den a, b, c und d Parametern
(gespeichert in Registern 34, 50, 62 und 72) der zu erzeugen
den Kurve entspricht, wird von der CPU 9 zum Auslösezeitpunkt
berechnet und in Register 158 geladen. t wird zum Initialisie
rungszeitpunkt ein Wert gleich 0 gegeben. Da dt die Parameter-
Schrittgröße darstellt, muß es nach oben oder unten verstellt
werden, um mit den Einstellungen der X, Y, Z und W-AFDU-Schal
tungen zu koinzidieren, die zuvor unter Bezugnahme auf die
Fig. 1 und 3 beschrieben worden sind. Demgemäß wird dt um
ein Bit nach links verschoben, um 2dt am Multiplexer 153 zu
gewinnen, wenn eine Vergrößerung bzw. Hochstellung erforder
lich ist, um dt an eine Hochstellung in den AFDU-Schaltungen
anzupassen. In ähnlicher Weise wird dt um ein Bit nach rechts
verschoben, um dt/2 am Multiplexer 153 zu gewinnen. 2dt oder
dt/2 wird durch geeignete Steuersignale ausgewählt, die von
der Steuerschaltung 92 an den Multiplexer 153 angelegt werden,
um dt den Einstellungen an den X, Y, Z und W-AFDU-Schaltungen
anzupassen. Der Wert dt wird an einen Addierer 156 ausgegeben,
der t hinzuaddiert und die Ergebnisse im Register 154 spei
chert. Das Ausgangsregister 154 wird um einige Taktzyklen in
einem Verzögerungsregister 152 verzögert, damit t n+1 und
t n , die jeweils in Registern 159 bzw. 148 gespeichert sind,
zeitlich mit Werten x n+1, x n , y n+1, y n , z n+1 und z n
zusammenfallen. Dadurch wird der Wert t n =1 für den Kompa
rator 144 ein geeigneter Wert zum Vergleichen mit den Werten
t min und t max .
Claims (8)
1. Einrichtung zur Erzeugung von Vektoren auf einem Display
gerät mit einer Vielzahl von Displayelementen,
gekennzeichnet durch
Mittel zur Aufnahme von Bresenham-Parametern, die einen idealen Vektor zwischen Displayelement-Anfangs- und -Endkoor dinaten x₁, y₁ und x₀, y₀ definieren;
Mittel zum kontinuierlichen Aktualisieren des Bresenham- Fehlers zwischen jeder Koordinate des idealen Vektors und der entsprechenden Koordinate des erzeugten Vektors; und
Mittel zum Einstellen der Inkrementierung des erzeugten Vektors entsprechend dem aktualisierten Bresenham-Fehler.
Mittel zur Aufnahme von Bresenham-Parametern, die einen idealen Vektor zwischen Displayelement-Anfangs- und -Endkoor dinaten x₁, y₁ und x₀, y₀ definieren;
Mittel zum kontinuierlichen Aktualisieren des Bresenham- Fehlers zwischen jeder Koordinate des idealen Vektors und der entsprechenden Koordinate des erzeugten Vektors; und
Mittel zum Einstellen der Inkrementierung des erzeugten Vektors entsprechend dem aktualisierten Bresenham-Fehler.
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß
der Bresenham-Fehler initialisiert wird als das 1/2-fache der
Änderung der Hauptkoordinate plus der Änderung der Nebenkoor
dinate des idealen Vektors.
3. Einrichtung nach Anspruch 1 oder 2, dadurch gekennzeich
net, daß die Einrichtung ferner aufweist: Mittel zum Zeichnen
momentaner Koordinaten des zu erzeugenden Vektors; Mittel, um
festzustellen, ob der Fehler an jeder der momentanen Koordina
ten größer oder gleich Null oder mehr ist; Mittel zum Aktuali
sieren des Bresenham-Fehlers durch Addition eines ersten vor
gegebenen Inkrements zu dem Fehler und zum Inkrementieren der
Haupt- und Nebenkoordinaten um einen vorgegebenen Wert, wenn
der Bresenham-Fehler größer oder gleich Null ist, und Mittel
zum Aktualisieren des Bresenham-Fehlers durch Addition eines
zweiten vorgegebenen Inkrements zum Bresenham-Fehler, wodurch
ein zweiter aktualisierter Bresenham-Fehler gewonnen wird und
die Hauptkoordinate um einen vorgegebenen Wert inkrementiert
wird, wenn der Bresenham-Fehler kleiner als Null ist.
4. Einrichtung nach einem der Ansprüche 1 bis 3, dadurch
gekennzeichnet, daß die Mittel zur Einstellung der Inkremen
tierung des zu erzeugenden Vektors ein Mittel zum inkrementel
len Erzeugen von Kurven und gekrümmten Flächen aufweisen.
5. Verfahren zur Erzeugung von Vektoren auf einem Display
gerät mit einer Vielzahl von Displayelementen,
dadurch gekennzeichnet,
daß Bresenham-Parameter, die einen idealen Vektor zwi schen Displayelement-Anfangs- und Endkoordinaten x₁, y₁ und x₀, y₀ definieren, aufgenommen werden;
daß der Bresenham-Fehler zwischen jeder Koordinate des idealen Vektors und der entsprechenden Koordinate des zu er zeugenden Vektors kontinuierlich aktualisiert wird; und
daß die Inkrementierung des zu erzeugenden Vektors nach dem aktualisierten Bresenham-Fehler eingestellt wird.
daß Bresenham-Parameter, die einen idealen Vektor zwi schen Displayelement-Anfangs- und Endkoordinaten x₁, y₁ und x₀, y₀ definieren, aufgenommen werden;
daß der Bresenham-Fehler zwischen jeder Koordinate des idealen Vektors und der entsprechenden Koordinate des zu er zeugenden Vektors kontinuierlich aktualisiert wird; und
daß die Inkrementierung des zu erzeugenden Vektors nach dem aktualisierten Bresenham-Fehler eingestellt wird.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß
der Bresenham-Fehler initialisiert wird als das 1/2-fache der
Änderung der Hauptkoordinate plus dem 1/2-fachen der Änderung
der Nebenkoordinate des idealen Vektors.
7. Verfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet,
daß die momentanen Koordinaten des zu erzeugenden Vektors
gezeichnet werden, daß bestimmt wird, ob der Bresenham-Fehler
größer oder gleich Null ist oder nicht, daß der Bresenham-Feh
ler durch Addition eines ersten vorgegebenen Inkrements zu dem
Bresenham-Fehler aktualisiert wird, wodurch ein erster aktua
lisierter Bresenham-Fehler gewonnen wird und die Haupt- und
Nebenkoordinaten um einen vorgegebenen Wert inkrementiert
werden, daß bei einem Bresenham-Fehler größer als oder gleich
Null der Bresenham-Fehler durch Addition eines ersten vorgege
benen Inkrements aktualisiert wird, daß andererseits bei einem
Bresenham-Fehler kleiner als Null die Haupt- und Nebenkoor
dinaten um ein vorgegebenes Inkrement inkrementiert werden und
der Bresenham-Fehler durch Addition eines zweiten vorgegebenen
Inkrements zu dem Bresenham-Fehler aktualisiert und die Haupt
koordinate um einen vorgegebenen Wert inkrementiert wird.
8. Einrichtung zur Erzeugung von Vektoren auf einem Display
gerät mit einer Vielzahl von Displayelementen,
gekennzeichnet durch
Mittel zur Aufnahme von Bresenham-Parametern, die einen idealen Vektor zwischen Displayelement-Anfangs- und -Endkoor dinaten x₀, y₀ und x₁, y₁ definieren;
Mittel zum kontinuierlichen Aktualisieren des Bresenham- Fehlers zwischen jeder Koordinate des idealen Vektors und der entsprechenden Koordinate des erzeugten Vektors; und
Mittel zum Inkrementieren des zu erzeugenden Vektors entsprechend dem aktualisierten Bresenham-Fehler, wobei das Mittel zum Inkrementieren des Vektors auch Mittel zum schritt weisen Erzeugen von Kurven mit praktisch gleichmäßigen Dis playelement-Schritten aufweist.
Mittel zur Aufnahme von Bresenham-Parametern, die einen idealen Vektor zwischen Displayelement-Anfangs- und -Endkoor dinaten x₀, y₀ und x₁, y₁ definieren;
Mittel zum kontinuierlichen Aktualisieren des Bresenham- Fehlers zwischen jeder Koordinate des idealen Vektors und der entsprechenden Koordinate des erzeugten Vektors; und
Mittel zum Inkrementieren des zu erzeugenden Vektors entsprechend dem aktualisierten Bresenham-Fehler, wobei das Mittel zum Inkrementieren des Vektors auch Mittel zum schritt weisen Erzeugen von Kurven mit praktisch gleichmäßigen Dis playelement-Schritten aufweist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/047,693 US4855935A (en) | 1987-05-08 | 1987-05-08 | Method and apparatus for rendering vectors using bresenham parameters |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3815361A1 true DE3815361A1 (de) | 1988-11-24 |
DE3815361C2 DE3815361C2 (de) | 1997-07-17 |
Family
ID=21950409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3815361A Expired - Fee Related DE3815361C2 (de) | 1987-05-08 | 1988-05-05 | Schaltungsanordnung zum Erzeugen von Kurven oder Vektoren zur Wiedergabe auf einer Anzeigeeinrichtung und Verfahren zum Wiedergeben solcher Kurven oder Vektoren auf einer Anzeigeeinrichtung |
Country Status (8)
Country | Link |
---|---|
US (1) | US4855935A (de) |
JP (1) | JP2777891B2 (de) |
CA (1) | CA1302597C (de) |
DE (1) | DE3815361C2 (de) |
FR (1) | FR2615020B1 (de) |
GB (1) | GB2204469B (de) |
HK (1) | HK90992A (de) |
SG (1) | SG39492G (de) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2752975B2 (ja) * | 1987-09-25 | 1998-05-18 | 株式会社東芝 | 3次曲線プロット方法 |
US4988984A (en) * | 1988-10-31 | 1991-01-29 | International Business Machines Corporation | Image interpolator for an image display system |
US5179647A (en) * | 1989-01-09 | 1993-01-12 | Sun Microsystem, Inc. | Method and apparatus for implementing adaptive forward differencing using integer arithmetic |
GB2228597A (en) * | 1989-02-27 | 1990-08-29 | Ibm | Data processor with conditional instructions |
US5317682A (en) * | 1989-10-24 | 1994-05-31 | International Business Machines Corporation | Parametric curve evaluation method and apparatus for a computer graphics display system |
JPH0776991B2 (ja) * | 1989-10-24 | 1995-08-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Nurbsデータ変換方法及び装置 |
GB9003922D0 (en) * | 1990-02-21 | 1990-04-18 | Crosfield Electronics Ltd | Image display apparatus and method |
US5408598A (en) * | 1991-05-23 | 1995-04-18 | International Business Machines Corporation | Method for fast generation of parametric curves employing a pre-calculated number of line segments in accordance with a determined error threshold |
US5276790A (en) * | 1991-07-12 | 1994-01-04 | Destiny Technology Corporation | Fast vertical scan-conversion and filling method and apparatus for outline font character generation in dot matrix devices |
JPH0589251A (ja) * | 1991-07-12 | 1993-04-09 | Sony Corp | 画像の描画装置 |
US5428728A (en) * | 1991-09-30 | 1995-06-27 | Destiny Technology Corporation | Method and apparatus for outline font character generation in dot matrix devices |
US5355449A (en) * | 1991-09-30 | 1994-10-11 | Destiny Technology Corporation | Method and apparatus for outline font character generation in dot matrix devices |
US5325477A (en) * | 1991-12-02 | 1994-06-28 | Xerox Corporation | Method and apparatus for generating and displaying freeform strokes |
US5592599A (en) * | 1991-12-18 | 1997-01-07 | Ampex Corporation | Video special effects system with graphical operator interface |
US5341467A (en) * | 1991-12-30 | 1994-08-23 | Xerox Corporation | Method and apparatus for generating and displaying freeform strokes of varying or constant width using adaptive forward differencing |
US5613053A (en) | 1992-01-21 | 1997-03-18 | Compaq Computer Corporation | Video graphics controller with automatic starting for line draws |
EP0623232B1 (de) * | 1992-01-21 | 1996-04-17 | Compaq Computer Corporation | Graphische videokontrolleinheit mit verbesserten rechenfaehigkeiten |
US5333250A (en) * | 1992-06-22 | 1994-07-26 | International Business Machines Corporation | Method and apparatus for drawing antialiased lines on a raster display |
US5297244A (en) * | 1992-09-22 | 1994-03-22 | International Business Machines Corporation | Method and system for double error antialiasing in a computer display system |
US5488698A (en) * | 1992-11-05 | 1996-01-30 | Oliver; David C. | Rasterization of line segments using difference vectors |
US5739820A (en) * | 1992-11-19 | 1998-04-14 | Apple Computer Inc. | Method and apparatus for specular reflection shading of computer graphic images |
US5969699A (en) * | 1996-10-08 | 1999-10-19 | Kaiser Aerospace & Electronics Company | Stroke-to-stroke |
US6674435B1 (en) * | 1998-09-16 | 2004-01-06 | Texas Instruments Incorporated | Fast, symmetric, integer bezier curve to polygon conversion |
US7006094B2 (en) | 2002-04-24 | 2006-02-28 | Seiko Epson Corporation | Method and apparatus for filling an image on a display screen |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3508606A1 (de) * | 1984-03-12 | 1985-09-12 | Daikin Industries, Ltd., Osaka | Hochgeschwindigkeits-linearinterpolationsschal tung einer katodenstrahlroehren-display-einheit |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2479622B1 (fr) * | 1980-03-28 | 1985-08-23 | Sfena | Procede de lissage des courbes generees par balayage de television |
US4386349A (en) * | 1981-04-28 | 1983-05-31 | Sperry Corporation | High resolution graphics smoothing |
JPS59149541A (ja) * | 1983-01-28 | 1984-08-27 | Toshiba Corp | 処理条件コード生成/設定方式 |
US4586037A (en) * | 1983-03-07 | 1986-04-29 | Tektronix, Inc. | Raster display smooth line generation |
EP0145821B1 (de) * | 1983-12-22 | 1988-05-11 | International Business Machines Corporation | Einrichtung zum Füllen von Flächen für einen Rasterbildspeicher für graphische Farbbilder |
US4648049A (en) * | 1984-05-07 | 1987-03-03 | Advanced Micro Devices, Inc. | Rapid graphics bit mapping circuit and method |
US4677573A (en) * | 1984-05-15 | 1987-06-30 | International Business Machines Corporation | Hardware generation of styled vectors in a graphics system |
US4736330A (en) * | 1984-09-04 | 1988-04-05 | Capowski Joseph J | Computer graphics display processor for generating dynamic refreshed vector images |
US4660028A (en) * | 1984-11-01 | 1987-04-21 | Microtel Limited | Stroke-vector character generator |
-
1987
- 1987-05-08 US US07/047,693 patent/US4855935A/en not_active Expired - Lifetime
-
1988
- 1988-04-28 GB GB8810146A patent/GB2204469B/en not_active Expired - Fee Related
- 1988-05-05 DE DE3815361A patent/DE3815361C2/de not_active Expired - Fee Related
- 1988-05-06 FR FR8806126A patent/FR2615020B1/fr not_active Expired - Fee Related
- 1988-05-06 CA CA000566228A patent/CA1302597C/en not_active Expired - Fee Related
- 1988-05-09 JP JP63110641A patent/JP2777891B2/ja not_active Expired - Lifetime
-
1992
- 1992-04-08 SG SG394/92A patent/SG39492G/en unknown
- 1992-11-19 HK HK909/92A patent/HK90992A/xx not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3508606A1 (de) * | 1984-03-12 | 1985-09-12 | Daikin Industries, Ltd., Osaka | Hochgeschwindigkeits-linearinterpolationsschal tung einer katodenstrahlroehren-display-einheit |
Non-Patent Citations (5)
Title |
---|
BISHOP, G. und WEIMER, J.: "Fast Phong Shading", in Computer Graphics, Bd. 20, Nr. 4, August 1986, S. 103-106 * |
FOLEY, J.D. und DAM, A. van: 1983 in Fundamentals of Interactive Computer Graphics, Addison Wesley, Reading, MA. * |
GOURAUD, H.: Juni 1971 "Continuous Shading of Curved Surfaces" in IEEE Transactions on Compu- ters, Bd. 20, Nr. 6, S. 623-628 * |
IBM Technical Disclosure Bulletin, Vol. 26, No., 7B, Dec. 1983, S. 3758-3761 * |
SWANSON, R. und THAYER, L.: "A Fast Shaded-Poly- gon Renderer" in Computer Graphics, Bd. 20, Nr. 4,S. 95-101, Aug. 1986 * |
Also Published As
Publication number | Publication date |
---|---|
GB8810146D0 (en) | 1988-06-02 |
HK90992A (en) | 1992-11-27 |
JP2777891B2 (ja) | 1998-07-23 |
GB2204469B (en) | 1991-11-06 |
US4855935A (en) | 1989-08-08 |
FR2615020A1 (fr) | 1988-11-10 |
CA1302597C (en) | 1992-06-02 |
DE3815361C2 (de) | 1997-07-17 |
GB2204469A (en) | 1988-11-09 |
JPS6441078A (en) | 1989-02-13 |
SG39492G (en) | 1992-06-12 |
FR2615020B1 (fr) | 1994-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3815361C2 (de) | Schaltungsanordnung zum Erzeugen von Kurven oder Vektoren zur Wiedergabe auf einer Anzeigeeinrichtung und Verfahren zum Wiedergeben solcher Kurven oder Vektoren auf einer Anzeigeeinrichtung | |
DE3750784T2 (de) | Generation eines intrapolierten charakteristischen Wertes zur Anzeige. | |
DE19646194B4 (de) | Echtzeit-Wiedergabeverfahren zum wahlweisen Ausführen von Bump-Mapping- und Phong-Schattierungs-Prozessen und zugehörige Vorrichtung | |
DE3855214T2 (de) | Paralleles Flächenverarbeitungssystem für graphische Anzeigen | |
DE3036770C1 (de) | Verfahren zur Schätzung der Verschiebung und/oder Geschwindigkeit von Objekten in Video-Szenen | |
DE68925399T2 (de) | Verfahren und Gerät zur Bildtransformation | |
DE2703021A1 (de) | Datenprozessor zum liefern von intensitaetssteuersignalen zur verwendung in einer rasteranzeige | |
DE102018130084A1 (de) | Dynamische Quantisierung neuronaler Netzwerke | |
DE4314265A1 (de) | Dreidimensionales Textur-Abbildungs-Displaysystem | |
DE3815374C2 (de) | Verfahren zum Ableiten eines Reziprokwerts der homogenen Koordinate w zur Verwendung bei der Gewinnung von rationalen kubischen Funktionen für die Bilderzeugung auf einem Sichtgerät und Anordnung zur Durchführung des Verfahrens | |
DE3875467T2 (de) | Geraet zur erzeugung eines zweidimensional farbanzeige. | |
DE3851644T2 (de) | Graphischer Anzeigeregler mit Begrenzungsfunktion. | |
DE3022454A1 (de) | Optisches abbildesystem mit computererzeugtem bild fuer einen bodenfesten flugsimulator | |
DE3515037C2 (de) | ||
DE3815390C2 (de) | Vorwärtsdifferenzbildungsanordnung zum Erzeugen von Kurven auf einer grafischen Anzeigeeinrichtung und Verfahren zum Erzeugen von Pixelkoordinaten zum Darstellen solcher Kurven auf einer Anzeigeeinrichtung | |
DE68923560T2 (de) | Ablenkkorrektursystem mit Speicherabbildung. | |
DE69921608T2 (de) | Verfahren und vorrichtung zum zoomen von digitalen bilddateien | |
DE3853511T2 (de) | Mehrbildelementgenerator. | |
DE4215094C2 (de) | Bildverarbeitungsverfahren und -vorrichtung | |
DE602004010628T2 (de) | Dreieck-rendering unter verwendung von direkter evaluierung | |
DE68926952T2 (de) | Verfahren zur Ausführung von interaktiven Bildverarbeitungsoperationen auf grossen Bildern | |
DE3915037A1 (de) | Mustergenerator | |
DE69032367T2 (de) | Schattierungsverfahren und -gerät in einem Grafikrechner | |
DE3825539C2 (de) | Einrichtung u. Verfahren zum Erzeugen schattierter Werte von graphischen Objekten auf einer Anzeigeeinrichtung | |
DE10221389A1 (de) | Verfahren zur Ermittlung eines Pixelwertes eines Pixel aufweisenden Bildes, Gewichtungsmatrix und Recheneinrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8125 | Change of the main classification |
Ipc: G09G 5/24 |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |