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 display

Info

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
Application number
DE3815374A
Other languages
English (en)
Other versions
DE3815374C2 (de
Inventor
Sheue-Ling Lien
Jerald R Evans
Susan E Carrie
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE3815374A1 publication Critical patent/DE3815374A1/de
Application granted granted Critical
Publication of DE3815374C2 publication Critical patent/DE3815374C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • G06F1/035Reduction of table size
    • G06F1/0356Reduction of table size by using two or more smaller tables, e.g. addressed by parts of the argument
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2101/00Indexing scheme relating to the type of digital function generated
    • G06F2101/12Reciprocal functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5354Using table lookup, e.g. for digit selection in division by digit recurrence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5356Via 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
für Nachschlagetabelle 78:
(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
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
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
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)
Im Falle der Verdoppelung von dt benutzt die Erfindung die folgende Koeffiziententransformation:
a′ = 8a
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)
Die entsprechende Koeffiziententransformation für ein Inkrement eines Pixels ist:
a′ = a
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.
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.
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.
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.
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.
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.
DE3815374A 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 Expired - Fee Related DE3815374C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 逆数値演算方式

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
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