DE3815374A1 - Anordnung und verfahren zur gewinnung einer approximation des reziprokwerts der homogenen koordinate w zur definition von bildern auf einem display - Google Patents
Anordnung und verfahren zur gewinnung einer approximation des reziprokwerts der homogenen koordinate w zur definition von bildern auf einem displayInfo
- Publication number
- DE3815374A1 DE3815374A1 DE3815374A DE3815374A DE3815374A1 DE 3815374 A1 DE3815374 A1 DE 3815374A1 DE 3815374 A DE3815374 A DE 3815374A DE 3815374 A DE3815374 A DE 3815374A DE 3815374 A1 DE3815374 A1 DE 3815374A1
- Authority
- DE
- Germany
- Prior art keywords
- value
- coordinate
- approximation
- reciprocal
- homogeneous 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
- G06F1/035—Reduction of table size
- G06F1/0356—Reduction of table size by using two or more smaller tables, e.g. addressed by parts of the argument
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/203—Drawing of straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2101/00—Indexing scheme relating to the type of digital function generated
- G06F2101/12—Reciprocal functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5354—Using table lookup, e.g. for digit selection in division by digit recurrence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5356—Via reciprocal, i.e. calculate reciprocal only, or calculate reciprocal first and then the quotient from the reciprocal and the numerator
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Image Generation (AREA)
Description
Die Erfindung bezieht sich auf ein Verfahren und eine Einrichtung
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 übertragen.
Diese Bilder können viele Formen annehmen, beispielsweise
alphanumerische Zeichen, kartesische Graphiken und andere
Bilddarstellungen. Bei vielen Anwendungen werden die digitalen
Bilder auf einem Display, z. B. einem Rasterabtast-Videomonitor,
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 werden.
Seitdem Hochgeschwindigkeitshardware bekannt ist, die
Vektoren und Polygone zu erzeugen vermag, erfolgt die Hochgeschwindigkeitserzeugung
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öherer
Ordnung verwenden bekannte Systeme jedoch rekursive Unterteilungsmethoden,
deren Implementierung in Cumputerhardware
wegen der Hochgeschwindigkeitsstapelspeicheranforderung teuer
ist.
Die Erfindung verwendet eine adaptive Vorwärtsdifferenz
("AFD")-Methode, welche die mit dem Stande der Technik
verbundenen Probleme überwindet und nur relativ einfache und
preiswerte Schaltungen unter Verwendung gewöhnlicher Vorwärtsdifferenzbindung
(forward differencing) benötigt (Bewegung
entlang einer parametrischen 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 "Einzelpixel"-
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 komplizierten
bekannten Stapelspeicherschaltung bedingt und daher einfacher
und effizienter ist. Außerdem ist die Erzeugung (rendering)
der Kurve, der gekrümmten Fläche oder des Objekts bei
der Erfindung genauer als bei der Erzeugung mit einer bekannten,
üblicherweise verwendeten Vorwärtsdifferenzbildungsmethode
mit stückweise geradliniger oder planarer Polygonapproximation.
Die Erfindung überwindet die Schwierigkeiten und Nachteile
bekannter Methoden durch ein adaptives Vorwärtsdifferenzbildungsgerät
zur Erzeugung einer Kurve auf einem Display (beispielsweise
einer CRT) durch Betätigung von Displayelementen,
welche die Kurve definieren. Das erfindungsgemäße Gerät enthält
eine Einrichtung zur Aufnahme einer Vielzahl von für die
Displayelemente repräsentativen Datenpunkten, welche die Bilder
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 adaptive
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-Schaltung
gekoppelt, welche den Reziprokwert 1/w der homogenen
Koordinate w erzeugt. Das Ausgangsmaterial der 1/w-Schaltung
wird mit den x, y, z-Koordinaten multipliziert, um die rationalen
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 erfindungsgemäße
AFD-Methode implementiert, indem die x, y, z und w-kubischen
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 Weiterbildung
der Erfindung sin auch eine Einrichtung zum Definieren
von Abschneidezonen (clipping regions) auf einem CRT-
Display, eine Einrichtung zum Abbilden von imaginären Strukturen
(imagery) auf gekrümmten Flächen und auf Kurven und eine
Einrichtung zur Schattenbildung (shading) und Trimmen gekrümmter
Flächen vorgesehen. Andere Merkmale und Vorteile der Erfindung
ergeben sich aus der nachfolgenden Figurenbeschreibung.
In der Zeichnung zeigen:
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 graphischen
Wiedergabe von Bildern, deren bevorzugtes Anwendungsgebiet
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 Erleichterung
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 anderen
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, gekrümmte
Fläche, den Vektor oder das wiederzugebende Bild definieren.
Es ist bekannt, daß der Ort jedes auf einer CRT wiederzugebenden
Punktes häufig durch in einer Speichervorrichtung
gespeicherte Digitalwerte dargestellt wird, die x, y, z
und w homogenen Koordinaten entsprechen.
Die Koeffizienten der Gleichungen, welche die von der Schaltung
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ärtsdifferenzbildungseinheit
("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 übertragen,
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 Multiplizierern
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-Pixelkoordinaten,
welche dem Pixelfilter 30 einen Taktzyklus zuvor zugefü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
Farbwerts 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 bezeichnen. Der Bogenlängenwert dient zum Zeichnen
von strukturierten (textured), beispielsweise gestrichelten,
gepunkteten usw. Linien und Flächen. Das Zeichnen von gestrichelten
Linien und Oberflächen bildet jedoch keinen wesentlichen
Teil der hier beschriebenen und beanspruchten Erfindung,
so daß eine genauere Erläuterung hierzu nicht erforderlich
ist.
In Fig. 2 ist eine ausführliche 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 Reziprokwerts
von w den Vorteil, daß sie den Reziprokwert von w rascher,
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 Iterationsberechnung,
wodurch die Latenz im Vergleich zu bekannten Methoden
wesentlich verringert wird (zu bekannten Methoden zur
Teilung mittels Divisor-Reziprokbildung wird verwiesen auf:
"Computer Arithmetic", Kai Hwang, Seiten 259-264, John Wiley
& Sons, New York, N. Y., 1979). Um die oben beschriebenen überlegenen
Ergebnisse zu erzielen, benutzt die Erfindung eine
abgebrochene Taylorreihenannäherung unter Verwendung von zwei
kleinen Nachschlagetabellen 76 und 78 (d. h. bei dem bevorzugten
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 Ableitung
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 niedrigsten
bewerteten Bits des w-Werts darstellen. Es wurde festgestellt,
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 Gewinnung
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 eingegeben
wurde. In ähnlicher Weise gibt die Nachschlagetabelle 78
einen (1/w₀)²-Wert entsprechend den 13 am höchsten bewerteten
eingegebenen Bits an das Register 82 aus. Die 8 am niedrigsten
bewerteten Bits des 21-Bit-w-Werts werden einem 8-Bit-
Verzögerungsregister 84 zugeführt. Letzteres verzögert lediglich
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 niedrigsten
bewerteten Bis (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ögerungsschaltungen
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 Subtraktionseinrichtung
89 und damit zum Register 90 in nur einem
Taktzyklus übertragen.
Es wurde gefunden, daß der Fehler bei der oben beschriebenen
Approximation von 1/w am größten ist, wenn w₀ klein und d
groß ist (unter der Annahme, daß w stets positiv ist). Insbesondere
ist der Fehler über das w-Intervall von 0,25 bis 1,0
am größten, wenn w = 0,25 und wenn d auf dem Maximalwert ist.
Bei der Berechnung einer Annäherung von 1/w gefundene
Fehler kann dadurch reduziert werden, daß man gewisse Werte,
die durch die folgenden Gleichungen beschrieben sind, in Nachschlagetabellen
76 und 78 speichert. Diese Werte sind:
für Nachschlagetabelle 76:
1/w₀-[0,5/(w₀+d max )+0,5/w₀-{w₀(w₀+d max )}²(-1/2)]; und
1/w₀-[0,5/(w₀+d max )+0,5/w₀-{w₀(w₀+d max )}²(-1/2)]; und
für Nachschlagetabelle 78:
(1/(w₀+d max )-1/w₀)/[w₀+d max )-w₀] = -1/w₀(w₀+d max )
(1/(w₀+d max )-1/w₀)/[w₀+d max )-w₀] = -1/w₀(w₀+d max )
Hierbei ist d max die Differenz zwischen einem Wert von w₀
und dem nächstgrößten Wert von w₀.
Da es außerdem nicht erwünscht ist, 1/w für w-Werte zu berechnen,
wenn die beiden am höchsten bewerteten Bits "00" sind, wird
ein Teil der Speicherkapazität jeder Nachschlagetabelle nicht
gebraucht. Auch in der Praxis wurde gefunden, daß der Fehler
größer wird, wenn die am höchsten bewerteten beiden Bits "01"
sind.
Wenn das am höchsten bewertete Bit von w "1" ist, wird die
zuerst beschriebene Methode zum Ableiten einer Approximation
von 1/w verwendet.
Umgekehrt, wenn die beiden am höchsten bewerteten Bits von w
"01" sind, ist diejenige Adresse, welche zu den beiden Nachschlagetabellen
geschickt wird, die Verkettung des höchsten
Bits von w und des dritthöchsten Bits bis zum vierzehnthöchsten
Bit von w. Im letzteren Falle werden die sieben am niedrigsten
bewerteten Bits von w für d verwendet. Diese Technik
halbiert das von einer Eingabe in die Nachschlagetabelle abgedeckte
Intervall, wenn die beiden am höchsten bewerteten Bits
von w "01" sind. Es leuchtet ein, daß auch der Approximationsfehler
verringert wird, da die Maximalgröße von d reduziert
ist.
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 Berechnungen
vermieden werden, welche bei den eingangs beschriebenen
bekannten Einrichtungen erforderlich waren, wodurch die Geschwindigkeit
bei der Berechnung von 1/w erhöht wird. 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 Schaltung
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 hergestellt 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 kubische
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 voneinander
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ärtsdifferenz-
Basisfunktionen B₃, B₂, B₁ und B₀ sind unten
aufgeführt:
B₁(t) = t (4)
B₀(t) = 1 (5)
Die obengenannten 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 beschreiben,
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′ aktualisiert,
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-Display
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), wordurch die x, y-Inkremente reduziert
werden, so daß bei jedem Taktzyklus jede AFDU-Schaltung Koordinaten
ausgibt, welche Pixel entlang der Kurve im wesentlichen
entsprechend Einzelpixelinkrementen definieren. Wenn der
x, y-Adreßschritt kleiner als ½ Pixel-Inkrement entfernt vom
zuvor definierten Pixel ist, so wird dt verdoppelt (hochgestellt)
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 reduzieren,
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 Funktionen
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 Funktionen
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 benutzt
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 Inkrement
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 Steuersignale
an Multiplexer 32, 44, 46, 54, 56 und 70. Dadurch wird
ein geeigneter Eingang jeweils in Addier/Substrahierschaltungen
45, 58 und 66 ausgewählt. Die Multiplexer selektieren die
geeigneten transformierten Werte für die a′, b′, c′ und d′-Koeffizienten.
Wie gesagt, werden die Werte a, b, c und d anfänglich
von der CPU 9 in Register 34, 50, 62 und 72 geladen.
Neue Koeffizientenwerte entsprechend der gewünschten Pixelstelle
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 definierten
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ß Multiplexer
32 A/8, Multiplexer 4 A/8, Multiplexer 46 B/4, Multiplexer
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, Multiplexer
44 0, Multiplexer 46 b, Multiplexer 56 b/2 und Multiplexer
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 Pixelinkrement
kleiner als 0,5 eines Pixelschritts ist, werden die Koeffizienten
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 Multiplexer
32, 44, 46, 54, 56 und 70 angelegt, so daß die 8a, 4a, 4b
und 2c in die entsprechenden Register in Verbindung mit Addierer/
Substrahierer 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 ausgewä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ändert
bleibt. Es ist verständlich, daß nur die Ausgangssignale
aus den AFDU-Schaltungen X, Y und W vom Pixelfilter zur Steuerung
der Nachstellung aller vier AFDU-Schaltungen benutzt
werden, da die x/w und y/w-Koordinaten den Pixelort ausreichend
definieren. Auf diese Weise stellen die AFDU-Schaltungen
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 Pixelfilter-
Steuersignal verwendet werden. Dies ist notwendig, da das
Pixelfilter 30 Steuerentscheidungen einige Takte nach der
Erzeugung der Pixeladressen durch die AFDU trifft. Speicherpuffer
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 vorliegenden
Erfindung beschrieben.
Ein kritisches Problem, das typischerweise bei bekannten Vorwärtsdifferenzbildungsmethoden
zur Gewinnung von Kurven auftritt,
ist der Überlauf oder ein Überladen der Register, die
zur Speicherung der ganzzahligen Koeffizientenwerte der parametrischen
kubischen Funktion zur Berechnung der Kurve verwendet
werden. Wenn ein zur Speicherung eines Koeffizienten verwendetes
Register die Kapazitätsgrenze erreicht und überläuft,
wird natürlich eine genaue Berechnung der parametrischen kubischen
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₂ und 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 Speicherkapazität
von mehr als drei ganzzahligen Bits. Das am höchsten bewertete
ganzzahlige Bit des Registers 62 wird hier als c₁
bezeichnet. Register 34, 50 und 62 sind mit einer Steuerschaltung
92 in Fig. 7 (eine Detailbeschreibung der Operationsweise
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 angeben, 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 Hochjustieren
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 Multiplexer
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 Warnbit
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ürzen
und Vorwärtsrücken werden durch Anlegen von Warnbits nicht
berührt. Der jede AFDU-Schaltung erreichende Befehl zum Vorrü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 dem
Hochstellen geschützt, bis die Kurve kompletiert 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, befiehlt
es der Steuerschaltung 92, Steuersignale an die AFDU-
Multiplexer anzulegen, die jeder AFDU-Schaltung ein Herunterstellen
befehlen, und zwar unabhängig davon, ob ein Hochstellen
oder ein Vorrücken von den durch das Pixelfilter 30 durchgeführten
Berechnungen indiziert ist. Ein Herunterstellen erleichtert
das Überlaufproblem in Registern 34, 50 und 62 und
bewirkt dadurch die Unterbrechung des Überlaufbits. Das Vorzeichenbit
von Registern 34, 50 und 62 wird dazu benutzt, das
Warnbit und Überlaufbit 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 es 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önnen,
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ärtsdifferenzbildungsschaltungen
erwächst (d. h. Überlauf der die Kurve erzeugenden
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 vereinfachtes
Schaltbild des X-AFDU-Chip 12 (in Fig. 3 gezeigt),
wobei nur die zum Zeichnen von Vektoren verwendeten Komponenten
dargestellt sind. Fig. 5 ist ein Ablaufdiagramm, das die
Operationsweise der in Fig. 4 gezeigten Schaltung veranschaulicht,
wobei als Beispiel die Operation des Zeichnens eines
x-Hauptvektors unter Verwendung des bekannten Bresenham-Algorithmus
durchgeführt wird.
Wenn die Vektorerzeugung eingeleitet wird, werden die Bresenham-
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 weiter
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 Register
72 mit dem Vektor-Endpunktwert x₀ und lädt das c-Register
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 näher erläutert.
Eine Bedingungsschaltung 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, schaltet
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 = -½ dx+dy berechnet,
wobei dx = x₁-x₀ und dy = y₁-y₀. Im Block 162
wird das Pixel mit den aktuellen x und y-Koordinaten (x gespeichert
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 Vorzeichenbit
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 steuert
Multiplexer 44 derart, daß Inc 2 (Eingangssignal am Multiplexer
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 Vorzeichenbit
von Register 50 Null 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 entsprechenden
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 Ablaufdiagramm
zum Schritt 166 vor. In diesem Schritt wird Err so
eingestellt, daß es gleich dem zuvor berechneten Err (gespeichert
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-Schaltung
14 entsprechend dem Addierer 66 den Ausgang von Schaltung
64 (der 0 ist) zum Inhalt des dem Register entsprechenden
Registers in der Y-AFDU-Schaltung 14 addiert).
Inc 2, das im Register 38 gespeichert ist, wird vom Multiplexer
44 selektiert und zum Inhalt von Register 50 von dem Addierer
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 es durch den Multiplexer
70 in das Register 72. Der Ablauf endet beim Schritt 170, wenn
x größer ist als x₁.
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 Bresenham-
Algorithmus implementieren kann, welche das einer Ideallinie
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 Versionen
des Bresenham-Algorithmus werden weithin 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 Interpolation",
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 Bezugnahme
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 Vorwärtsrücken
durchzuführen.
Register 102, 103, 104, 105 und 106 in Fig. 7 speichern Koordinatenwerte
x n bis x n+4, welche von der X-AFDU-Schaltung
12 und dem Multiplizierer 20 (Fig. 1) in fünf aufeinanderfolgenden
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, daß 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 Absolutwert
von x n+4-x n+3 und der Absolutwert von
y n+4-y n+3 beide kleiner als 0,5 eines Einzelpixelinkrements
sind, gibt das Steuergerät 92 ein Steuersignal an
alle vier AFDU-Schaltungen und instruiert diese, die Schrittweite
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äutert
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 ausreichend
genau definieren. Register 138 und 137 arbeiten vielmehr
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 beschriebenen
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 heruntergestellt
oder vorgerückt werden.
Die Eliminierung von redundanten Pixeln bei einem wiedergegebenen
Bild wird im folgenden beschrieben. Komparator 96 vergleicht
den Wert x n+2, der im Register 104 gespeichert ist,
mit dem im Register 103 gespeicherten x n+1-Wert. Der Komparator
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 14 Signale
an die Steuerschaltung 92, die ihrerseits ein ungültiges Pixelbit
an den Zeichnungsabschnitt 150 ausgibt, so daß letzterer
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. Vorgeladen
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 Modifizierungen
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 gespeicherten
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-Minimalwert
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 Zeichnungsabschnittseinrichtung
150 anweist, das Pixel (x n+1,
y n+1, z n+1, t n+1) nicht zu zeichnen. Wenn z n+1, gespeichert
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 gespeicherte
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 erzeugenden
Kurve entspricht, wird von der CPU 9 zum Auslösezeitpunkt
berechnet und in Register 158 geladen. t wird zum Initialisierungszeitpunkt
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-Schaltungen
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 erforderlich
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 speichert.
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, y n+1, y n , z n+1 und z n
zusammenfallen. Dadurch wird der Wert t = 1 für den Komparator
144 ein geeigneter Wert zum Vergleich mit den Werten
t min und t max .
Claims (21)
1. Anordnung zur Gewinnung einer Annäherung des Reziprokwerts
der homogenen Koordinatew zur Verwendung der bei Erzeugung
von Bildern auf einem Displaygerät, gekennzeichnet
durch:
eine erste Nachschlagetabelle (76) zur Aufnahme eines Teils der w-Koordinate,
eine zweite Nachschlagetabelle (78) zur Aufnahme des ersten Teils der w-Koordinate;
eine Registerschaltung (84) zur Aufnahme eines zweiten Teils der w-Koordinate,
wobei die erste Nachschlagetabelle (76) einen ersten Wert (1/w₀) entsprechend dem ersten Teil, die zweite Nachschlagetabelle (78) einen zweiten Wert (1/w₀²), ebenfalls entsprechend dem ersten Teil, und die Registerschaltung (84) den zweiten Teil (d) ausgibt,
Mittel zum Multiplizieren des zweiten Teils (d) mit dem zweiten Wert (1/w₀²) und
Mittel (89) zum Subtrahieren des Produkts (d/w₀²) aus dem zweiten Wert und dem zweiten Teil von dem ersten Wert (1/w₀), wodurch eine Approximation von 1/w gewonnen wird.
eine erste Nachschlagetabelle (76) zur Aufnahme eines Teils der w-Koordinate,
eine zweite Nachschlagetabelle (78) zur Aufnahme des ersten Teils der w-Koordinate;
eine Registerschaltung (84) zur Aufnahme eines zweiten Teils der w-Koordinate,
wobei die erste Nachschlagetabelle (76) einen ersten Wert (1/w₀) entsprechend dem ersten Teil, die zweite Nachschlagetabelle (78) einen zweiten Wert (1/w₀²), ebenfalls entsprechend dem ersten Teil, und die Registerschaltung (84) den zweiten Teil (d) ausgibt,
Mittel zum Multiplizieren des zweiten Teils (d) mit dem zweiten Wert (1/w₀²) und
Mittel (89) zum Subtrahieren des Produkts (d/w₀²) aus dem zweiten Wert und dem zweiten Teil von dem ersten Wert (1/w₀), wodurch eine Approximation von 1/w gewonnen wird.
2. Anordnung nach Anspruch 1, dadurch gekennzeichnet, daß
die Approximation der homogenen Koordinate w eine abgebrochene
Taylor-Reihen-Approximation (1/w₀-d (1/w₀²) enthält.
3. Anordnung nach Anpruch 1 oder 2, dadurch gekennzeichnet,
daß die Approximation von 1/w innerhalb von zwei Taktzyklen
gewonnen wird.
4. Anordnung nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet,
daß der erste Teil eine vorgegebene Anzahl der
am höchsten bewerteten Bits der homogenen Koordinate w enthält
und daß der zweite Teil eine vorgegebene Anzahl der am niedrigsten
bewerteten Bits der Koordinate w enthält.
5. Anordnung nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet,
daß der erste Wert 1/w₀ ist, daß das Produkt
d (1/w₀)² ist, daß w₀ einer vorgegebenen Anzahl der am
höchsten bewerteten Bits der homogenen Koordinate w entspricht
und daß d einer vorgegebenen Anzahl der am niedrigsten bewerteten
Bits der homogenen Koordinate w entspricht.
6. Anordnung zur Ableitung eines Reziprokwerts der homogenen
Koordinate w zur Verwendung bei der Gewinnung rationaler kubischer
Funktionen x/w, y/w und z/w-Koordinaten, gekennzeichnet
durch Mittel (18; 76 . . . 90) zur Berechnung einer Taylor-Reihen-
Approximation des Reziprokwerts der homogenen Koordinate w
und Mittel (20, 22, 24) zum Multiplizieren des Reziprokwerts
von w mit entsprechenden x, y und z-Koordinaten, wodurch die
rationalen kubischen Funktionen x/w, y/w und z/w gewonnen
werden.
7. Anordnung nach Anspruch 6, dadurch gekennzeichnet, daß
die Taylor-Reihen-Approximation nach einer vorgegebenen Folge
abgebrochen wird.
8. Anordnung nach Anspruch 7, dadurch gekennzeichnet, daß
die vorgegebene Folge der Taylor-Reihen-Approximation
1/w₀-d (1/w₀)² ist, wobei w₀ eine vorgegebene Anzahl
der am höchsten bewerteten Bits der w-Koordinate und d eine
vorgegebene Anzahl der am niedrigsten bewerteten Bits der
w-Koordinate darstellt.
9. Anordnung nach einem der Ansprüche 6 bis 8, dadurch gekennzeichnet,
daß der Reziprokwert der homogenen Koordinate w
innerhalb von zwei Taktzyklusoperationen berechnet wird.
10. Anordnung nach einem der Ansprüche 6 bis 9, dadurch gekennzeichnet,
daß die Mittel zur Berechnung einer Taylor-Reihen-
Approximation enthalten:
eine erste Nachschlagetabelle (76) zur Aufnahme eines ersten Teils der w-Koordinate,
eine zweite Nachschlagetabelle (78) zur Aufnahme des ersten Teils der w-Koordinate,
wobei die erste Nachschlagetabelle (76) einen ersten Wert (1/w₀) entsprechend dem ersten Teil und die zweite Nachschlagetabelle (78) einen zweiten Wert (1/w₀²), ebenfalls entsprechend dem ersten Teil ausgeben,
eine Registerschaltung (84) zur Aufnahme eines zweiten Teils der w-Koordinate, wobei die Registerschaltung einen dritten Wert (d) ausgibt,
eine Multipliziereinrichtung (87) zum Multiplizieren des dritten Werts (d) mit dem zweiten Wert (1/w₀²) und
mit der Multipliziereinrichtung gekoppelte Subtraktionsmittel (89), die das Produkt aus dem zweiten und dritten Wert, ausgegeben durch die Multipliziereinrichtung (87), von dem ersten Wert 1/w₀ derart subtrahieren, daß die abgebrochene Taylor-Reihen-Approximation des Reziprokwerts der homogenen Koordinate w gewonnen wird.
eine erste Nachschlagetabelle (76) zur Aufnahme eines ersten Teils der w-Koordinate,
eine zweite Nachschlagetabelle (78) zur Aufnahme des ersten Teils der w-Koordinate,
wobei die erste Nachschlagetabelle (76) einen ersten Wert (1/w₀) entsprechend dem ersten Teil und die zweite Nachschlagetabelle (78) einen zweiten Wert (1/w₀²), ebenfalls entsprechend dem ersten Teil ausgeben,
eine Registerschaltung (84) zur Aufnahme eines zweiten Teils der w-Koordinate, wobei die Registerschaltung einen dritten Wert (d) ausgibt,
eine Multipliziereinrichtung (87) zum Multiplizieren des dritten Werts (d) mit dem zweiten Wert (1/w₀²) und
mit der Multipliziereinrichtung gekoppelte Subtraktionsmittel (89), die das Produkt aus dem zweiten und dritten Wert, ausgegeben durch die Multipliziereinrichtung (87), von dem ersten Wert 1/w₀ derart subtrahieren, daß die abgebrochene Taylor-Reihen-Approximation des Reziprokwerts der homogenen Koordinate w gewonnen wird.
11. Anordnung nach Anspruch 10, dadurch gekennzeichnet, daß
der erste Wert 1/w₀ ist, daß das Produkt der zweiten und
dritten Werte d (1/w₀)² ist, daß w₀ eine vorgegebene
Anzahl der am höchsten bewerteten Bits der homogenen Koordinate
w dargestellt und daß d eine vorgegebene Anzahl der am niedrigsten
bewerteten Bits der homogenen Koordinate w darstellt.
12. Anordnung zur Ableitung des Reziprokwerts eines Momentanwerts
der homogenen Koordinate w und zur Gewinnung rationaler
kubischer Funktionen x/w, y/w und z/w zur Verwendung bei
der Erzeugung von Bildern auf einem Display, gekennzeichnet
durch
ein Mittel (18) zum Implementieren einer Taylor-Reihen- Approximation des Reziprokwerts des Momentanwerts der homogenen Koordinate w und
eine Schaltung (20, 22, 24) zum Multiplizieren des Reziprokwerts mit einem entsprechendem Momentanwert der x, y und z-Koordinaten.
ein Mittel (18) zum Implementieren einer Taylor-Reihen- Approximation des Reziprokwerts des Momentanwerts der homogenen Koordinate w und
eine Schaltung (20, 22, 24) zum Multiplizieren des Reziprokwerts mit einem entsprechendem Momentanwert der x, y und z-Koordinaten.
13. Annordnung nach Anspruch 12, dadurch gekennzeichnet, daß
die Taylor-Reihen-Approximation abgebrochen und durch die
Funktion
1/w = 1/w₀-d (1/w₀)²dargestellt ist, wobei w = der Momentanwert der homogenen
Koordinate w; w₀ = eine vorgegebene Anzahl der am höchsten
bewerteten Bits der homogenen Koordinate w und d eine vorgegebene
Anzahl der am niedrigsten bewerteten Bits der homogenen
Koordinate w ist.
14. Verfahren zur Gewinnung einer Approximation des Reziprokwerts
der homogenen Koordinate w zur Verwendung bei der Erzeugung
von Bildern auf einem Displaygerät, gekennzeichnet durch
die folgenden Schritte:
Eingeben eines ersten Teils der w-Koordinate in eine erste Nachschlagetabelle,
Eingeben des ersten Teils der w-Koordinate in eine zweite Nachschlagetabelle,
Eingeben eines zweiten Teils der w-Koordinate in eine Registerschaltung,
Ausgeben eines ersten Werts (1/w₀) entsprechend dem ersten Teil aus der ersten Nachschlagetabelle,
Ausgeben eines zweiten Werts (1/w₀²), entsprechend ebenfalls dem ersten Teil, aus der zweiten Nachschlagetabelle,
Multiplizieren des zweiten Teils (d) mit dem zweiten Wert (1/w₀²) und
Subtrahieren des Produkts (d/w₀²) aus dem zweiten Teil und dem zweiten Wert von dem ersten Wert derart, daß eine Approximation von 1/w gewonnen wird.
Eingeben eines ersten Teils der w-Koordinate in eine erste Nachschlagetabelle,
Eingeben des ersten Teils der w-Koordinate in eine zweite Nachschlagetabelle,
Eingeben eines zweiten Teils der w-Koordinate in eine Registerschaltung,
Ausgeben eines ersten Werts (1/w₀) entsprechend dem ersten Teil aus der ersten Nachschlagetabelle,
Ausgeben eines zweiten Werts (1/w₀²), entsprechend ebenfalls dem ersten Teil, aus der zweiten Nachschlagetabelle,
Multiplizieren des zweiten Teils (d) mit dem zweiten Wert (1/w₀²) und
Subtrahieren des Produkts (d/w₀²) aus dem zweiten Teil und dem zweiten Wert von dem ersten Wert derart, daß eine Approximation von 1/w gewonnen wird.
15. Verfahren nach Anspruch 14, dadurch gekennzeichnet, daß
die Annäherung unter Verwendung einer abgebrochenen Taylor-
Reihen-Approximation durchgeführt wird.
16. Verfahren nach Anspruch 14 oder 15, dadurch gekennzeichnet,
daß die Approximation von 1/w innerhalb von zwei Taktzyklen
durchgeführt wird.
17. Verfahren nach einem der Ansprüche 14 bis 16, dadurch
gekennzeichnet, daß der erste Teile eine vorgegebene Anzahl der
am höchsten bewerteten Bits der homogenen Koordinate w und der
zweite Teil eine vorgegebene Anzahl der am niedrigsten bewerteten
Bits der Koordinate w enthält.
18. Verfahren nach einem der Ansprüche 14 bis 17, dadurch
gekennzeichnet, daß als erster Wert 1/w₀ verwendet wird, daß
das Produkt der zweiten und dritten Werte d (1/w₀)² ist,
daß w₀ einer vorgegebenen Anzahl der am höchsten bewerteten
Bits der homogenen Koordinate w und d einer vorgegebenen Anzahl
der am niedrigsten bewerteten Bits der homogenen Koordinate
w entspricht.
19. Verfahren zum Ableiten eines Reziprokwerts der homogenen
Koordinate w zur Verwendung bei der Gewinnung rationaler kubischer
Funktionen x/w, y/w und z/w-Koordinaten, dadurch gekennzeichnet,
daß eine Taylor-Reihen-Approximation des Reziprokwerts
der homogenen Koordinate w innerhalb von zwei Taktzyklusoperationen
berechnet wird und daß der Reziprokwert von w
mit entsprechenden x, y und z-Koordinaten multipliziert wird,
wodurch die rationalen kubischen Funktionen x/w, y/w und z/w
gewonnen werden.
20. Verfahren zum Ableiten des Reziprokwerts eines Momentanwerts
der homogenen Koordinate w und zur Gewinnung rationaler
kubischer Funktionen x/w, y/w und z/w-Koordinaten zur Erzeugung
von Bildern auf einem Display, dadurch gekennzeichnet,
daß eine Taylor-Reihen-Approximation des Reziprokwerts des
Momentanwerts der homogenen Koordinate w implementiert und der
Reziprokwert mit einem entsprechenden Momentanwert der x, y
und z-Koordinaten multipliziert wird.
21. Verfahren nach Anspruch 20, dadurch gekennzeichnet, daß
die Taylor-Reihen-Approximation abgebrochen und dargestellt
wird durch die Funktion:
1/w = 1/w₀ · d (1/w₀)²wobei w = der Momentanwert der homogenen Koordinate w; w₀ =
eine vorgegebene Anzahl der am höchsten bewerteten Bits der
homogenen Koordinate w und d = eine vorgegebene Anzahl der am
niedrigsten bewerteten Bits der homogenen Koordinate w ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/047,767 US5179659A (en) | 1987-05-08 | 1987-05-08 | Method and apparatus for deriving instantaneous reciprocals of the homogenous coordinate w for use in defining images on a display |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3815374A1 true DE3815374A1 (de) | 1988-11-24 |
DE3815374C2 DE3815374C2 (de) | 1997-07-17 |
Family
ID=21950849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3815374A Expired - Fee Related DE3815374C2 (de) | 1987-05-08 | 1988-05-05 | 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 |
Country Status (8)
Country | Link |
---|---|
US (1) | US5179659A (de) |
JP (1) | JPH0664620B2 (de) |
CA (1) | CA1317691C (de) |
DE (1) | DE3815374C2 (de) |
FR (1) | FR2615981B1 (de) |
GB (2) | GB2204433B (de) |
HK (2) | HK60892A (de) |
SG (1) | SG52292G (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02156328A (ja) * | 1988-12-08 | 1990-06-15 | Toshiba Corp | 逆数回路 |
US5471573A (en) * | 1989-12-07 | 1995-11-28 | Apple Computer, Inc. | Optimized scan conversion of outlines for generating raster images |
EP0530661A3 (en) * | 1991-09-04 | 1994-06-15 | Seikosha Kk | Curve approximation method |
US5739820A (en) * | 1992-11-19 | 1998-04-14 | Apple Computer Inc. | Method and apparatus for specular reflection shading of computer graphic images |
US5544291A (en) * | 1993-11-10 | 1996-08-06 | Adobe Systems, Inc. | Resolution-independent method for displaying a three dimensional model in two-dimensional display space |
US5798762A (en) * | 1995-05-10 | 1998-08-25 | Cagent Technologies, Inc. | Controlling a real-time rendering engine using a list-based control mechanism |
US6581085B1 (en) * | 1999-05-12 | 2003-06-17 | Ati International Srl | Approximation circuit and method |
US7117238B1 (en) * | 2002-09-19 | 2006-10-03 | Nvidia Corporation | Method and system for performing pipelined reciprocal and reciprocal square root operations |
US7457838B2 (en) * | 2003-12-03 | 2008-11-25 | Marvell World Trade Ltd. | Methods and apparatus for performing calculations using reduced-width data |
US7657589B2 (en) | 2005-08-17 | 2010-02-02 | Maxim Integrated Products | System and method for generating a fixed point approximation to nonlinear functions |
US7962537B2 (en) * | 2006-06-26 | 2011-06-14 | Southern Methodist University | Determining a table output of a table representing a hierarchical tree for an integer valued function |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3508038A (en) * | 1966-08-30 | 1970-04-21 | Ibm | Multiplying apparatus for performing division using successive approximate reciprocals of a divisor |
SU546881A1 (ru) * | 1974-09-16 | 1977-02-15 | Институт Электродинамики Ан Украинской Сср | Устройство дл определени обратной величины числа |
US4482975A (en) * | 1982-03-29 | 1984-11-13 | Motorola, Inc. | Function generator |
US4636973A (en) * | 1982-07-21 | 1987-01-13 | Raytheon Company | Vernier addressing apparatus |
US4688186A (en) * | 1982-10-04 | 1987-08-18 | Honeywell Bull Inc. | Division by a constant by iterative table lookup |
US4718032A (en) * | 1985-02-14 | 1988-01-05 | Prime Computer, Inc. | Method and apparatus for effecting range transformation in a digital circuitry |
JPS61262930A (ja) * | 1985-05-17 | 1986-11-20 | Nec Corp | 除算装置 |
JPS6278629A (ja) * | 1985-10-02 | 1987-04-10 | Hitachi Denshi Ltd | 逆数値演算方式 |
-
1987
- 1987-05-08 US US07/047,767 patent/US5179659A/en not_active Expired - Lifetime
-
1988
- 1988-04-29 GB GB8810315A patent/GB2204433B/en not_active Expired - Fee Related
- 1988-05-05 DE DE3815374A patent/DE3815374C2/de not_active Expired - Fee Related
- 1988-05-06 FR FR8806128A patent/FR2615981B1/fr not_active Expired - Fee Related
- 1988-05-06 CA CA000566229A patent/CA1317691C/en not_active Expired - Fee Related
- 1988-05-09 JP JP63110642A patent/JPH0664620B2/ja not_active Expired - Fee Related
-
1989
- 1989-11-08 GB GB8925215A patent/GB2224914B/en not_active Expired - Fee Related
-
1992
- 1992-05-11 SG SG52292A patent/SG52292G/en unknown
- 1992-08-13 HK HK608/92A patent/HK60892A/xx not_active IP Right Cessation
- 1992-08-13 HK HK610/92A patent/HK61092A/xx not_active IP Right Cessation
Non-Patent Citations (4)
Title |
---|
BISHOP, G. und WEIMER, D.: "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 * |
SWANSON, R. und THAYER, L.: "A Fast Shaded- Polygon Renderer" in Computer Graphics, Bd. 20, Nr. 4, S. 95-101, Aug. 1986 * |
Also Published As
Publication number | Publication date |
---|---|
HK60892A (en) | 1992-08-21 |
JPS6453277A (en) | 1989-03-01 |
US5179659A (en) | 1993-01-12 |
GB8925215D0 (en) | 1989-12-28 |
SG52292G (en) | 1992-12-04 |
GB2204433A (en) | 1988-11-09 |
GB2224914B (en) | 1992-02-05 |
GB2204433B (en) | 1992-02-05 |
FR2615981B1 (fr) | 1994-04-01 |
FR2615981A1 (fr) | 1988-12-02 |
CA1317691C (en) | 1993-05-11 |
HK61092A (en) | 1992-08-21 |
JPH0664620B2 (ja) | 1994-08-22 |
DE3815374C2 (de) | 1997-07-17 |
GB2224914A (en) | 1990-05-16 |
GB8810315D0 (en) | 1988-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3815361A1 (de) | Einrichtung und verfahren zum erzeugen von vektoren auf einem displaygeraet | |
DE19646194B4 (de) | Echtzeit-Wiedergabeverfahren zum wahlweisen Ausführen von Bump-Mapping- und Phong-Schattierungs-Prozessen und zugehörige Vorrichtung | |
DE4314265B4 (de) | Displaysystem | |
DE3750784T2 (de) | Generation eines intrapolierten charakteristischen Wertes zur Anzeige. | |
DE3855214T2 (de) | Paralleles Flächenverarbeitungssystem für graphische Anzeigen | |
DE3177295T2 (de) | Vordezimierungsfilter fuer bildveraenderungssystem. | |
DE3750629T2 (de) | Bildorientierung und -animation unter Verwendung von Quaternionen. | |
DE68925399T2 (de) | Verfahren und Gerät zur Bildtransformation | |
DE19807053B4 (de) | Strahltransformationsverfahren für eine schnelle Volumenaufbereitung für eine perspektivische Betrachtung | |
DE3875467T2 (de) | Geraet zur erzeugung eines zweidimensional farbanzeige. | |
DE2703021A1 (de) | Datenprozessor zum liefern von intensitaetssteuersignalen zur verwendung in einer rasteranzeige | |
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 | |
DE69921608T2 (de) | Verfahren und vorrichtung zum zoomen von digitalen bilddateien | |
DE3815390A1 (de) | Anordnung und verfahren zur adaptiven vorwaertsdifferenzbildung bei der erzeugung von kurven und flaechen | |
DE3853511T2 (de) | Mehrbildelementgenerator. | |
DE68926640T2 (de) | Reduziertes Bildfenster für eine graphische Anzeige | |
DE4215094A1 (de) | Bildverarbeitungsverfahren und -vorrichtung | |
DE68926952T2 (de) | Verfahren zur Ausführung von interaktiven Bildverarbeitungsoperationen auf grossen Bildern | |
DE69031204T2 (de) | "Polygon-mit-Rändern"-Primitivzeichnung in einem graphischen rechnergesteuerten Anzeigesystem | |
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 | |
DE3531677A1 (de) | Verfahren und anordnung zur erzeugung von zwischenbildsignalen aus referenzbildsignalen mit verringerter bildfrequenz | |
DE10221389A1 (de) | Verfahren zur Ermittlung eines Pixelwertes eines Pixel aufweisenden Bildes, Gewichtungsmatrix und Recheneinrichtung | |
DE68916965T2 (de) | Produktion von digitalen video-effekten. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |