DE69032367T2 - Schattierungsverfahren und -gerät in einem Grafikrechner - Google Patents

Schattierungsverfahren und -gerät in einem Grafikrechner

Info

Publication number
DE69032367T2
DE69032367T2 DE69032367T DE69032367T DE69032367T2 DE 69032367 T2 DE69032367 T2 DE 69032367T2 DE 69032367 T DE69032367 T DE 69032367T DE 69032367 T DE69032367 T DE 69032367T DE 69032367 T2 DE69032367 T2 DE 69032367T2
Authority
DE
Germany
Prior art keywords
value
circuit
calculation
brightness values
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69032367T
Other languages
English (en)
Other versions
DE69032367D1 (de
Inventor
Hidehiro Hirase
Norihito Ichikawa
Masatoshi Imai
Mutsuhiro Omori
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.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP33214789A external-priority patent/JP2770513B2/ja
Priority claimed from JP33363389A external-priority patent/JP2770514B2/ja
Priority claimed from JP1333632A external-priority patent/JPH03192480A/ja
Priority claimed from JP33363589A external-priority patent/JP2814631B2/ja
Priority claimed from JP1333634A external-priority patent/JPH03192482A/ja
Application filed by Sony Corp filed Critical Sony Corp
Publication of DE69032367D1 publication Critical patent/DE69032367D1/de
Application granted granted Critical
Publication of DE69032367T2 publication Critical patent/DE69032367T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Description

  • Die Erfindung betrifft ein Schattierungsverfahren und eine Schattierungsvorrichtung für Computergrafiken nach Anspruch 1 bzw. 4 für das Schattieren eines dreidimensionalen Objekts, das auf einer zweidimensionalen Anzeigevorrichtung angezeigt wird.
  • Wenn in Computergrafiken ein dreidimensionales Objekt auf einer zweidimensionalen Anzeigevorrichtung angezeigt wird, wird die Oberfläche des dreidimensionalen Objekts schattiert, um die Wirklichkeitstreue und die visuelle Erkennbarkeit des dreidimensionalen Objekts zu verbessern. Das Verfahren zum Schattieren der Oberfläche eines dreidimensionalen Objekts wird als "Schattierung" bezeichnet. Es wird z.B. eine Anzeigemethode mit Schattierung benutzt, bei dem man die Position einer Punktlichtquelle festlegt, so daß die senkrecht zu der Punktlichtquelle ausgerichtete Oberfläche hell beleuchtet wird, wobei die Helligkeit der Oberfläche im übrigen dem Grad der senkrechten Ausrichtung relativ zu der Punktlichtquelle proportional ist.
  • Das auf der zweidimensionalen Anzeigevorrichtung angezeigte dreidimensionale Objekt besitzt eine komplizierte gekrümmte Oberfläche. Um das dreidimensionale Objekt mit der komplizierten gekrümmten Oberfläche entsprechend der Form dieser Oberfläche optimal zu schattieren, bedient man sich eines Verfahrens, bei dem die gekrümmte Oberfläche durch eine Vielzahl von Polygonen approximiert wird, die Koordinatenwerte der Ecken der Polygone eingegeben werden und Werte innerhalb der Polygone durch lineare Interpolation der an den Eckenkoordinaten gegebenen Werten gewonnen werden. Die lineare Interpolation wird durch eine DDA-Berechnung (digitale Differentialanalyse) durchgeführt, bei der die Änderung jedes Intervalls des Koordinatengitters sukzessiv addiert wird (wie dies beispielsweise in der offengelegten japanischen Patentpublikation Nr. Sho 61-52737 beschrieben ist).
  • Für die Anzeige eines dreidimensionalen Objekts auf einer zweidimensionalen Anzeigevorrichtung sind Pixel an den Koordinatengitterpunkten vorgesehen. Es werden Werte (Tiefenwerte und Helligkeitswerte) eingegeben, die den Pixeln entsprechen.
  • Bei dem oben erwähnten Verfahren, bei dem eine gekrümmte Oberfläche mittels einer Vielzahl von Polygonen approximiert wird, die Koordinatenwerte der Ecken jedes Polygons eingegeben und Werte innerhalb jedes Polygons durch lineare Interpolation gewonnen werden, können die Koordinaten der einzelnen Ecken an einer Position liegen, nicht mit einem Koordinatengitterpunkt zusammenfällt.
  • Bisher ist es jedoch nicht möglich, Werte für andere Koordinaten als die Koordinatengitterpunkte einzugeben. Um zu verhindern, daß dann, wenn die Koordinaten der Ecken des Polygons, die durch das Approximieren einer gekrümmten Fläche gewonnen werden, von den Koordinatengitterpunkten abweichen, werden die Werte der die Koordinaten der Ecken des Polygone als die Werte an den Koordinatengitterpunkten behandelt, die den Koordinaten am nächsten liegen.
  • In diesem Fall werden für Pixel an den Koordinatengitterpunkten anstelle der korrekten Werte die Werte derjenigen Koordinaten eingegeben, die in der Nähe von Koordinatengitterpunkten liegen. Deshalb flimmert das Bild in der Genauigkeit eines Pixels, wenn das dreidimensionale Objekt bewegt oder verformt oder die Lichtquelle bewegt wird.
  • Bei einem Verfahren zum Approximieren einer gekrümmten Fläche durch eine Vielzahl von Polygonen, bei dem die Koordinatenwerte der Polygonecken eingegeben und die Werte innerhalb der einzelnen Polygone durch lineare Interpolation aus den eingegebenen Koordinatenwerten für alle Ecken gewonnen werden, wird die gekrümmte Oberfläche bis jetzt durch ein spezielles Polygon, z. B. ein Trapezoid oder ein Dreieck, approximiert.
  • Wenn eine gekrümmte Oberfläche durch ein beliebiges Polygon approximiert wird, benötigt man einen Speicher mit großer Kapazität. Mit anderen Worten, um irgend ein Polygon zu verarbeiten, sollte der Speicher gleichzeitig Werte der Ecken des Polygons speichern. Somit benötigt man zur Verarbeitung eines Polygons mit unbegrenzter Eckenzahl eine unendlich große Speicherkapazität.
  • Wenn andererseits eine gekrümmte Oberfläche durch ein bestimmtes Polygon, z.B. ein Trapezoid oder ein Dreieck approximiert wird, verschlechtert sich die Zeichnungseffizienz. Die Zeichnungseffizienz könnte verbessert und eine komplizierte gekrümmte Fläche auf Echtzeitbasis optimal schattiert werden, wenn eine gekrümmte Oberfläche mit einem beliebigen Polygon approximiert werden könnte.
  • Aus EP-A2-319 787 ist ein Verfahren zum Einsatz einer sog. SIMD-Computerarchitektur in Verbindung mit einem Host-Prozessor und einem Koordinatenprozessor bekannt, um hochwertige dreidimensionale aliasing-freie schattierte Farbbilder in den Vollbildspeicher eines Videoanzeigesystems zu bringen. Das Verfahren beinhaltet einen parallelen Algorithmus, um ein wichtiges graphisches Grundelement zu gewinnen und ein weich schattiertes farbiges dreidimensionales Dreieck mit alias-freien Ecken zu erzeugen. Durch Nutzung der SIMD-Architektur und des genannten parallelen Algorithmus werden die sehr zeitaufwendigen Pixelfür-Pixel-Berechnungen für die parallele Verarbeitung zerlegt.
  • Aus der Literaturstelle "James D. Foley et al: Fundamentals of Interactive Computer Graphics", Addison-Wesley, 1984, Seiten 580 bis 584, ist ein Schattierungsverfahren nach dem Oberbegriff von Anspruch 1 bekannt. Das Dokument beschreibt ein Schattierungsverfahren mit Intensitätsinterpolation (Gouraud-Schattierung), das aus vier Schritten besteht: Zunächst werden die Oberflächennormalen berechnet. Als zweites werden die Objektnormalen berechnet, indem der Mittelwert der Oberflächennormalen aller Polygonfacetten gewonnen wird, die an dieser Ecke beteiligt sind. Als drittes werden an den Ecken mit einem gewünschten Schattierungsmodell die Intensitäten ermittelt, wobei die Eckennormalen benutzt werden. Schließlich wird jedes Polygon durch lineare Interpolation der Eckenintensitäten entlang jeder Kante schattiert.
  • Es ist das Ziel der vorliegenden Erfindung, die Kontinuität der Flächenteilstücke (Patches) zu verbessern.
  • Nach einem Ausführungsbeispiel der vorliegenden Erfindung wird dann, wenn ein Trapezoid verarbeitet wird, dessen Länge in vertikaler Richtung kleiner ist als 1, eine Seite mit großer Länge, die zu einem Überlauf des Dividierers führt, durch eine vertikale Seite ersetzt, deren Startpunkt der gleiche ist wie bei der vorangehenden. So kann ein Überlauf des Dividierers verhindert werden. Außerdem wird die Kontinuität des Flächenteilstücks verbessert. Dieses Ziel wird durch ein Verfahren und eine Vorrichtung nach Anspruch 1 bzw. 4 erreicht.
  • Die oben genannten Ziele sowie weitere Ziele, Merkmale und Vorteile der Erfindung werden durch die folgende detaillierte Beschreibung weiter verdeutlicht, die auf die anliegenden Zeichnungen Bezug nimmt.
  • Fig. 1 zeigt ein schematisches Diagramm, anhand dessen eine Kompensationsrechnung erläutert wird,
  • Fig. 2 zeigt ein Blockdiagramm einer DDA-Rechenschaltung gemäß der Erfindung mit Kompensationsberechnungsfunktion,
  • Fig. 3 zeigt ein Blockdiagramm zur Verdeutlichung der DDA-Rechenschaltung mit Kompensationsrechenfunktion von Fig. 2,
  • Fig. 4 zeigt ein schematisches Diagramm eines Multiplikationsalgorithmus für die DDA- Rechenschaltung mit Kompensationsrechenfunktion,
  • Fig. 5 zeigt ein schematisches Diagramm zur Erläuterung einer Schattierung,
  • Fig. 6 zeigt ein Flußdiagramm, an dem das Ausführungsbeispiel der Erfindung erläutert wird,
  • Fig. 7 und 8 zeigen schematische Diagramme zur Darstellung der Verarbeitung eines Polygons in dem Ausführungsbeispiel der Erfindung,
  • Fig. 9 und 10 zeigen schematische Diagramme zur Darstellung eines Verarbeitungsvorgangs zur Eliminierung eines großen Rechenfehlers in dem Ausführungsbeispiel der Erfindung,
  • Fig. 11 zeigt ein Blockdiagramm eines Ausführungsbeispiels der Erfindung,
  • Fig. 12 zeigt ein Blockdiagramm der Parallelverarbeitungs-Statusübergangsschaltung gemäß der Erfindung,
  • Fig. 13 zeigt ein Blockdiagramm einer Warteschaltung,
  • Fig. 14 zeigt ein Zeitdiagramm zur Erläuterung eines Funktionsbeispiels der Warteschaltung,
  • Fig. 15 zeigt ein Blockdiagramm einer Sprungschaltung,
  • Fig. 16 zeigt ein Blockdiagramm einer Vereinigungsschaltung,
  • Fig. 17 zeigt ein Blockdiagramm einer Verzögerungsschaltung
  • Das Ausführungsbeispiel der vorliegenden Erfindung wird in der folgenden Reihenfolge beschrieben.
  • a. Darstellung eines bekannten Schattierungsverfahrens
  • b. Kompensationsrechnung
  • b1. Theorie der Kompensationsrechnung
  • b2. DDA-Rechenschaltung mit Kompensationsrechenfunktion
  • c. Beschreibung des Schattierungsverfahrens
  • c1. Für den Prozeß erforderliche Berechnungen
  • c2. Zeichnungsprozedur
  • c3. Erweiterung auf ein beliebiges Polygon
  • c4. Verarbeitung für den Fall, daß große Rechenfehler auftreten
  • d. Schattierungsvorrichtung
  • d1. Struktur der Schattierungsvorrichtung
  • d2. Rechengenauigkeit und Bitzahl
  • e. Parallelverarbeitungs-Statusübergangsschaltung
  • e1. Beschreibung der Grundschaltungen
  • e2. Parallelverarbeitungs-Statusübergangsschaltung für den Schattierungsprozeß
  • a. Darstellung eines bekannten Schattierungsverfahrens
  • Die vorliegende Erfindung betrifft ein Verfahren, bei dem eine gekrümmte Oberfläche durch eine Vielzahl von Polygonen approximiert wird, die Koordinatenwerte der Ecken jedes Polygons eingegeben und Werte innerhalb jedes Polygons durch lineare Interpolation gewonnen werden, um eine der Form der gekrümmten Oberfläche entsprechende natürliche Schattierung zu erreichen.
  • Bei dem Verfahren zum Approximieren einer gekrümmten Oberfläche durch eine Vielzahl von Polygonen, bei dem die Werte der Eckenkoordinaten jedes Polygons eingegeben und Werte innerhalb des Polygons durch lineare Interpolation gewonnen werdenv können die Koordinaten der einzelnen Ecken an einer Position liegen, die nicht mit einem Koordinatengitterpunkt zusammenfällt.
  • In einem Ausführungsbeispiel der Erfindung können durch Eingabe des ganzzahligen Teils eines horizontalen Werts X und eines vertikalen Werts Y Werte zwischen Koordinatengitterpunkten eingegeben werden, an denen sich kein Pixel befindet. Dieser Prozeß wird im folgenden als Subpixel-Adressierung bezeichnet. Selbst wenn die bei der Approximierung der gekrümmten Oberfläche gewonnenen Eckenkoordinaten der Polygone von den Koordinatengitterpunkten abweichen, können die Eckenkoordinaten (horizontaler Wert X und vertikaler Wert Y) (Tiefenwert Z und Helligkeitswerte R (Rot), G (Grün) und B (Blau)) eingegeben werden.
  • Gemäß vorliegender Erfindung wird die Subpixel-Adressierung eingesetzt. Danach wird eine Kompensationsrechnung durchgeführt. Dadurch läßt sich ein genauer Pixelwert an einem Koordinatengitterpunkt am Startpunkt der DDA-Berechnung jeder Abtastzeile gewinnen. Anschließend wird die DDA-Berechnung wiederholt um die Pixelwerte aller Koordinatengitterpunkten zu gewinnen.
  • Mit anderen Worten, für das Grundelement eines Trapezoids, das durch Approximieren der gekrümmten Oberfläche gewonnen wird, werden vertikale Kompensationsrechnungen auf der rechten und linken Seite durchgeführt. Auf diese Weise werden der Wert des linken Endes einer Abtastzeile (da der Abtastvorgang von links nach rechts durchgeführt wird, ist das linke Ende der Abtastzeile ihr Startpunkt) und der Wert des rechten Endes der Abtastzeile (das rechte Ende der Abtastzeile ist ihr Endpunkt) gewonnen. Aus dem linken Endwert und dem rechten Endwert der Abtastzeile kann durch eine Kompensationsrechnung in horizontaler Richtung der akkurate Pixelwert an dem Startpunkt in einem Koordinatengitterpunkt in der Nähe des linken Endes der Abtastzeile gewonnen werden. Durch Wiederholen der DDA-Berechnung in horizontaler Richtung, wobei die Variationen in horizontaler Richtung zu dem Pixelwert am Startpunkt addiert werden, können akkurate Pixelwerte an den Koordinatengitterpunkten jeder Abtastzeile gewonnen werden. Der Wert an dem linken Ende der nächsten Abtastzeile wird durch die DDA-Berechnung in vertikaler Richtung gewonnen, wobei die Variation in vertikaler Richtung auf der linken Seite zu dem Wert an dem linken Ende der vorangehenden Abtastzeile addiert wird. In ähnlicher Weise wird der Wert an dem rechten Ende der nächsten Abtastzeile mit Hilfe der DDA-Berechnung in vertikaler Richtung gewonnen, wobei eine Variation in vertikaler Richtung auf der rechten Seite zu dem Wert an dem rechten Ende der vorangehenden Abtastzeile addiert wird.
  • Da in diesem Fall die genauen Pixeiwerte in den Koordinatengitterpunkten eingegeben wurden, erreicht man eine den Bewegungen eines dreidimensionalen Objekts und einer Lichtquelle entsprechende hochgenaue Schattierung auf Echtzeitbasis ohne Bildschirmflimmern.
  • Beim Approximieren einer gekrümmten Oberfläche durch eine Vielzahl von Polygonen würde die Zeichnungseffizienz verbessert, wenn es möglich wäre, die Fläche durch ein beliebiges Polygon zu approximieren. In dem vorliegenden Ausführungsbeispiel der Erfindung werden der Wert der Ecke der linken Seite und der Wert der rechten Seite nur dann gleichzeitig eingegeben, wenn eine Ecke der linken Seite und die Ecke der rechten Seite auf der gleichen horizontalen Zeile liegen. Wenn der Wert nur einer Ecke eingegeben wird, wird der Wert der anderen Ecke als "Null-Wert" behandelt. In diesem Fall wird die vorherige DDA-Berechnung benutzt. So kann die Berechnung für ein Trapezoid auf irgend ein beliebiges Polygon ausgedehnt werden.
  • b. Kompensationsrechnung
  • b1. Theorie der Kompensationsrechnung
  • In dem Ausführungsbeispiel der Erfindung werden die Werte an den Endpunkten einer Abtastzeile, wie oben beschrieben, dadurch gewonnen, daß auf der linken Seite und auf der rechten Seite Kompensationsrechnungen in vertikaler Richtung durchgeführt werden. Durch die Kompensationsrechnung in horizontaler Richtung wird der akkurate Pixelwert an einem Koordinatengitterpunkt im Startpunkt gewonnen. Durch Wiederholung der DDA-Berechnungen in vertikaler Richtung auf der linken und rechten Seite und in der horizontalen Richtung wird anschließend der Pixelwert an jedem Koordinatengitterpunkt gewonnen.
  • Bevor das Schattierungsverfahren näher diskutiert wird, wird die Kompensationsrechnung beschrieben.
  • Wie in Fig. 1 dargestellt, erhält man unter der Voraussetzung, daß die Werte A(V) und B(V) an den Punkten A und B gegeben sind und diese Werte sich linear ändern, den Wert R(V) an dem Punkt R zwischen den Punkten A und B.
  • Wenn diese Werte sich linear ändern, kann in diesem Fall der Wert R(V) an dem Punkt R zwischen den Punkten A und B durch lineare Interpolation gewonnen werden.
  • Mit anderen Worten, der Wert R(V) an dem Punkt R zwischen den Punkten A und B kann nach der folgenden Gleichung gewonnen werden:
  • (1) R(V) = A(V)(B - R) + B(V)(R - A)/B - A
  • Bei einer solchen linearen Interpolation sollten die Multiplikation und die Division einmal bzw. zweimal durchgeführt werden. Da die Anzahl der Multiplikationen und Divisionen anwächst, benötigt man eine umfangreiche Schaltung und lange Rechenzeiten.
  • Deshalb wird die obige Gleichung folgendermaßen umgewandelt:
  • (2) R(V) = A(V) + (R-A) x B(V) - A(V)/B - A
  • In der obigen Gleichung ist der Term
  • (3) B(V) - A(V)/B - A = DD
  • eine Variation DD.
  • Somit kann der Wert R(V) an dem Punkt R zwischen den Punkten A und B durch die folgende Gleichung gewonnen werden:
  • (4) R(V) = A(V) + (R-A) x DD
  • Bei der Approximierung einer gekrümmten Oberfläche durch eine Vielzahl von Polygonen, bei der Werte innerhalb jedes Polygons durch lineare Interpolation so ermittelt werden, daß eine Schattierung entsteht, wurde die Variation DD für die Durchführung der DDA-Berechnung im voraus gewonnen. Die Kompensationsrechnung kann deshalb mit einer einzigen Multiplikation durchgeführt werden, wenn sie in die obige Gleichung umgewandelt wird, sie . Für die Kompensationsrechnung kann ein Teil einer DDA-Rechenschaltung benutzt werden. Die DDA-Rechenschaltung mit Kompensationsrechenfunktion wird im folgenden beschrieben.
  • b2. DDA-Rechenschaltung mit Kompensationsrechenfunktion
  • Bei der Kompensationsrechnung wird, wie oben beschrieben, das Produkt aus der Entfernung (R-A) von der Ausgangsposition A zur Kompensationsposition R und der Variation DD zu dem Wert A(V) an der Ausgangsposition addiert. Diese Berechnung läßt sich mit einer DDA- Rechenschaltung mit Kompensationsrechenfunktion durchführen, wie sie in Fig. 2 dargestellt ist.
  • Die DDA-Rechenschaltung mit Kompensationsrechenfunktion kann in drei Modi gesetzt werden. Ein Modus ist der Kompensationswert-Rechenmodus zur Gewinnung eines Kompensationswerts. Im Kompensationswert-Rechenmodus wird der Abstand zur Kompensationsposition, der über einen Eingang 30 eingegeben wird, mit der Variation DD multipliziert, die über einen Eingang 33 eingegeben wird.
  • Dadurch wird folgende Rechnung durchgeführt:
  • (R-A) x DD
  • In dieser Multiplikation ist der Abstand (R - A) zur Kompensationsposition als serielle Daten, beginnend mit dem niedrigstwertigen Bit, gegeben. Jedes Bit des Abstands (R - A) zur Kompensationsposition wird mit der Variation DD multipliziert und dann nach rechts verschoben. Das resultierende Produkt wird Bit für Bit addiert.
  • In dem zweiten Modus wird der Kompensationswert zu dem Wert an der Ausgangsposition addiert, um den kompensierten Wert zu gewinnen. Es wird also die folgende Rechnung durchgeführt und dann der Wert R(V) an dem Punkt R gewonnen:
  • A(V) + (R-A) x DD
  • In dem dritten Modus wird die DDA-Berechnung durchgeführt. Bei der DDA-Berechnung wird das Addieren der Variation DD zu dem vorherigen Wert wiederholt.
  • In Fig. 2 wird der Wert A(V) an der Ausgangsposition über einen Eingang 32 einem der Eingänge eines Multiplexers 31 zugeführt. Die Variation DD, die über den Eingang 33 eingegeben wird, wird dem anderen Eingang des Multiplexers 31 zugeführt. Der Wert A(V) an der Ausgangsposition am Eingang 32 und die Variation DD am Eingang 33 werden in Form von parallelen Daten eingegeben. Das Ausgangssignal des Multiplexers 31 wird einer Nullbestimmungsschaltung 34 zugeführt. Der Abstand (R - A) zur Kompensationsposition wird über den Eingang 30 in Form von seriellen Daten, beginnend mit dem niedrigstwertigen Bit, zugeführt.
  • Die Nullbestimmungsschaltung 34 dient dazu, den Abstand (R - A) zur Kompensationsposition in dem Kompensationswert-Berechnungsmodus mit der Variation DD zu multiplizieren.
  • Die Nullbestimmungsschaltung 34 besteht, wie in Fig. 2 dargestellt, aus UND-Gliedern 42&sub1;, 42&sub2;, 42&sub3;,... und 42n. Jedes Ausgangsdatenbit des Multiplexers 31 wird jeweils einem Eingang jedes UND-Glieds 42&sub1;, 42&sub2;, 42&sub3;,... und 42n zugeführt. Die seriellen Daten an dem Eingang 30 werden dem jeweils anderen Eingang der einzelnen UND-Glieder 42&sub1;, 42&sub2;, 42&sub3;,... und 42n zugeführt.
  • In der Schaltung von Fig. 2 wird das Ausgangssignal der Nullbestimmungsschaltung 34 einem Addierer 35 zugeführt. Das Ausgangssignal des Addierers 35 wird einer Verriegelungsschaltung 36 zugeführt.
  • Über einen Takteingang 39 wird der Verriegelungsschaltung 36 ein DDA-Takt DDA CK zugeführt. Außerdem wird der Verriegelungsschaltung 36 über einen Rücksetzeingang 40 ein Rücksetzsignal RST zugeführt. Das Ausgangssignal der Verriegelungsschaltung 36 wird an einem Ausgang 37 abgenommen. Darüber hinaus wird das Ausgangssignal der Verrieglungsschaltung 36 einem Multiplexer 38 zugeführt.
  • Über einen Eingang 41 wird dem Multiplexer 38 ein Kompensationsschleifensignal AJL zugeführt. Wenn das Kompensationsschleifensignal AJL über den Eingang 41 dem Multiplexer 38 zugeführt wird, wird das Ausgangssignal der Verriegelungsschaltung 36 nach Maßgabe der einzelnen Takte Bit für Bit nach rechts verschoben und dann an den Multiplexer 38 ausgegeben.
  • Das Ausgangssignal des Multiplexers 38 wird dem Addierer 35 zugeführt.
  • Zunächst wird der Verriegelungsschaltung 36 über den Eingang 40 das Rücksetzsignal RST zugeführt. Durch dieses Rücksetzsignal RST wird die Verriegelungsschaltung 36 zurückgesetzt.
  • Dann findet der Kompensationswert-Berechnungsmodus statt, durch den der Kompensationswert gewonnen wird. In dem Kompensationswert-Berechnungsmodus wählt der Multiplexer 31 die Variation DD an dem Eingang 33 aus. Der Multiplexer 31 führt der Nullbestimmungsschaltung 34 die Variation DD als parallele Daten zu. Der Abstand (R - A) zur Kompensationsposition wird über den Eingang 30 der Nullbestimmungsschaltung 34 in Form serieller Daten, beginnend mit dem niedrigstwertigen Bit, zugeführt.
  • In der Nullbestimmungsschaltung 34 wird der Abstand (R - A) zur Kompensationsposition Bit für Bit mit dem Wert DD multipliziert. Wenn ein Bit des Abstand (R - A) der Kompensationsposition den Wert "1" hat, wird die Variation DD, sowie sie ist, durch die Nullbestimmungsschaltung 34 ausgegeben, weil "1" mit der Variation DD multipliziert wird. Wenn umgekehrt ein Bit des Abstands (R -A) der Kompensationsposition den Wert "0" hat, wird "00 ... 0" von der Nullbestimmungsschaltung 34 ausgegeben, weil "0" mit der Variation DD multipliziert wird.
  • Das Ausgangssignal des Addierers 35 wird dem Multiplexer 38 über die Verriegelungsschaltung 36 zugeführt. Das Kompensationsschleifensignal AJL wird von dem Eingang 41 dem Multiplexer 38 zugeführt. Somit wird das Ausgangssignal des Addierers 35 von dem Multiplexer 38 Bit für Bit nach rechts verschoben und dann dem Addierer 35 zugeführt. Die resultierenden Daten werden in der Verriegelungsschaltung 36 akkumuliert.
  • Durch Wiederholen dieser Addition wird der Abstands (R - A) zur Kompensationsposition mit der Variation DD multipliziert.
  • Mit anderen Worten, wenn angenommen wird, daß die Variation DD in Form von 4-Bit-Daten "d&sub3;, d&sub2;, d&sub1;, d&sub0;" und der Abstand (R - A) zur Kompensationsposition ebenfalls in Form von 4- Bit-Daten "a&sub3;, a&sub2;, a&sub1;, a&sub0;" gegeben sind, wird die Multiplikation des Abstands (R - A) zur Kompensationsposition mit der Variation DD in der in Fig. 4 dargestellten Weise durchgeführt.
  • Zunächst wird der Nullbestimmungsschaltung 34 das niedrigstwertige Bit "a&sub0;" des Abstands (R - A) zur Kompensationsposition zugeführt. Dann wird das niedrigstwertige Bit "a&sub0;" mit "d&sub3;, d&sub2;, d&sub1;, d&sub0;" multipliziert und dadurch "a&sub0;d&sub3;, a&sub0;d&sub2;, a&sub0;d&sub1;, a&sub0;d&sub0;" gewonnen.
  • Dann wird der Nullbestimmungsschaltung 34 das Bit mit dem zweitniedrigsten Stellenwert "a&sub1;" des Abstands (R - A) zugeführt. Anschließend wird dieses Bit mit dem zweitniedrigsten Stellenwert "a&sub1;" mit "d&sub3;, d&sub2;, d&sub1;, d&sub0;" multipliziert und dadurch "a&sub1;d&sub3;, a&sub1;d&sub2;, a&sub1;d&sub1;, a&sub1;d&sub0;" gewonnen.
  • Der Wert "a&sub1;d&sub3;, a&sub1;d&sub2;, a&sub1;d&sub1;, a&sub1;d&sub0;" wird zu dem Wert"a&sub0;d&sub3;, a&sub0;d&sub2;, a&sub0;d&sub1;, a&sub0;d&sub0;" addiert, der um ein Bit nach rechts verschoben wurde.
  • Entsprechend werden "a&sub2;d&sub3;, a&sub2;d&sub2;, a&sub2;d&sub1;, a&sub2;d&sub0;" und "a&sub3;d&sub3;, a&sub3;d&sub2;, a&sub3;d&sub1;, a&sub3;d&sub0;" gewonnen, um ein Bit nach rechts verschoben und dann addiert.
  • Auf diese Weise wird die Multiplikation von "d&sub3;, d&sub2;, d&sub1;, d&sub0;" mit "a&sub3;, a&sub2;, a&sub1;, a&sub0;" durchgeführt und dann das Produkt "c&sub7;, c&sub6;, c&sub5;, c&sub4;, c&sub3;, c&sub2;, c&sub1;, c&sub0;" gewonnen.
  • In Fig. 2 wird der in der beschriebenen Weise gewonnene Kompensationswert ((R - A) DD) in der Verriegelungsschaltung 36 gespeichert. Nachdem der Kompensationswert ((R - A) DD) in der Verriegelungsschaltung 36 gespeichert wurde, läuft ein Modus ab, bei dem der Kompensationswert ((R - A) DD) zu dem Wert A(V) an der Ausgangsposition addiert und ein kompensierter Wert gewonnen wird.
  • In diesem Modus wird der Wert A(V) an der Ausgangsposition von dem Eingang 32 über den Multiplexer 31 ausgegeben. Der Wert A(V) wird dem Addierer 35 über die Nullbestimmungsschaltung 34 zugeführt.
  • In der Verriegelungsschaltung 36 wird der in dem Kompensationswert-Berechnungsmodus gewonnene Kompensationswert ((R - A) DD) gespeichert. Der Kompensationswert ((R - DD) wird über den Multiplexer 38 dem Addierer 35 zugeführt. In dem Addierer 35 wird der Kompensationswert ((R - A) DD) zu dem Wert A(V) an der Ausgangsposition addiert. Das Ergebnis wird dann in der Verriegelungsschaltung 36 gespeichert.
  • Wenn der Wert (A(V) - (R - A) DD) in dem der Kompensationswert ((R - A) DD) zu dem Wert A(V) addiert wurde, in der Verriegelungsschaltung 36 gespeichert ist, läuft der DDA-Modus ab.
  • In dem DDA-Modus gibt der Multiplexer 31 die an dem Eingang 33 anliegende Variation DD aus. Diese wird dem Addierer 35 über die Nullbestimmungsschaltung 34 zugeführt.
  • In dem Addierer 35 wird der in der Verriegelungsschaltung 36 gespeicherte frühere Wert zu der Variation DD addiert. Das Ergebnis wird dann in der Verriegelungsschaltung 36 gespeichert. Der Rechenvorgang, bei dem die Variation DD addiert wird, wird wiederholt.
  • c. Beschreibung des Schattierungsverfahrens
  • Im folgenden wird das Schattierungsverfahren gemäß der Erfindung beschrieben.
  • Es sei angenommen, daß als Grundelement für die Approximierung einer gekrümmten Fläche durch eine Vielzahl von Polygonen ein Trapezoid gewonnen wird, wie es in Fig. 5 dargestellt ist. In Fig. 5 sind die Schnittpunkte der gestrichelten vertikalen Linien und der gestrichelten horizontalen Linien Koordinatengitterpunkte. An den Koordinatengitterpunkten befinden sich Pixel. Der Abstand zwischen zwei vertikalen oder horizontalen Koordinatengittern ist gleich 1. Durch Eingeben der Werte LS, LE, RS und RE an den Ecken des Trapezoids (horizontaler Wert X, vertikaler Wert Y, Tiefenwert Z, Helligkeitswert R (Rotwert), G (Grünwert) und B (Blauwert)) werden die Pixelwerte an den Koordinatengitterpunkten des Trapezoids durch lineare Interpolation gewonnen.
  • C1. Berechnungen, die für den Prozeß benötigt werden
  • In dem oben erwähnten Schattierungsprozeß werden die folgenden Berechnungen durchgeführt:
  • - Berechnung der Variation in vertikaler Richtung auf der linken Seite (Gleichung (11))
  • - Berechnung der Variation in vertikaler Richtung auf der rechten Seite (Gleichung (12))
  • - Kompensationsrechnung in vertikaler Richtung auf der linken Seite (Gleichung (13))
  • - Kompensationsrechnung in vertikaler Richtung auf der rechten Seite (Gleichung (14))
  • - DDA-Berechnung in vertikaler Richtung auf der linken Seite (Gleichung (15))
  • - DDA-Berechnung in vertikaler Richtung auf der rechten Seite (Gleichung (16))
  • - Berechnung der Variation in horizontaler Richtung (Gleichung (17))
  • - Kompensationsrechnung in horizontaler Richtung (Gleichung (18))
  • - DDA-Berechnung in horizontaler Richtung (Gleichung (19))
  • - Berechnung der Variation in vertikaler Richtung auf der linken Seite
  • Zunächst wird die Berechnung in vertikaler Richtung beschrieben. Eine Variation DL(X, Z, R, G, B) jedes Werts zwischen zwei Koordinatengitterpunkten in vertikaler Richtung auf der linken Seite ist durch die folgende Gleichung gegeben
  • (11) DL(X, Z, R, G,B) = LE(X, Z, R, G, B) - LS(X Z, R, G, B)/LE(Y) - LS(Y)
  • Hierin bedeuten
  • LS(X, Y): horizontaler Wert X und vertikaler Wert Y an der oberen linken Ecke LS,
  • LS(Z): Tiefenwert Z an der oberen linken Ecke LS,
  • LS(R, G, B): Helligkeitswerte R, G und B an der oberen linken Ecke LS,
  • LE(X, Y): horizontaler Wert X und vertikaler Wert Y an der unteren linken Ecke LE,
  • LE(Z): Tiefenwert Z an der unteren linken Ecke LE und
  • LE(R G, B): Helligkeitswerte R, G und B an der unteren linken Ecke LE.
  • - Berechnung der Variation in vertikaler Richtung auf der rechten Seite
  • In ähnlicher Weise wird eine Variation DR(X Z, R, G, B) zwischen zwei Koordinatengitterpunkten in vertikaler Richtung auf der rechten Seite durch die folgende Gleichung gewonnen:
  • (12) DR(X, Z, R, G, B) = RE(X, Z, R, G, B) - RS(X Z, R, G, B)/RE(Y) - RS(Y)
  • Hierin bedeuten
  • RS(X, Y): horizontaler Wert X und vertikaler Wert Y an der oberen rechten Ecke RS,
  • RS(Z): Tiefenwert Z an der oberen rechten Ecke RS,
  • RS(R, G, B): Helligkeitswerte R, G und B an der oberen rechten Ecke RS,
  • RE(X, Y): horizontaler Wert X und vertikaler Wert Y an der unteren rechte Ecke RS,
  • RE(Z): Tiefenwert Z an der unteren rechten Ecke RE und
  • RE(R, G, B): Helligkeitswerte R, G und B an der unteren rechten Ecke RE.
  • - DDA-Berechnung in vertikaler Richtung auf der linken Seite
  • Da der Abstand zwischen zwei vertikalen Pixeln oder zwei horizontalen Pixeln gleich 1 ist, wird bei der Subpixel-Adressierung der Abstand von der oberen linken Ecke LS zu der nächstliegenden Abtastzeile y&sub0; folgendermaßen gewonnen
  • 1 - (LS(Y) - Int(LS(Y))
  • Hierin bedeutet Int eine Berechnung, mit der der Dezimalteil auf 0 gesetzt wird. (Mit anderen Worten, mit (LS(Y) - Int(LS(Y)) kann der Dezimalteil des vertikalen Werts Y der Ecke LS zu ermittelt werden.)
  • Somit wird der Wert HS&sub0;(X, Z, R, G, B) an dem linken Ende der Abtastzeile y&sub0; durch die folgende Gleichung gewonnen:
  • (13) HS&sub0;(X, Z, R, G, B) = LS(X, Z, R, G, B) + (1 - (LS(Y) - Int(LS(Y))) x DL(X, Z, R, G, B)
  • Mit Hilfe dieser Gleichung wird die Kompensationsberechnung in vertikaler Richtung auf der linken Seite durchgeführt. Die Kompensationsrechnung wird in der gleichen Weise wie bei der obigen Gleichung (2) durchgeführt.
  • - Kompensationsrechnung in vertikaler Richtung auf der rechten Seite
  • In ähnlicher Weise wird der Wert HE&sub0;(X, Z, R, G, B) an dem rechten Ende der Abtastzeile y&sub0; durch die folgende Gleichung gewonnen:
  • (14) HE&sub0;(X, Z, R, G, B) = RS(X, Z, R, G, B) + (1 - (RS(Y) - Int(RS(Y))) x DR(X, Z, R, G, B)
  • Diese Gleichung wird für die Kompensationsrechnung in vertikaler Richtung auf der rechten Seite verwendet.
  • - DDA-Berechnung in vertikaler Richtung auf der linken Seite
  • Der Wert HSj+1(X, Z, R, G, B) an dem linken Ende der nächsten Abtastzeile yj+1 wird durch die DDA-Berechnung in vertikaler Richtung auf der linken Seite gewonnen, bei der der Wert HSj(X, Z, R, G, B) an dem linken Ende der vorherigen Abtastzeile yj zu der Variation DL(X, Z, R, G, B) in vertikaler Richtung auf der linken Seite addiert wird. Mit anderen Worten, der Wert HSj+1(X, Z, R, G, B) an dem linken Ende der nächsten Abtastzeile yj+1 wird durch die folgende Gleichung gewonnen:
  • (15) HSj+1(X, Z, R, G, B) = HSj(X, Z, R, G, B) + DL(X, Z, R, G, B)
  • - DDA-Berechnung in vertikaler Richtung auf der rechten Seite
  • In ähnlicher Weise wird der Wert Hej+1 an dem rechten Ende der nächsten Abtastzeile yj+1 durch DDA-Berechnung in vertikaler Richtung auf der rechten Seite gewonnen. Mit anderen Worten, der Wert Hej+1(X, Z, R, G, B) an dem rechten Ende der Abtastzeile yj+1 wird durch die folgende Gleichung gewonnen:
  • (16) HEj+1(X, Z, R, G, B) = HEj(X, Z, R, G, B) + DR(X, Z, R, G, B)
  • - Berechnung der Variation in horizontaler Richtung
  • Im folgenden wird die Berechnung der Variation in horizontaler Richtung beschrieben. Mit dem (durch die Gleichungen (3) und (5) gewonnenen) Wert HSj(X, Z, R, G, B) an dem linken Ende der Abtastzeile yj und dem (durch die Gleichungen (14) und (16) gewonnenen) Wert Hej(X, Z, R, G, B) an dem rechten Ende der Abtastzeile yj wird die Variation DHj(Z, R, G, B) aller Werte zwischen zwei Koordinatengittern in horizontaler Richtung der Abtastzeile yj nach folgender Gleichung ermittelt:
  • (17) DHj(X, Z, R, G, B) = HEj(X, Z, R, G, B) - HSj(X, Z, R, G, B)/HEj(Y) - HSj(Y)
  • - Kompensationsrechnung in horizontaler Richtung
  • Der Pixelwert Hj0(Z, R, G, B) an einem Koordinatengitterpunkt in der Nähe des linken Endes der Abtastzeile yj wird mit dem Wert HSj(Z, R, G, B) an dem linken Ende der Abtastzeile yj und der Variation DHj(Z, R, G, B) in horizontaler Richtung durch die folgende Gleichung gewonnen:
  • (18) Hj0(Z, R, G, B) = HSj(Z, R, G, B) + (1 - (HSj(X) - Int(HSj(X)) x DHj(Z, R, G, B)
  • Diese Gleichung dient zur Durchführung der Kompensationsrechnung in horizontaler Richtung. Der Ausdruck Hj0(Z, R, G, B) ist der Wert an dem Startpunkt der Abtastzeile yj.
  • - DDA-Berechnung in horizontaler Richtung
  • Durch Wiederholung der DDA-Berechnung in horizontaler Richtung lassen sich sukzessiv die Werte an den auf den Startpunkt der Abtastzeile yj folgenden Koordinatengitterpunkten ermitteln. Mit anderen Worten, der Wert Hji+1(Z, R, G, B) an den Koordinatengitterpunkten der Abtastzeile yj kann durch die folgende Gleichung gewonnen werden:
  • (19) Hj+1(Z, R, G, B) = Hji(Z, R, G, B) + DHj(Z, R, G, B)
  • c2. Zeichenprozedur
  • Anhand von Fig. 6 wird eine Zeichenprozedur des Schattierungsverfahrens nach einem Ausführungsbeispiel der Erfindung beschrieben.
  • Zunächst wird die Variation DL(X, Z, R, G, B) in vertikaler Richtung auf der linken Seite, wo die Ecke LS und die Ecke LE miteinander verbunden sind, (in dem Schritt 1) nach Gleichung (11) gewonnen. Auf der anderen Seite wird nach Gleichung (12) die Variation DR(X, Z, R, G, B) in vertikaler Richtung auf der rechten Seite, wo die Ecke RS und die Ecke RE miteinander verbunden sind, (in dem Schritt 2) gewonnen.
  • Dann wird die Kompensationsrechnung in vertikaler Richtung auf der linken Seite nach Gleichung (13) durchgeführt und dadurch der Wert HS&sub0;(X, Z, R, G, B) an dem linken Ende der ersten Abtastzeile y&sub0; (in dem Schritt 3) gewonnen. Andererseits wird die Kompensationsrechnung in vertikaler Richtung auf der rechten Seite nach Gleichung (14) durchgeführt und dadurch der Wert HE&sub0;(X, Z, R, G, B) an dem rechten Ende der ersten Abtastzeile y&sub0; (in dem Schritt 4) gewonnen. Die Schritte 3 und 4 können parallel ausgeführt werden.
  • Nachdem in den Schritten 3 und 4 der Wert HS&sub0;(X, Z, R, G, B) an dem linken Ende der ersten Abtastzeile y&sub0; und der Wert HE&sub0;(X, Z, R, G, B) an dem rechten Ende dieser Abtastzeile ermittelt wurden, wird (in dem Schritt 5) die Variation DH&sub0;(Z, R, G, B) in horizontaler Richtung der ersten Abtastzeile y&sub0; nach Gleichung (17) ermittelt.
  • Nach Gleichung (18) wird die Kompensationsrechnung in horizontaler Richtung der ersten Abtastzeile y&sub0; durchgeführt und dadurch der Wert H&sub0;&sub0;(Z, R, G, B) eines Koordinatengitterpunkts in der Nähe des linken Endes der ersten Abtastzeile y&sub0; (in dem Schritt 6) gewonnen.
  • Wenn der Wert H&sub0;&sub0;(Z, R, G, B) an dem Startpunkt der Abtastzeile y&sub0; ermittelt ist, wird die DDA-Berechnung, bei der die Variation DH&sub0;(Z, R, G, B) in horizontaler Richtung der Abtastzeile y&sub0; addiert wird (in dem Schritt 7) wiederholt. Auf diese Weise werden nacheinander die Werte H&sub0;&sub1; (X, Z, R, G, B), H&sub0;&sub2;(X, Z, R, G, B), ... usw. der auf den Startpunkt folgenden Koordinatengitterpunkte gewonnen.
  • Nachdem alle Werte H&sub0;&sub0;(X, Z, R, G, B), H&sub0;&sub1;(X, Z, R, G, B) H&sub0;&sub2;(X, Z, R, G, B) ... usw. an den Koordinatengitterpunkten der Abtastzeile Yo durch die DDA-Berechnung in vertikaler Richtung auf der linken Seite nach Gleichung (15) ermittelt wurden, wird (in dem Schritt 8) der Wert HS&sub1;(X, Z, R, G, B) an dem linken Ende der nächsten Abtastzeile y&sub1; ermittelt. Andererseits wird (in dem Schritt 9) mit Hilfe der DDA-Berechnung in vertikaler Richtung auf der rechten Seite nach Gleichung (16) der Wert HE&sub1;(X Z, R, G, B) an dem rechten Ende der nächsten Abtastzeile y&sub1; ermittelt.
  • Nachdem der Wert HS&sub1;(X Z, R, G, B) an dem linken Ende der Abtastzeile y&sub1; und der Wert HE&sub1;(X, Z, R, G, B) an dem rechten Ende dieser Abtastzeile ermittelt wurden, kehrt die Prozdur zu dem Schritt 5 zurück. In dem Schritt 5 wird die Variation DH&sub1;(X, Z, R, G, B) in horizontaler Richtung der ersten Abtastzeile y&sub1; ermittelt.
  • In dem Schritt 6 wird die Kompensationsrechnung für die nächste Abtastzeile y&sub1; nach Gleichung (18) durchgeführt und dadurch der Wert H&sub1;&sub0;(X, Z, R, G, B) an dem Startpunkt in dem Koordinatengitter der ersten Abtastzeile y&sub1; ermittelt. In dem Schritt 7 werden durch Wiederholen der DDA-Berechnung in horizontaler Richtung nach Gleichung (19) nacheinander die Werte H&sub1;&sub0;(X, Z, R, G, B), H&sub1;&sub1;(X, Z, R, G, B), ... usw. an den Koordinatengitterpunkten der Abtastzeile Yi ermittelt.
  • Nachdem alle Werte H&sub1;&sub0;(X, Z, R, G, B), H&sub1;&sub1;(X, Z, R, G, B), H&sub1;&sub2;(X, Z, R, G,B) ... usw. an den Koordinatengitterpunkten der Abtastzeile y&sub1; mit Hilfe der DDA-Berechnung in vertikaler Richtung auf der linken Seite nach Gleichung (15) gewonnen wurden, wird der Wert HS&sub2;(X, Z, R, G, B) an dem linken Ende der nächsten Abtastzeile y&sub2; (in dem Schritt 8) ermittelt. Andererseits wird durch die DDA-Berechnung in vertikaler Richtung auf der rechten Seite nach Gleichung (16) der Wert HE&sub2;(X, Z, R,G, B) an dem rechten Ende der nächsten Abtastzeile y&sub2; (in dem Schritt 9) gewonnen. Dann kehrt die Prozedur zu dem Schritt 5 zurück, und der gleiche Prozeß wird wiederholt.
  • c3. Erwiterung auf ein beliebiges Polygon
  • In dem Ausführungsbeispiel der Erfindung werden die Werte der Ecken auf der linken Seite und auf der rechten Seite nur dann gleichzeitig eingegeben, wenn die Ecke der linken Seite und die Ecke der rechten Seite auf derselben horizontalen Zeile liegen. Wenn der Wert einer Ecke eingegeben wird, wird der Wert der anderen Ecke als Nullwert behandelt. In diesem Fall wird die obige DDA-Berechnung weiterbenutzt. Auf diese Weise kann die Berechnung für ein Trapezoid auf ein beliebiges Polygon erweitert werden.
  • Es sei beispielsweise angenommen, daß ein konvexes Polygon gegeben ist, wie es in Fig. 7 dargestellt ist. Die gegebene Figur wird als Trapezoid behandelt. Wenn man die Seiten des Trapezoids betrachtet und die obere linke Ecke, die untere linke Ecke, die obere rechte Ecke und die untere rechte Ecke mit LS, LE, RS bzw. RE bezeichnet, werden die Werte zu den Ecken eingegeben.
  • In der Zeile L1 wird der Wert der Ecke A1 zu der oberen linken Ecke LS eingegeben, der Wert der Ecke A3 wird zu der unteren linken Ecke LE eingegeben, der Wert der Ecke A1 wird zu der oberen rechten Ecke RS eingegeben, und der Wert der Ecke A2 wird zu der unteren rechte Ecke RE eingegeben.
  • In der Zeile L2 befindet sich auf der rechten Seite die Ecke A2. In der Zeile L2 wird der Wert der Ecke A2 zu der oberen rechte Ecke RS eingegeben, und der Wert der Ecke A5 wird zu der unteren rechten Ecke RE eingegeben. Auf der gleichen horizontalen Zeile, auf der die Ekke A2 liegt, befindet sich auf der linken Seite keine Ecke. Somit wird die linke Seite als Nullfall behandelt.
  • In der Zeile L3 befindet sich die Ecke A3. In der Zeile L3 wird der Wert der Ecke A3 zu der oberen linken Ecke LS eingegeben, und der Wert der Ecke A4 wird zu der unteren linken Ekke LE eingegeben. Da sich in der Zeile, auf der die Ecke A3 liegt, keine Ecke auf der rechten Seite befindet, wird die rechte Seite als Nullfall behandelt.
  • In der Zeile L4 befindet sich die Ecke A4 auf der linken Seite. In der Zeile L4 wird der Wert der Ecke A4 zu der oberen linken Ecke LS eingegeben, und der Wert der Ecke A6 wird zu der linken unteren Ecke LE eingegeben. Da sich auf der rechten Seite der horizontalen Zeile, auf der die Ecke A4 liegt, keine Ecke befindet, wird die rechte Seite als Nullfall behandelt.
  • In der Zeile L5 befindet sich die Ecke AS auf der rechten Seite. In der Zeile L5 wird der Wert der Ecke AS zu der oberen rechten Ecke RS eingegeben, und der Wert der Ecke A8 wird zu der unteren rechten Ecke RE eingegeben. Da sich auf der linken Seite der horizontalen Zeile, auf der die Ecke AS liegt, keine Ecke befindet, wird die linke Seite als Nullfall behandelt.
  • In der Zeile L6 befindet sich die Ecke A6 auf der linken Seite. In der Zeile L6 wird der Wert der Ecke A6 zu der oberen linken Ecke LS eingegeben, und der Wert der Ecke A7 wird zu der unteren linken Ecke LE eingegeben. Da sich auf der rechten Seite der horizontalen Zeile, auf der die Ecke A6 liegt, keine Ecke befindet, wird die rechte Seite als Nullfall behandelt.
  • In der Zeile L7 befindet sich die Ecke A7 auf der linken Seite. In der Zeile L7 wird der Wert der Ecke A7 zu der oberen linken Ecke LS eingegeben, und der Wert der Ecke A8 wird zu der unteren linken Ecke LE eingegeben. Da sich auf der rechten Seite der horizontalen Zeile, auf der die Ecke A7 liegt, keine Ecke befindet, wird die rechte Seite als Nullfall behandelt.
  • Nur wenn in ein und derselben horizontalen Zeile sowohl auf der linken Seite als auch auf der rechten Seite jeweils eine Ecke liegt, werden die Eckenwerte der linken Seite und der rechten Seite gleichzeitig eingegeben. Wenn der Wert einer Ecke eingegeben wird, wird der Wert der anderen Ecke als Nullfall behandelt, und die vorherige DDA-Berechnung wird weiterbenutzt. Infolgedessen kann die Berechnung für ein Trapezoid auf ein beliebiges Polygon erweitert werden, ohne daß die Speicherkapazität größer wird.
  • Mit anderen Worten, in den Zeilen zwischen den Zeilen L1 und L2 wird unter Verwendung der Werte der Ecken A1 und A3 die Variation in vertikaler Richtung auf der linken Seite gewonnen und die Kompensationsrechnung in vertikaler Richtung auf der linken Seite durchgeführt. Durch die Verwendung der Werte der Ecken A1 und A2 wird zusätzlich die Variation in vertikaler Richtung auf der rechten Seite ermittelt und die Kompensationsrechnung in vertikaler Richtung auf der rechten Seite durchgeführt. Dann werden die Werte an dem linken Ende und an dem rechten Ende jeder Abtastzeile gewonnen. Mit den Ergebnissen wird dann die Variation in horizontaler Richtung ermittelt. Sodann wird die Kompensationsrechnung in horizontaler Richtung ausgeführt und der Wert an dem Startpunkt ermittelt. Mit Hilfe der DDA- Berechnung in horizontaler Richtung werden die Pixelwerte an den Koordinatengitterpunkten auf den Abtastzeilen zwischen den Zeilen L1 und L2 ermittelt.
  • In den Zeilen zwischen den Zeilen L2 und L3 wird auf der linken Seite die vorherige Variation in vertikaler Richtung auf der linken Seite kontinuierlich benutzt. Mit Hilfe der DDA-Berechnung in vertikaler Richtung auf der linken Seite wird der Wert an dem linken Ende der Abtastzeile gewonnen. Auf der rechten Seite wird unter Verwendung der Werte der Ecken A2 und A5 die Variation auf der rechten Seite gewonnen und die Kompensationsrechnung auf der rechten Seite durchgeführt. Dann wird der Wert an dem rechten Ende auf der Abtastzeile gewonnen. Dadurch wiederum wird die Variation in horizontaler Richtung gewonnen. Anschließend wird die Kompensationsrechnung in horizontaler Richtung ausgeführt und der Wert an dem Startpunkt gewonnen. Mit Hilfe der DDA-Berechnung in horizontaler Richtung werden die Pixelwerte an den Koordinatengitterpunkten auf den Abtastzeilen zwischen den Linien L2 und L3 gewonnen.
  • In gleicher Weise wird in den Zeilen zwischen den Zeilen L3 und L4 auf der linken Seite mit Hilfe der Werte der Ecken A3 und A4 die Variation in vertikaler Richtung auf der linken Seite gewonnen. Auf der rechten Seite wird die vorherige Variation kontinuierlich weiterbenutzt.
  • In den Zeilen zwischen den Zeilen L4 und L5 wird unter Verwendung der Werte der Ecken A4 und A6 die Variation in vertikaler Richtung auf der linken Seite gewonnen. Auf der rechten Seite wird die vorherige Variation kontinuierlich weiterbenutzt.
  • In den Zeilen zwischen den Zeilen L5 und L6 wird auf der linken Seite die vorherige Variation kontinuierlich weiterbenutzt. Auf der rechten Seite wird unter Verwendung der Werte der Ecken A5 und A8 die Variation in vertikaler Richtung gewonnen.
  • In den Zeilen zwischen den Zeilen L6 und L7 wird auf der linken Seite unter Verwendung der Werte der Ecken A6 und A7 die Variation in vertikaler Richtung gewonnen. Auf der rechten Seite wird die vorherige Variation kontinuierlich weiterbenutzt.
  • In den Zeilen zwischen den Zeilen L7 und L8 wird auf der linken Seite unter Verwendung der Werte der Ecken A7 und A8 die Variation in vertikaler Richtung auf der linken Seite gewonnen. Auf der rechten Seite wird die vorherige Variation kontinuierlich weiterbenutzt.
  • Durch die Verarbeitung eines beliebigen Polygons in der vorangehend beschriebenen Weise wird die Kompensationsrechnung nur für die Ecken und nicht für die Linienabschnitte durchgeführt. Dadurch wird die Kontinuität der Figur verbessert. Mit anderen Worten, wenn eine gekrümmte Oberfläche durch Polygone approxirniert wird, werden Flächenteilstücke 45 und 46 plaziert, wie dies in Fig. 8 dargestellt ist. Für die Verarbeitung der Flächenteilstücke durch Verwendung bestimmter Polygone muß das Flächenteilstück 46 in die Flächenteilstücke 46A und 46B unterteilt werden. Dabei kann in dem Verbindungsabschnitt 47 zwischen dem Flächenteilstück 46A, dem Flächenteilstück 46B und dem Flächenteilstück 45 ein Berechnungsfehler auftreten.
  • Wenn ein beliebiges Polygon verarbeitet wird, tritt, wie oben beschrieben wurde, keine Lücke zwischen den Zeilenabschnitten und dem verbundenen Abschnitt jedes Flächenteilstücks auf. Ein Abschnitt, der keine Ecke aufweist wird als Nullfall behandelt und die vorherige DDA-Berechnung wird die vorherige Variation kontinuierlich weiterbenutzt.
  • c4. Verarbeitung für den Fall, daß ein großer Berechnungsfehler auftritt
  • Falls die Länge in vertikaler Richtung eines Trapezoids, das durch Approximieren einer gekrümmten Fläche gewonnen wird, kleiner ist als 1, wird bei der Ermittlung der Variation in vertikaler Richtung eine Division durchgeführt, wobei der Divisor einen Wert hat, der nahe bei Null liegt. Deshalb ist die Wahrscheinlichkeit groß, daß der Dividierer überläuft. Wenn ein Flächenteilstück unter Verwendung von übergelaufenen Werten auf der Anzeigevorrichtung wiedergegeben wird, gerät diese in Unordnung.
  • Um dies zu verhindern, können Flächenteilstücke, deren Länge in vertikaler Richtung nahe bei Null liegt, ignoriert werden.
  • Wenn jedoch ein Flächenteilstück, dessen Länge in vertikaler Richtung nahe bei Null liegt, ignoriert wird, muß man sich mit einem Problem befassen, das die Kontinuität des Flächenteilstücks betrifft.
  • Wenn in einem Ausführungsbeispiel der Erfindung ein Trapezoid verarbeitet wird, dessen Länge in vertikaler Richtung kleiner ist als 1, wird eine Seite mit großer Länge, die zu einem Überlauf des Dividierers führen würde, durch eine vertikale Seite ersetzt, deren Startpunkt der gleiche ist wie zuvor. Auf diese Weise kann verhindert werden, daß der Dividierer überläuft. Darüber hinaus wird die Kontinuität des Flächenteilstücks verbessert.
  • Mit anderen Worten, es wird davon ausgegangen, daß ein Trapezoid vorliegt, dessen Länge in vertikaler Richtung gleich 1 oder kleiner ist, wie dies in Fig. 9 dargestellt ist. Da dieses Flächenteilstück nicht in einem Koordinatengitterpunkt liegt, wenn es angezeigt wird, tritt ein Problem bezüglich der Kontinuität des Flächenteilstücks auf. Wenn für dieses Flächenteilstück die Variation auf der linken Seite gewonnen wird, an der die obere linke Ecke LS1 mit der unteren linken Ecke LE1 verbunden ist, besteht die Möglichkeit, daß der Dividierer überläuft, da die linke Seite nahezu horizontal verläuft und ihre Länge im Vergleich zu der Länge in vertikaler Richtung sehr groß ist.
  • Um dies zu verhindern, wird die linke Seitenlinie (LS1 bis LE1), wie in Fig. 10 dargestellt, durch eine vertikale Linie (LS1 bis LE2) ersetzt, die in dem Startpunkt LS1 beginnt, der mit dem vorherigen Startpunkt übereinstimmt. Das Flächenteilstück wird also als Trapezoid 48B verarbeitet. Wenn die annähernd horizontale Seite (LS1 bis LE1) durch die vertikale Seite (LS1 bis LE2) ersetzt wird, verkürzt sich die Länge der Seite. Deshalb läuft der Dividierer nicht über, wenn die Variation auf der linken Seite ermittelt wird.
  • Dabei wird, wie in Fig. 10 dargestellt, die rechte Seite des Flächenteilstücks 49A durch die vertikale Seite (RS3 bis RE4) ersetzt, die wie die frühere Seite mit RS3 beginnt. Dadurch wird das Flächenteilstück als Trapezoid 498 verarbeitet.
  • Da die linke Seite (LS1 bis LE2) des Trapezoids 488 mit der rechten Seite (RS3 bis RE4) des Trapezoids 498 übereinstimmt, tritt das erwähnte Problem bezüglich der Kontinuität des Flächenteilstücks hier nicht auf.
  • d. Schattierungsvorrichtung d1. Struktur der Schattierungsvorrichtung
  • Fig. 11 zeigt eine schematische Ansicht der Hardwarestruktur zur Gewinnung des Tiefenwerts Z und der Helligkeitswerte R, G und B des Pixels an jedem Koordinatengitterpunkt in der oben beschriebenen Weise. Zur Vereinfachung der Darstellung wird in Fig. 11 jeder Wert (Z, R, G, B) durch eine einzelne Hardwareeinheit verarbeitet. In der Praxis sind verschiedene Hardwareeinheiten für die Gewinnung aller Werte vorgesehen, die parallel arbeiten.
  • In Fig. 11 wird der Wert der oberen linken Ecke LS(X, Y, Z, R, G, B) einem Eingang 11 zugeführt, und der Wert der unteren linken Ecke LE(X, Y, Z, R, G, B) wird einem Eingang 12 zugeführt. Der Wert der oberen rechten Ecke RS(X, Y, Z, R, G, B) wird einem Eingang 13 zugeführt, und der Wert der unteren rechten Ecke RE(X, Y, Z, R, G, B) wird einem Eingang 14 zugeführt.
  • Der Wert an dem Eingang 11 wird einem Eingang a eines Multiplexers 15 zugeführt. Der Wert an dem Eingang 13 wird einem Eingang b des Multiplexers 15 zugeführt.
  • Der Wert an dem Eingang 12 wird einem Eingang a eines Multiplexers 16 zugeführt. Der Wert an dem Eingang 14 wird einem Eingang b des Multiplexers 16 zugeführt.
  • Der Multiplexer 15 wählt entweder den Wert an dem Eingang 11 oder den Wert an dem Eingang 13 aus. Der Multiplexer 16 wählt entweder den Wert an dem Eingang 12 oder den Wert an dem Eingang 14 aus.
  • Die Ausgangssignale der Multiplexer 15 und 16 werden einem Subtrahierer 17 zugeführt.
  • Das Ausgangssignal des Subtrahierers 17 wird einem Eingang a eines Multiplexers 18 zugeführt. Das Ausgangssignal eines Subtrahierers 22 wird einem Eingang b des Multiplexers 18 zugeführt.
  • Das Ausgangssignal des Multiplexers 18 wird einem Dividierer 19 zugeführt. Das Ausgangssignal des Dividierers 19 wird einer DDA-Rechenschaltung 20 mit Kompensationsrechenfunktion für die linke Seite und einer DDA-Rechenschaltung 21 mit einer Kompensations- Rechnungsfunktion für die rechte Seite zugeführt. Außerdem wird das Ausgangssignal des Dividierers 19 einer DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale zugeführt.
  • Die Ausgangssignale der DDA-Rechenschaltung 20 mit Kompensationsrechenfunktion für die linke Seite und der DDA-Rechenschaltung 21 mit Kompensationsrechenfunktion für die rechte Seite werden dem Subtrahierer 22 zugeführt. Das Ausgangssignal des Subtrahierers 22 wird dem Eingang b des Multiplexers 18 zugeführt.
  • Das Ausgangssignal der DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale wird an einem Ausgang 24 ausgegeben.
  • Zunächst wird der Multiplexer 15 auf die Position a gesetzt, so daß der Wert der oberen linke Ecke LS(X, Y, Z, R, G, B) von dem Eingang 11 an den Subtrahierer 17 geliefert wird. Andererseits wird der Multiplexer 16 in die Position a gesetzt, so daß der Wert der unteren linken Ecke LE(X, Y, Z, R, G, B) an den Subtrahierer 17 geliefert wird.
  • Der Subtrahierer 17 subtrahiert den Wert der unteren linken Ecke von dem Wert der oberen linken Ecke und liefert das Ergebnis der Subtraktion an den Eingang a des Multiplexers 18. 18.
  • Der Multiplexer 18 ist in die Position a gesetzt, so daß das Ergebnis der Subtraktion dem Dividierer 19 zugeführt wird.
  • Der Dividierer 19 berechnet die Variation in vertikaler Richtung auf der linken Seite nach Gleichung (11). Die Variation in vertikaler Richtung auf der linken Seite wird der DDA-Rechenschaltung 20 der Kompensationsrechenfunktion für die linke Seite zugeführt.
  • Nachdem die Variation in vertikaler Richtung auf der linken Seite der DDA-Rechenschaltung 20 mit Kompensationsrechenfunktion für die linke Seite zugeführt wurde, wird der Multiplexer 15 in die Position b gesetzt und dann der Wert der oberen rechten Ecke RS(X, Y, Z, R, G, B) von dem Eingang 13 an den Subtrahierer 17 gegeben. Der Multiplexer 16 wird in die Position b gesetzt und liefert den Wert der unteren rechten Ecke RE(X, Y, Z, R, G, B) von dem Eingang 14 an den Subtrahierer 17.
  • Der Subtrahierer 17 subtrahiert den Wert der unteren rechten Ecke von dem Wert der oberen rechten Ecke und liefert das Ergebnis der Subtraktion an den Eingang a des Multiplexers 18.
  • Der Multiplexer 18 wird in die Position a gesetzt und liefert das Ergebnis der Subtraktion an den Dividierer 19. Der Dividierer 19 berechnet die Variation in vertikaler Richtung nach Gleichung (12). Die Variation in vertikaler Richtung auf der rechten Seite wird der DDA-Rechenschaltung 21 mit Kompensationsrechenfunktion für die rechte Seite zugeführt.
  • Die Variation in vertikaler Richtung auf der linken Seite wird der DDA-Rechenschaltung 20 mit Kompensationsrechenfunktion für die linke Seite zugeführt, während die Variation in vertikaler Richtung auf der rechten Seite der DDA-Rechenschaltung 21 mit Kompensationsrechenfunktion für die rechte Seite zugeführt wird. Anschließend werden in der DDA-Rechenschaltung 20 mit Kompensationsrechenfunktion für die linke Seite und in der DDA-Rechenschaltung 21 mit Kompensationsrechenfunktion für die rechte Seite die Kompensationsberechnungen in vertikaler Richtung auf der linken Seite bzw. in vertikaler Richtung auf der rechten Seite durchgeführt.
  • Auf diese Weise werden der linke Endwert und der rechte Endwert der Abtastzeile gewonnen.
  • Der linke Endwert und der rechte Endwert der Abtastzeile werden dem Subtrahierer 22 zugeführt. Der Subtrahierer 22 subtrahiert den rechten Endwert der Abtastzeile von dem linken Endwert der Abtastzeile.
  • Die DDA-Rechenschaltung 20 mit Kompensationsrechenfunktion für die linke Seite und die DDA-Rechenschaltung 21 mit Kompensationsrechenfunktion für die rechte Seite führen die Kompensationsrechnung in vertikaler Richtung auf der linken Seite bzw. in vertikaler Richtung auf der rechten Seite durch. Anschließend wird der Multiplexer 18 in die Position b umgeschaltet.
  • Auf diese Weise wird das Subtraktionsergebnis, das von dem Subtrahierer 22 durch Subtraktion des rechten Endwert der Abtastzeile von dem linken Endwert der Abtastzeile ermittelt wurde, über den Multiplexer 18 an den Dividierer 19 gegeben.
  • Der Dividierer 19 berechnet nach Gleichung (17) die Variation in horizontaler Richtung. Die Variation in horizontaler Richtung wird der DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale zugeführt.
  • Die DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale führt die Kompensationsrechnung in horizontaler Richtung aus und ermittelt den Wert an dem Koordinatengitterpunkt im Startpunkt der Abtastzeile. Die DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale wiederholt die DDA-Berechnung für den Wert im Startpunkt und gewinnt dadurch nacheinander die Werte an den Koordinatengitterpunkten. Diese Werte werden an dem Ausgang 24 ausgegeben.
  • Nachdem alle Werte an den Koordinatengitterpunkten einer Abtastzeile gewonnen wurden, führen die DDA-Rechenschaltung 20 mit Kompensationsrechenfunktion für die linke Seite und die DDA-Rechenschaltung 21 mit Kompensationsrechenfunktion für die rechte Seite die DDA-Berechnung in vertikaler Richtung auf der linken Seite und die DDA-Berechnung in vertikaler Richtung auf der rechten Seite durch und ermittelt so den rechten Endwert und den linken Endwert der nächsten Abtastzeile.
  • Der linke Endwert und der rechte Endwert der nächsten Abtastzeile werden dem Subtrahierer 22 zugeführt. Der Subtrahierer 22 subtrahiert den rechten Endwert der nächsten Abtastzeile von dem linken Endwert der nächsten Abtastzeile.
  • Das Subtraktionsergebnis des Subtrahierers 22, in dem der rechte Endwert der nächsten Abtastzeile von dem linken Endwert der nächsten Abtastzeile subtrahiert ist, wird über den Multiplexer 18 an den Dividierer 19 gegeben.
  • Der Dividierer 19 ermittelt die Variation in horizontaler Richtung für die nächste Abtastzeile. Die Variation in horizontaler Richtung wird an die DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale gegeben.
  • Die DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale führt die Kompensationsrechnung in horizontaler Richtung aus und ermittelt den Wert in dem Koordinatengitterpunkt am Startpunkt der nächsten Abtastzeile. Die DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale wiederholt die DDA-Berechnung für den Startpunkt und gewinnt dann sukzessiv die Werte an den Koordinatengitterpunkten auf der Abtastzeile. Die Ergebniswerte werden an dem Ausgang 24 ausgegeben.
  • Die gleichen Operationen werden wiederholt.
  • d2. Rechengenauigkeit und Bitzahl
  • Selbst wenn die in Fig. 11 dargestellte Hardware separat für jeden Wert (Tiefenwert Z und Helligkeitswerte R, G und B) vorgesehen ist, so daß alle Werte parallel berechnet werden, wird der Umfang der Schaltung nicht größer. Da die für die Berechnung der einzelnen Werte benötigte Bitzahl des Dezimalteils festgelegt ist, kann jeder Wert mit Festkomma-Arithmetik berechnet werden.
  • Diese Operation wird im folgenden beschrieben. Zunächst wird die Beziehung zwischen dem Maximalwert der Vorrichtungskoordinaten des horizontalen Werts X und des vertikalen Werts Y und die Bitzahl des Dezimalteils des Tiefenwerts Z betrachtet.
  • Der Tiefenwert Z wird durch Wiederholung der DDA-Berechnung gewonnen. Somit wird der Fehler des Tiefenwerts Z maximiert, wenn die DDA-Berechnung von einem Ende bis zu dem anderen Ende des Bildschirms wiederholt wird. Der maximale Fehler sollte 1 oder kleiner sein.
  • Es sei angenommen, daß die Länge der Koordinaten der Vorrichtung von einem Ende des Bildschirms bis zu dem anderen Ende n Bits beträgt. Zur Gewinnung des Tiefenwerts Z durch Wiederholen der DDA-Berechnung von einem Ende zu dem anderen Ende des Bildschirms wird dann die DDA-Berechnung insgesamt 2n mal wiederholt. Wenn der Fehler der DDA-Berechnung jedesmal gleich &epsi; ist, wird der Maximalwert des Fehlers 2n x &epsi;. Um den Fehler des Tiefenwerts Z auf 1 oder weniger zu herabzusetzen, sollte der Fehler pro DDA-Berechnung (&epsi; < 1/2n) sein. Mit anderen Worten, der Tiefenwert Z sollte eine Genauigkeit von (1/2n) haben. Die Bitzahl des Dezimalteils des Tiefenwerts Z sollte wenigstens gleich n sein.
  • Für die Beziehung zwischen der Bitzahl des Dezirnalteils des Tiefenwerts Z, nämlich ZFB, und den Maximalwert der Vorrichtungskoordinaten des Horizontalwerts X und des Vertikalwerts Y sollte folgendes gelten:
  • ZFB = Max(XD, YD)
  • Hierin bedeuten:
  • XD: Maximalwert der Vorrichtungskoordinaten des Horizontalwerts X (Bitzahl des ganzzahligen Teils) und
  • YD: Maximalwert der Vorrichtungskoordinaten des vertikalen Werts Y (Bitzahl des ganzzahligen Teils).
  • Im folgenden werde die Beziehung zwischen dem Maximalwert des Tiefenwerts Z und der Bitzahl des Dezimalteils des horizontalen Werts X und des vertikalen Werts Y betrachtet.
  • Wie aus den Gleichungen (13), (14) und (18) hervorgeht, wird bei der Kompensationsrechnung eine Multiplikation der Dezimalteile des Vertikalwerts Y, (LS(Y) - Int(LS(Y)) und (RS(Y) - Int(RS(Y)), des Dezimalteils des horizontalen Wert Y (HSj(X) - Int(HS(X)) und der Variationen des Tiefenwerts Z, (DL(Z)), (DR(Z) und (DHj(Z)) durchgeführt. Damit der Fehler 1 oder kleiner wird, muß eine Bitzahl vorgesehen sein, die der Zahl der signifikanten Bits der Variation des Tiefenwerts Z für den Dezimalteil des Horizontalwerts X und denjenigen des Vertikalwerts Y entspricht.
  • Wenn die Variation des Tiefenwerts Z maximal wird, werden alle Bits des ganzzahligen Teils signifikante Bits. Somit sollte die Bitzahl des horizontalen Werts Z, nämlich XFD, und diejenige des vertikalen Werts Y, nämlich YFD, die dem Maximalwert des Tiefenwerts Z entsprechende Bitzahl sein.
  • Mit anderen Worten, die Bitzahl des Dezimalteils von X, d.h. XFD, und diejenige von Y, d.h. YFD, sollte sein:
  • XFD = ZD
  • YFD = ZD
  • mit ZD: Maximalwert des Tiefenwerts Z.
  • Die für den Tiefenwert Z benötigte Bitzahl wurde oben beschrieben. Die Bitzahl des Dezimalteils, die für die Berechnung der Helligkeitswerte R, G und B benötigt wird, kann in ähnlicher Weise ermittelt werden. Auf diese Weise wird die für die Berechnung jedes Werts erforderliche Bitzahl des Dezimalteils bestimmt. Es ist deshalb nicht notwendig, die Berechnung in Gleitkomma-Arithmetik durchzuführen. Wenn keine Gleitkomma-Arithmetik durchgeführt wird, vergrößert sich der Umfang der Schaltung selbst dann nicht, wenn für die Berechnung der einzelnen Werte unabhängige Hardwareeinheiten vorgesehen sind.
  • e. Parallelverarbeitungs-Statusübergangsschaltung e1. Beschreibung der Grundschaltungen
  • Die in Fig. 11 dargestellte Hardware wird von einer Parallelverarbeitungs-Statusübergangsschaltung gesteuert, die in Fig. 12 dargestellt ist.
  • Die Parallelverarbeitungs-Statusübergangsschaltung besteht aus vier Schaltungstypen, nämlich Warteschaltungen, Sprungschaltungen, Vereinigungsschaltungen und Verzögerungsschaltungen. Diese Grundschaltungen werden im folgenden beschrieben.
  • - Warteschaltung
  • Die Warteschaltung hat zwei Eingänge A und B. Nachdem die Warteschaltung einen Impuls an dem Eingang A empfangen hat, stoppt sie die Ausgabe eines Impulses, bis sie einen Impuls an dem Eingang B empfängt. Wenn ein Triggerimpuls zum Starten eines bestimmten Prozesses ausgegeben wird, stoppt die Warteschaltung den Übergang zu dem nächsten Prozeß, bis der vorherige Prozeß beendet ist.
  • - Struktur der Warteschaltung
  • Die Warteschaltung hat die in Fig. 13 dargestellten Struktur. In Fig. 13 bezeichnen die Bezugszeichen 51 und 52 Eingänge. Ein Triggerimpuls T&sub1; an dem Eingang 51 wird einem Flipflop 53 und einem Eingang eines NOR-Glieds 54 zugeführt. Ein Triggerimpuls T&sub2; an dem Eingang 52 wird einem Flipflop 55 zugeführt. Den Takteingängen der Flipflops 53 und 55 wird ein Takt CLK zugeführt. Nachdem den D-Eingängen der Flipflops 53 und 55 ein Triggerimpuls zugeführt wurde, werden die Flipflops 53 und 55 gesetzt, und ihre Ausgänge gehen auf hohes Potential, wenn der Takt CLK auf hohes Potential geht. Das Ausgangssignal wird auf hohem Potential gehalten, bis jedem Rücksetzeingang ein Niederpegel-Rücksetzsignal zugeführt wird.
  • Mit 56 ist ein Rücksetzeingang bezeichnet. Ein Rücksetzsignal RST wird von dem Rücksetzeingang 56 einem Eingang eines ODER-Glieds 57 zugeführt. Das Ausgangssignal des ODER-Glieds 57 wird dem anderen Eingang des NOR-Glieds 54 und einem Inverter 58 zugeführt. Das Ausgangssignal des NOR-Glieds 54 wird dem Rücksetzeingang des Flipflops 55 zugeführt. Das Ausgangssignal des lnverters 58 wird dem Rücksetzeingang des Flipflops 53 und einem Eingang eines NAND-Glieds 59 zugeführt.
  • Das Ausgangssignal des Flipflops 53 wird einem Eingang des NAND-Glieds 59 zugeführt. Das Ausgangssignal des Flipflops 55 wird einem Eingang des NAND-Glieds 59 zugeführt. Das Ausgangssignal des NAND-Glieds 59 wird einem Eingang eines D-Flipflops 60 zugeführt. Dem Takteingang des D-Flipflops 60 wird ein Takt CLK zugeführt. Das Ausgangssignal des D-Flipflops 60 wird über einen Inverter 61 an einem Ausgang 62 ausgegeben. Das invertierte Ausgangssignal des D-Flipflops 60 wird dem anderen Eingang des ODER-Glieds 57 zugeführt.
  • Wenn das Rücksetzsignal RST, das auf hohen Pegel geht, dem Rücksetzeingang 56 zugeführt wird, geht das Ausgangssignal des ODER-Glieds 57 auf hohen Pegel, das Ausgangssignal des Inverters 58 auf niedrigen Pegel und das Ausgangssignal des NOR-Glieds 54 auf niedrigen Pegel. Auf diese Weise werden die Flipflops 53 und 55 zurückgesetzt.
  • Wenn das Ausgangssignal des lnverters 58 auf niedrigen Pegel geht, geht das Ausgangssignal des NAND-Glieds 59 auf hohen Pegel, und das Ausgangssignal des D-Flipflops 60 wird auf hohem Pegel gehalten. Infolgedessen geht der Ausgang, an dem das Ausgangssignal des D-Flipflops 60 von dem Inverter 61 invertiert wurde auf niedrigen Pegel.
  • Es sei nun angenommen, daß in einem Zeitpunkt t&sub1; dem Eingang 51 der Triggerimpuls T&sub1;, wie in Fig. 14B dargestellt, zugeführt wird. Der Triggerimpuls T&sub1; wird, wie in Fig. 14D dargestellt, in dem Zeitpunkt t&sub2;, wenn der Takt CLK (Fig. 14A) auf hohen Pegel geht, von dem Flipflop 53 aufgenommen, so daß das Ausgangssignal Q1 des Flipflops 53 auf hohen Pegel geht.
  • Wenn der Triggerimpuls T&sub1; in dem Zeitpunkt t&sub3; dem Eingang 52 zugeführt wird, wie dies in Fig. 14E dargestellt ist, wird der Triggerimpuls T&sub2; in dem Zeitpunkt t&sub4;, wenn der Takt CLK (Fig. 14A) auf hohen Pegel geht, von dem Flipflop 55 aufgenommen, so daß das Ausgangssignal 02 des Flipflops 55 auf hohen Pegel geht.
  • Wie in Fig. 14D dargestellt, geht dann das Ausgangssignal des Flipflops 53 auf hohen Pegel. Wenn das D-Flipflop 60 zurückgesetzt wird, geht sein Eingangssignal auf hohen Pegel. Dadurch geht das invertierte Ausgangssignal des D-Flipflops 60 auf niedrigen Pegel, das Ausgangssignal des ODER-Glieds 57 auf niedrigen Pegel und das Ausgangssignal des Inverters 58 auf hohen Pegel. Wenn der Triggerimpuls T&sub2; zugeführt wird und das Ausgangssignal Q2 des Flipflops 55 auf hohen Pegel geht, geht das Ausgangssignal des NAND-Glieds 59 auf niedrigen Pegel.
  • Wenn in dem Zeitpunkt t&sub5; der Takt CLK auf hohen Pegel geht und das Ausgangssignal des NAND-Glieds 59 auf niedrigen Pegel geht, geht das Ausgangssignal des D-Flipflops 60 auf niedrigen Pegel. Infolgedessen geht das Ausgangssignal P an dem Ausgang 62, wie in Fig. 14F dargestellt, auf hohen Pegel.
  • Wenn das Ausgangssignal des D-Flipflops 60 auf niedrigen Pegel geht, geht das invertierte Ausgangssignal des D-Flipflops 60 auf hohen Pegel, und das Ausgangssignal des ODER- Glieds 57 geht auf hohen Pegel.
  • Wenn das Ausgangssignal des ODER-Glieds 57 auf hohen Pegel geht, geht das Ausgangssignal des Inverters 58 auf niedrigen Pegel, und das Ausgangssignal des NOR-Glieds 54 geht auf niedrigen Pegel. So werden, wie in Fig. 14D dargestellt, die Flipflops 53 und 55 zurückgesetzt.
  • Auf diese Weise gehen die Ausgangssignale der Flipflops 53 und 55 auf niedrigen Pegel, und das Ausgangssignal des Inverters 58 geht auf hohen Pegel. Infolgedessen geht das Ausgangssignal des NAND-Glieds 59 auf hohen Pegel. Wenn das Ausgangssignal des NAND- Glieds 59 auf hohen Pegel geht, geht in dem Zeitpunkt t&sub6;, wenn der Takt CLK auf hohen Pegel geht, das Ausgangssignal des D-Flipflops 60 auf hohen Pegel, so daß der Ausgangsimpuls P in dem Zeitpunkt t&sub6; auf niedrigen Pegel geht.
  • Wie Fig. 14F zeigt wird in einer solchen Warteschaltung der Impuls P an dem Ausgang 62 ausgegeben, nachdem der Triggerimpuls T&sub1; (Fig. 14B) und der Triggerimpuls T&sub2; (Fig. 14C) in dieser Reihenfolge zugeführt wurden.
  • - Sprungschaltung
  • Die Sprungschaltung besitzt zwei Eingänge A und 5. In Abhängigkeit von dem Pegel an dem S-Eingang wird selektiv an einen von zwei Ausgängen O1 und O2 ein A-Eingangsimpuls ausgegeben. Die Sprungschaltung kann dazu verwendet werden, den momentanen Steuerzustand in Abhängigkeit von einer äußeren Bedingung zu verändern.
  • - Aufbau der Sprungschaltung
  • Die Sprungschaltung hat den in Fig. 15 dargestellten Aufbau. In Fig. 15 wird an einen Eingang 71 ein Triggerimpuls T&sub1;&sub1; angelegt. Dieser Triggerimpuls T&sub1;&sub1; wird einem der Eingänge eines UND-Glieds 73 und einem der Eingänge eines UND-Glieds 74 zugeführt.
  • An den Eingang 72 wird ein Auswahlimpuls S&sub1;&sub1; angelegt. Dieser Auswahlimpuls S&sub1;&sub1; wird dem anderen Eingang des UND-Glieds 73 und über einen Inverter 75 dem anderen Eingang des UND-Glieds 74 zugeführt. Das Ausgangssignal des UND-Glieds 73 wird an einem Ausgang 76 ausgegeben. Das Ausgangssignal des UND-Glieds 74 wird an einem Ausgang 77 ausgegeben.
  • Während der Auswahlimpuls S&sub1;&sub1; von dem Eingang 72 auf hohen Pegel geht, wenn der Triggerimpuls T&sub1;&sub1; von dem Eingang 71 zugeführt wird, wird der Triggerimpuls T&sub1;&sub1; über das UND- Glied 73 an dem Ausgang 76 ausgegeben.
  • Während der Auswahlimpuls S&sub1;&sub1; von dem Eingang 72 auf niedrigen Pegel geht, wenn der Triggerimpuls T&sub1;&sub1; von dem Eingang 71 zugeführt wird, wird der Triggerimpuls T&sub1;&sub1; über das UND-Glied 74 an dem Ausgang 77 ausgegeben.
  • - Vereinigungsschaltung
  • Die Vereinigungsschaltung besitzt zwei Eingänge Ii und 12. Wenn dem Eingang I1 oder I2 ein Impuls zugeführt wird, gibt die Vereinigungsschaltung den Impuls aus. Die Vereinigungsschaltung kann dazu benutzt werden, Signale aus mehreren Steuersystemen zu einem Steuersystem zusammenzufassen.
  • - Aufbau der Vereinigungsschaltung
  • Die Vereinigungsschaltung hat den in Fig. 16 dargestellten Aufbau. In Fig. 16 wird ein Triggerimpuls T&sub2;&sub1; einem Eingang 81 zugeführt. Der Triggerimpuls T&sub2;&sub1; von dem Eingang 81 wird einem der Eingänge eines ODER-Glieds 83 zugeführt. Ein Triggerimpuls T&sub2;&sub2; wird einem Eingang 82 zugeführt. Der Triggerimpuls T&sub2;&sub2; von dem Eingang 82 wird dem anderen Eingang des ODER-Glieds 83 zugeführt. Das Ausgangssignal des ODER-Glieds 83 wird an einem Ausgang 84 ausgegeben.
  • Wenn der Triggerimpuls T&sub2;&sub1; dem Eingang 81 zugeführt wird, wird der Triggerimpuls T&sub2;&sub1; über das ODER-Glied 83 an den Ausgang 84 ausgegeben.
  • Wenn der Triggerimpuls T&sub2;&sub2; dem Eingang 82 zugeführt wird, wird der Triggerimpuls T&sub2;&sub2; über das ODER-Glied 83 an den Ausgang 84 ausgegeben.
  • - Verzögerungsschaltung
  • Die Verzögerungsschaltung verzögert ein Eingangssignal während einer vorbestimmten Zeitperiode. Die Verzögerungsschaltung kann dazu verwendet werden, einen Prozeß mit einer vorbestimmten Zeitverzögerung zu beenden.
  • - Aufbau der Verzögerungsschaltung
  • Der Aufbau der Verzögerungsschaltung ist in Fig. 17 dargestellt. In Fig. 17 wird an einen Eingang 91 ein Triggerimpuls T&sub3;&sub1; angelegt. Der Triggerimpuls T&sub3;&sub1; an dem Eingang 91 wird einem Flipflop 92 zugeführt. Das Ausgangssignal des Flipflops 92 wird an dem Ausgang 93 ausgegeben.
  • Der Triggerimpuls T&sub3;&sub1; an dem Eingang 91 wird durch das Flipflop 92 verzögert und dann an dem Ausgang 93 ausgegeben.
  • e2. Parallelverarbeitungs-Statusübergangsschaltung für den Schattierungsprozeß
  • Fig. 12 zeigt ein Beispiel für die Parallelverarbeitungs-Statusübergangsschaltung zur Steuerung der in Fig. 11 dargestellten Hardware. In der Parallelverarbeitungs-Statusübergangsschaltung werden die oben beschriebenen vier Grundschaltungen benutzt. Unter Bezugnah me auf Fig. 12 und 11 wird im folgenden eine Rechensteuerung nach einem Ausführungsbeispiel der Erfindung beschrieben.
  • In Fig. 12 wird an einen Eingang 101 ein externer Triggerimpuls EXTRG angelegt. Dieser externe Triggerimpuls EXTRG wird zu jeder der Grundschaltungen übertragen, aus denen die Parallelverarbeitungs-Statusübergangsschaltung besteht. Es wird dann ein Triggersignal zur Steuerung der einzelnen Abschnitte der Hardware ausgegeben.
  • Mit anderen Worten, nachdem dem Eingang 101 einer Verzögerungsschaltung 102, die eine vorbestimmte Zeitverzögerung bewirkt, der externe Triggerimpuls EXTRG zugeführt wurde, gibt die Verzögerungsschaltung 102 ein Triggersignal aus. Dieses Triggersignal ist ein Auswahlsignal SEL ABC. Das Auswahlsignal SEL ABC bewirkt, daß die Multiplexer 15 und 16 (Fig. 11) in die Position a und der Multiplexer 18 in die Position a umgeschaltet werden. Der Subtrahierer 17 subtrahiert den Wert der unteren linken Ecke von dem Wert der oberen linken Ecke. Das Ergebnis wird dem Dividierer 19 zugeführt.
  • Das Triggersignal aus der Verzögerungsschaltung 102 wird dem H-Eingang einer Sprungschaltung 103 zugeführt. Dem S-Eingang der Sprungschaltung 103 wird ein Nullbestimmungssignal Null zugeführt. Wenn sich auf der linken Seite eine Ecke befindet (Fig. 7) wird an dem O1-Ausgang der Sprungschaltung 103 ein Triggerimpuls ausgegeben. Dieser Triggerimpuls ist ein Divisions-Triggersignal DIV TRG. Das Divisions-Triggersignal DIV TRG veranlaßt, daß der in Fig. 11 dargestellte Dividierer 19 eine Division beginnt. Auf diese Weise wird die Variation in vertikaler Richtung auf der linken Seite gewonnen. Wenn sich auf der linken Seite keine Ecke befindet und deshalb die Ecke auf der linken Seite gleich Null ist, wird an einem O2-Ausgang der Sprungschaltung 103 ein Triggerimpuls ausgegeben, der einer Verzögerungsschaltung 105 zugeführt wird.
  • Der Triggerimpuls wird von dem O1-Ausgang der Sprungschaltung 103 dem A-Eingang einer Warteschaltung 104 zugeführt. Ein Divisions-Endesignal DIV END wird dem B-Eingang der Warteschaltung 104 zugeführt. Wenn die Division in dem Dividierer 19 beendet und die Variation in vertikaler Richtung auf der linken Seite ermittelt ist, erzeugt der Dividierer 19 das Divisions-Endesignal DIV END. Wenn das Divisions-Endesignal DIV END auftritt, gibt die Warteschaltung 104 einen Triggerimpuls aus. Dieser Triggerimpuls ist ein DDA-Setzsignal DDA SET A. Das DDA-Setzsignal DDA SET A veranlaßt, daß die von dem Dividierer 19 ermittelte Variation in vertikaler Richtung auf der linken Seite der DDA-Rechenschaltung 20 mit Kompensationsrechenfunktion für die linke Seite zugeführt wird.
  • Der von der Warteschaltung 104 ausgegebene Triggerimpuls wird dem I1-Eingang einer Vereinigungsschaltung 106 zugeführt. Der von der Verzögerungsschaltung 105 ausgegebene Triggerimpuls wird dem I2-Eingang der Vereinigungsschaltung 106 zugeführt. Wenn der Triggerimpuls aus der Warteschaltung 104 dem I1-Eingang der Vereinigungsschaltung zugeführt wird oder der Triggerimpuls aus der Verzögerungsschaltung 105 dem I2-Eingang der Vereinigungsschaltung 106 zugeführt wird, gibt die Vereinigungsschaltung 106 einen Triggerimpuls aus. Dieser Triggerimpuls stellt ein Auswahlsignal SEL AB dar. Dieses Auswahlsignal SEL AB bewirkt, daß die Multiplexer 15 und 16 in die Position b umgeschaltet werden. Dadurch wird der Wert der unteren rechten Ecke von dem Wert der oberen rechten Ecke subtrahiert. Das Ergebnis wird dem Dividierer 19 zugeführt.
  • Das Triggersignal aus der Vereinigungsschaltung 106 wird dem A-Eingang einer Sprungschaltung 107 zugeführt. Das Nullbestimmungssignal Null wird dem S-Eingang der Sprungschaltung 107 zugeführt. Wenn sich auf der rechten Seite eine Ecke befindet, wird dem O1-Eingang der Sprungschaltung 107 ein Triggerimpuls zugeführt. Dieser Triggerimpuls ist ein Divisions-Triggersignal DIV TRG. Das Divisions-Triggersignal DIV TRG bewirkt, daß der Dividierer 19 eine Division beginnt. Auf diese Weise wird die Variation in vertikaler Richtung auf der rechten Seite gewonnen. Wenn sich auf der rechten Seite keine Ecke befindet und deshalb die Ecke auf der rechten Seite gleich Null ist, wird an dem O2-Ausgang der Sprungschaltung 107 ein Triggerimpuls ausgegeben. Dieser Triggerimpuls wird einer Verzögerungsschaltung 109 zugeführt.
  • Der Triggerimpuls wird von dem O1-Ausgang der Sprungschaltung 107 dem A-Eingang der Warteschaltung 108 zugeführt. Das Divisions-Endesignal DIV END wird dem B-Eingang der Sprungschaltung 107 zugeführt. Wenn die Division in dem Dividierer 19 beendet ist und die Variation in vertikaler Richtung auf der rechten Seite ermittelt ist, erzeugt der Dividierer 19 das Divisions-Endesignal DIV END. Wenn das Divisions-Endesignal DIV END auftritt, gibt die Warteschaltung 108 einen Triggerimpuls aus. Dieser Triggerimpuls ist ein DDA-Setzsignal DDA SET B. Dieses DDA-Setzsignal DDA SET B bewirkt, daß die in dem Dividierer 19 ermittelte Variation in vertikaler Richtung auf der rechten Seite der DDA-Rechenschaltung 21 mit Kompensationsrechenfunktion für die rechte Seite zugeführt wird.
  • Der von der Warteschaltung 108 ausgegebene Triggerimpuis wird dem I1-Eingang der Vereinigungsschaltung 110 zugeführt. Der von dem O2-Ausgang der Sprungschaltung 107 ausgegebene Triggerimpuls wird über die Verzögerungsschaltung 109 dem I2-Eingang der Vereinigungsschaltung 110 zugeführt. Wenn der Triggerimpuls aus der Warteschaltung 108 dem I1-Eingang der Vereinigungsschaltung 110 oder der Triggerimpuls aus der Verzögerungsschaltung 109 dem I2-Eingang der Vereinigungsschaltung 110 zugeführt wird, gibt die Vereinigungsschaltung 110 einen Triggerimpuls aus. Dieser Triggerimpuls ist ein DDA-Kompensationsberechnungs-Triggersignal DDA TRG AB. Das DDA-Kompensationsberechnungs-Triggersignal DDA TRG AB bewirkt, daß die DDA-Berechnungsschaltung 20 mit Kompensationsrechenfunktion für die linke Seite und die DDA-Berechnungsschaltung 21 mit Kompensationsrechenfunktion für die rechte Seite getriggert werden und mit der Kompensationsrechnung für die linke Seite bzw. mit der Kompensationsrechnung für die rechte Seite beginnen. Durch die Kompensationsrechnungen werden der linke Endwert und der rechte Endwert der Abtastzeile ermittelt.
  • Der von der Vereinigungsschaltung 110 ausgegebene Triggerimpuls wird dem A-Eingang einer Warteschaltung 111 zugeführt. Dem B-Eingang der Warteschaltung 111 wird ein Kompensationsberechnungs-Endesignal AJST END zugeführt. Wenn die DDA-Rechenschaltung 20 mit Kompensationsrechenfunktion für die linke Seite und die DDA-Rechenschaltung 21 mit Kompensationsrechenfunktion für die rechte Seite die Kompensationsrechnung für die linke Seite bzw. die Kompensationsrechnung für die rechte Seite beendet haben, erzeugen sie das Kompensationsberechnungs-Endesignal AJST END. Wenn das Kompensationsberechnungs-Endesignal AJST END auftritt, gibt die Warteschaltung 111 einen Triggerimpuls aus.
  • Der von der Warteschaltung 111 ausgegebene Triggerimpuls wird dem I1-Eingang einer Vereinigungsschaltung 112 zugeführt. Dem I2-Eingang der Vereinigungsschaltung 112 wird ein von der Warteschaltung 117 ausgegebener Triggerimpuls zugeführt. Wenn der Triggerimpuls aus der Warteschaltung 111 dem I1-Eingang der Vereinigungsschaltung 112 oder der Triggerimpuls aus der Sprungschaltung 107 dem I2-Eingang der Vereinigungsschaltung 112 zugeführt wird, liefert die Vereinigungsschaltung 112 einen Triggerimpuls. Dieser Triggerimpuls ist ein Auswahlsignal SEL C. Das Auswahlsignal SEL C bewirkt, daß der in Fig. 11 dargestellte Multi plexer 18 in die Position b umgeschaltet wird.
  • Wenn der Multiplexer 18 in die Position b umgeschaltet ist, wird die von dem Subtrahierer 22 ermittelte Variation in horizontaler Richtung dem Dividierer 19 zugeführt.
  • Der von der Vereinigungsschaltung 112 ausgegebene Triggerimpuls wird einer Verzögerungsschaltung 113 zugeführt. In der Verzögerungsschaltung 113 wird der Triggerimpuls um eine vorbestimmte Zeitperiode verzögert. Anschließend gibt die Verzögerungsschaltung 113 einen Triggerimpuls aus. Dieser Triggerimpuls bildet das Divisions-Triggersignal DIV TRG. Das Divisions-Triggersignal DIV TRG veranlaßt, daß der Dividierer 19 eine Division beginnt.
  • Der von der Verzögerungsschaltung 113 ausgegebene Triggerimpuls wird dem A-Eingang einer Warfeschaltüng 114 zugeführt. Das Divisions-Endesignai DIV END wird dem B-Eingang der Warteschaltung 114 zugeführt. Wenn die Division in dem Dividierer 19 beendet und die Variation in horizontaler Richtung ermittelt ist, erzeugt der Dividierer 19 das Divisions-Endesignal DIV END. Wenn das Divisions-Endesignal DIV END auftritt, gibt die Warteschaltung 114 einen Triggerimpuls aus. Dieser Triggerimpuls bildet ein DDA-Setzsignal DDA SET H. Das DDA-Setzsignal DDA SET H bewirkt, daß die von dem Dividierer 19 ermittelte Variation in horizontaler Richtung der DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale zugeführt wird.
  • Der von der Warteschaltung 114 ausgegebene Triggerimpuls wird einer Verzögerungsschaltung 115 zugeführt. Die Verzögerungsschaltung 115 verzögert den Triggerimpuls für eine vorbestimmte Zeitperiode. Wenn diese vorbestimmte Zeitperiode abgelaufen ist, gibt die Verzögerungsschaltung 115 einen Triggerimpuls aus. Dieser Triggerimpuls ist ein DDA-Kompensationsberechnungs-Triggersignal DDA TRG H. Das DDA-Kompensationsberechnungs- Triggersignal DDA TRG H bewirkt, daß die DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale getriggert wird und die horizontale Kompensationsrechnung beginnt. Durch die DDA-Kompensationsrechnung kann der Wert des Koordinatengitterpunkts an dem linken Ende der Abtastzeile gewonnen werden.
  • Der von der Verzögerungsschaltung 115 ausgegebene Triggerimpuls wird dem A-Eingang der Warteschaltung 116 zugeführt. Das Kompensationsberechnungs-Endesignal AJST END wird dem B-Eingang der Warteschaltung 116 zugeführt. Wenn die DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale die horizontale Kompensationsrechnung beendet hat, erzeugt sie das Kompensationsberechnungs-Endesignal AJST END. Wenn das Kompensationsberechnungs-Endesignal AJST END auftritt, gibt die Warteschaltung 116 einen Triggerimpuls aus. Dieser Triggerimpuls ist ein DDA-Berechnungs-Triggersignal DDA H INC. Das DDA-Berechnungs-Triggersignal DDA H INC bewirkt, daß die DDA-Rechenschaltung 23 mit Kompensationsrechenfunktion für die Horizontale die DDA-Berechnung wiederholt. Auf diese Weise können die Werte aller Koordinatengitterpunkte der Abtastzeile gewonnen werden.
  • Das von der Warteschaltung 116 ausgegebene Triggersignal wird dem A-Eingang einer Warteschaltung 117 zugeführt. Dem B-Eingang der Warteschaltung 117 wird ein Signal END OF LINE zugeführt, das das Ende der Zeile repräsentiert. Wenn der Wert des Koordinatengitterpunkts an dem letzten Ende der Zeile ermittelt ist, wird das Signal END OF LINE erzeugt, das das letzte Ende der Zeile repräsentiert. Wenn das Signal END OF LINE auftritt, gibt die Warteschaltung 117 einen Triggerimpuls aus. Dieser Triggerimpuls ist ein DDA-Berechnungs- Triggersignal DDA AB INC. Das DDA-Berechnungs-Triggersignal DDA AB INC bewirkt, daß die DDA-Rechenschaltung 20 mit Kompensationsrechenfunktion für die linke Seite und die DDA-Rechenschaltung 21 mit Kompensationsrechenfunktion für die rechte Seite die DDA- Berechnungen ausführen, um den linken Endwert bzw. den rechten Endwert der nächsten Abtastzeile zu ermitteln.
  • Ein Ausgangsimpuls aus der Warteschaltung 117 wird dem I2-Eingang der Vereinigungsschaltung 112 zugeführt. Anschließend wird die nächste Zeile verarbeitet.
  • Gemäß der Erfindung werden durch die Kompensationsrechnung in vertikaler Richtung auf der linken Seite und die Kompensationsrechnung in vertikaler Richtung auf der rechten Seite die Werte an dem linken und rechten Ende einer Abtastzeile gewonnen. Durch die Verwendung der Werte an dem linken Ende und an dem rechten Ende der Abtastzeile liefert die Kompensationsrechnung in horizontaler Richtung einen präzisen Pixelwert an dem Startpunkt in einem Koordinatengitterpunkt in der Nähe des linken Endes der Abtastzeile. Durch Wiederholen der DDA-Berechnung in horizontaler Richtung gegenüber dem Pixelwert an dem Startpunkt kann auf jeder Abtastzeile der präzise Pixelwert gewonnen werden. Die Werte an dem linken und rechten Ende der nächsten Abtastzeile können durch die DDA-Berechnung gewonnen werden, bei der die Variation in vertikaler Richtung auf der linken Seite und die Variation in vertikaler Richtung auf der rechten Seite zu dem linken Endwert bzw. zu dem rechten Endwert der vorangehenden Abtastzeile addiert werden.
  • Da an Koordinatengitterpunkten akkurate Pixelwerte eingegeben werden, ist die Schattierung sehr genau und es wird ein glattes Zusammenspiel mit den Bewegungen eines dreidimensionalen Objekts und einer Lichtquelle in Echtzeitbasis ohne Bildschirmflimmern erreicht.
  • Die Schattierungsschaltung wird durch eine Parallelverarbeitungs-Statusübergangsschaltung gesteuert, die aus vier Arten von Grundschaltungen, nämlich Warteschaltungen, Sprungschaltungen, Vereinigungsschaltungen und Verzögerungsschaltungen aufgebaut ist. Durch die Verwendung der Parallelverarbeitungs-Statusübergangsschaltung läßt sich der Datenfluß leicht überblicken. Sie ermöglicht außerdem, daß der parallele Prozeß mit großer Zuverlässigkeit abläuft.

Claims (5)

1. Schattierungsverfah ren zum Approximieren einer dreidimensionalen gekrümmten Fläche für Computergrafiken, wobei die Schattierung einer zweidimensionalen Fläche durch Variieren der Pixelhelligkeitswerte erfolgt, um eine Tiefendirnension auf der zweidimensionalen Fläche anzuzeigen,
mit den Verfahrensschritten:
Approximieren der dreidimensionalen gekrümmten Fläche mittels einer Mehrzahl von Polygonen, wobei jedes Polygon einen Teil der gekrümmten Fläche approximiert und jedes Polygon (48A, 49A) durch ein oder mehrere Trapezoide definiert wird,
Bilden eines Koordinatengitters das sich in horizontaler und in vertikaler Richtung erstreckt, wobei jeder Gitterpunkt des Gitters ein Pixel repräsentiert, dessen Helligkeitspegel nach Maßgabe der genannten Tiefendimension zu variieren ist, und wobei eine Abtastung über Abtastzeilen in horizontaler Richtung über das Gitter von Gitterpunkt zu Gitterpunkt und parallel zu parallelen Seiten der Trapezoide erfolgt,
Bilden der Trapezoide auf dem Koordinatengitter in der Weise, daß die Adressen der Trapezoidscheitel in dem Koordinatengitter bestimmt werden können, wobei diese Scheitel an einer beliebigen Position in dem Gitter, nicht notwendigerweise direkt auf einem Gitterpunkt in einem Pixel liegen, sowie Bilden von Helligkeitswerten in jedem dieser Scheitel, und Bestimmen von Helligkeitswerten von entsprechenden Pixeln an Gitterpunkten, die innerhalb der einzelnen Trapezoide liegen, durch lineare Interpolation mittels Subpixeladressierung auf der Basis von Adressen und Helligkeitswerten der Trapezoidscheitel und dadurch Schattieren der Polygone,
dadurch gekennzeichnet,
daß dann, wenn der Abstand des Trapezoids in vertikaler Richtung unter einem vorbestimmten Wert liegt, der bewirkt, daß eine Seitenkante (LE1-LS1 in Fig. 9) des Trapezoids annähernd horizontal verläuft, diese annähernd horizontale Seitenkante durch eine vertikale Seitenkante (LE2-LS1 in Fig. 10) ersetzt wird, die in einem der Endpunkte (LS1) der annähernd horizontalen Seitenkante beginnt, und daß das an die annähernd horizontale Seitenkante angrenzende Trapezoid entsprechend angepaßt wird, um eine Kontinuität der Polygone zu erzeugen, so daß Berechnungsfehler vermieden werden und die Anzeigekontinuität der Polygone verbessert wird.
2. Verfahren nach Anspruch 1, mit den weiteren Verfahrensschritten:
Durchführen einer ersten Kompensationsrechnung (20, 21, 22) in vertikaler Richtung des Koordinatengitters unter Verwendung aller Scheitelhelligkeitwerte und Adressen des Polygons auf entgegengesetzten Seiten des Polygons, die in einer primär vertikalen Richtung verlaufen, so daß Helligkeitswerte an dem linken und dem rechten Endpunkt einer Abtastzeile berechnet werden, welche die primär linken und rechten Seiten des Polygons schneidet, und Durchführen einer zweiten Kompensationsrechnung (23) in horizontaler Richtung der genannten Abtastzeile unter Verwendung der Helligkeitswerte an dem linken und dem rechten Endpunkt, um Helligkeitswerte an jedem Koordinatengitterpunktpixel auf der Abtastzeile zwischen dem linken und dem rechten Punkt zu bestimmen.
3. Verfahren nach Anspruch 2, bei dem die vertikale Kompensationsrechnung das Aufsuchen der linken und rechten Endpunkte von zusätzlichen Abtastzeilen durch lineare Interpolation umfaßt, und lineare Interpolation benutzt, um für jede Abtastzeile die Pixelhelligkeitswerte von Pixeln auf der jeweiligen Abtastzeile auf der Basis der Helligkeitswerte des linken und des rechten Endpunkts zu bestimmen.
4. Schattierungsvorrichtung zur Approximierung einer dreidimensionalen gekrümmten Fläche für Computergrafiken, wobei die Schattierung einer zweidimensionalen Fläche durch Variieren der Pixelhelligkeitswerte zur Anzeige einer Tiefendimension auf der zweidimensionalen Fläche erzeugt wird,
mit einer Einrichtung zum Approximieren der dreidimensionalen gekrümmten Fläche mittels einer Mehrzahl von Polygonen (48A, 49A), wobei jedes Polygon ein Teilstück der gekrümmten Fläche approximiert und jedes Polygon durch ein oder mehrere Trapezoide definiert wird,
mit einem Koordinatengitter, das sich in horizontaler und in vertikaler Richtung erstreckt, wobei jeder Gitterpunkt des Gitters ein Pixel repräsentiert, dessen Helligkeitspegel nach Maßgabe der genannten Tiefendimension zu variieren ist, und wobei eine Abtastung über Abtastzeilen in horizontaler Richtung über das Gitter von Gitterpunkt zu Gitterpunkt und parallel zu parallelen Seiten der Trapezoide erfolgt,
mit einer Einrichtung, welche die Trapezoide auf dem Koordinatengitter in der Weise bildet, daß die Adressen der Trapezoidscheitel in dem Koordinatengitter bestimmt werden können, wobei diese Scheitel an einer beliebigen Position in dem Gitter, nicht notwendigerweise direkt auf einem Gitterpunkt in einem Pixel liegen, und Bilden von Helligkeitswerten in jedem dieser Scheitel, und
mit einer Einrichtung zur Subpixeladressierung für die Bestimmung von Helligkeitswerten von entsprechenden Pixeln an Gitterpunkten, die innerhalb der einzelnen Trapezoide liegen, durch lineare Interpolation auf der Basis von Adressen und Helligkeitswerten der Trapezoidscheitel und dadurch zum Schattieren der Polygone,
dadurch gekennzeichnet,
daß eine Einrichtung (I1-24; Fig 11) vorgesehen ist, die dann, wenn der Abstand des Trapezoids in vertikaler Richtung unter einem vorbestimmten Wert liegt, der bewirkt, daß eine Seitenkante (LE1-LS1 in Fig. 9) des Trapezoids annähernd horizontal verläuft, diese annähernd horizontale Seitenkante durch eine vertikale Seitenkante (LE2-LS1 in Fig. 10) ersetzt, wird, die in einem der Endpunkte (Lsl) der annähernd horizontalen Seitenkante beginnt, und daß das an die annähernd horizontale Seitenkante angrenzende Trapezoid entsprechend angepaßt wird, um eine Kontinuität der Polygone zu erzeugen, so daß Berechnungsfehler vermieden werden und die Anzeigekontinuität der Polygone verbessert wird.
5. Vorrichtung nach Anspruch 4, die weiterhin aufweist:
eine Einrichtung (20, 21, 22) zur Durchführung einer ersten Kompensationsrechnung in vertikaler Richtung des Koordinatengitters unter Verwendung aller Scheitelhelligkeitwerte und Adressen des Polygons auf entgegengesetzten Seiten des Polygons, die in einer primär vertikalen Richtung verlaufen, so daß Helligkeitswerte an dem linken und dem rechten Endpunkt einer Abtastzeile berechnet werden, welche die primär linken und rechten Seiten des Polygons schneidet, und
eine Einrichtung (23) zur Durchführung einer zweiten Kompensationsrechnung in horizontaler Richtung der genannten Abtastzeile unter Verwendung der Helligkeitswerte an dem linken und dem rechten Endpunkt, um Helligkeitswerte an jedem Koordinatengitterpunktpixel auf der Abtastzeile zwischen dem linken und dem rechten Punkt zu bestimmen.
DE69032367T 1989-12-21 1990-12-19 Schattierungsverfahren und -gerät in einem Grafikrechner Expired - Fee Related DE69032367T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP33214789A JP2770513B2 (ja) 1989-12-21 1989-12-21 シェーディング方法及びシェーディング装置
JP33363389A JP2770514B2 (ja) 1989-12-22 1989-12-22 シェーディング装置
JP1333632A JPH03192480A (ja) 1989-12-22 1989-12-22 シェーディング方法
JP33363589A JP2814631B2 (ja) 1989-12-22 1989-12-22 シェーディングにおける演算回路
JP1333634A JPH03192482A (ja) 1989-12-22 1989-12-22 シェーディング方法

Publications (2)

Publication Number Publication Date
DE69032367D1 DE69032367D1 (de) 1998-07-09
DE69032367T2 true DE69032367T2 (de) 1998-10-01

Family

ID=27531205

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69032367T Expired - Fee Related DE69032367T2 (de) 1989-12-21 1990-12-19 Schattierungsverfahren und -gerät in einem Grafikrechner

Country Status (4)

Country Link
US (1) US5418901A (de)
EP (1) EP0434037B1 (de)
KR (1) KR100232931B1 (de)
DE (1) DE69032367T2 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7142224B2 (en) * 1997-07-10 2006-11-28 Yamaha Corporation Polygon drawing apparatus and method, and storage medium for implementing the same method
US6266065B1 (en) * 1998-03-02 2001-07-24 Industrial Technology Research Institute Method for rendering 3D triangle primitives
US5978744A (en) * 1998-04-27 1999-11-02 Trimble Navigation Ltd. Interpolation of survey coordinate differences
US6370476B1 (en) * 1998-04-27 2002-04-09 Trimble Navigation Limited Interpolation of survey coordinate differences
FR2826759B1 (fr) * 2001-06-29 2003-11-14 Thales Sa Procede de zoom
JP3629243B2 (ja) * 2002-02-13 2005-03-16 Necマイクロシステム株式会社 モデリング時の距離成分を用いてレンダリング陰影処理を行う画像処理装置とその方法
KR100703939B1 (ko) * 2005-07-27 2007-04-06 삼성전자주식회사 영상처리장치 및 영상처리방법
US10621763B2 (en) 2016-07-28 2020-04-14 Microsoft Technology Licensing, Llc. Sketch-effect hatching
US11212425B2 (en) * 2019-09-16 2021-12-28 Gopro, Inc. Method and apparatus for partial correction of images

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4586038A (en) * 1983-12-12 1986-04-29 General Electric Company True-perspective texture/shading processor
US4974177A (en) * 1985-10-04 1990-11-27 Daikin Industries Ltd. Mapping circuit of a CRT display device
US4811245A (en) * 1985-12-19 1989-03-07 General Electric Company Method of edge smoothing for a computer image generation system
JPH0812705B2 (ja) * 1986-09-29 1996-02-07 株式会社東芝 画像処理装置
JPH01111276A (ja) * 1987-10-23 1989-04-27 Nippon Sheet Glass Co Ltd ドットパターンの自動作図装置
CA1309198C (en) * 1987-12-10 1992-10-20 Carlo J. Evangelisti Parallel rendering of smoothly shaded color triangles with anti-aliased edges for a three dimensional color display
JP2618951B2 (ja) * 1988-02-16 1997-06-11 株式会社東芝 三次元図形処理装置
US5133049A (en) * 1990-03-14 1992-07-21 Hewlett-Packard Company Accelerated decomposition of small polygons into trapezoids
US5129051A (en) * 1990-03-16 1992-07-07 Hewlett-Packard Company Decomposition of arbitrary polygons into trapezoids

Also Published As

Publication number Publication date
KR910012997A (ko) 1991-08-08
DE69032367D1 (de) 1998-07-09
KR100232931B1 (ko) 1999-12-01
EP0434037B1 (de) 1998-06-03
US5418901A (en) 1995-05-23
EP0434037A3 (en) 1993-03-17
EP0434037A2 (de) 1991-06-26

Similar Documents

Publication Publication Date Title
DE3750803T2 (de) Schattierungsschaltung zur Schattierung mehrerer Polygone, die ein Festkörpermodel einsetzen, und Schattierungsverfahren dafür.
DE68927471T2 (de) Verfahren zur Schattierung eines graphischen Bildes
DE3750784T2 (de) Generation eines intrapolierten charakteristischen Wertes zur Anzeige.
DE69132041T2 (de) Dreieckinterpolator
DE3309846C2 (de)
DE69130123T2 (de) Anzeigegerät und Verfahren zum Betreiben eines solchen Geräts
DE69115762T2 (de) Verfahren und Einrichtung zur Anzeigesteuerung von Mehrfenstern
DE3689654T2 (de) Rechnergraphik, prozessor für parallele subdivision.
DE69624878T2 (de) Verfahren und Vorrichtung zur Volumendarstellung
DE69424716T2 (de) Verfahren und Vorrichtung zur adaptiven Steuerung der Texturabbildung
DE69314231T2 (de) Belichtungseffekte für ein digitales Videoeffektensystem
DE3689926T2 (de) Einrichtung zur sequenziellen Bildtransformation.
DE19782086B4 (de) Multiplizierer zur Durchführung von 3D-Graphik-Interpolationen
DE2703021A1 (de) Datenprozessor zum liefern von intensitaetssteuersignalen zur verwendung in einer rasteranzeige
DE102005050846A1 (de) Perspektiveneditierwerkzeuge für 2-D Bilder
DE69130127T2 (de) System und Verfahren zur Farbbilderanzeige
DE3515037C2 (de)
DE2907992A1 (de) Verfahren zur behandlung von videodaten
DE69032367T2 (de) Schattierungsverfahren und -gerät in einem Grafikrechner
DE3815361A1 (de) Einrichtung und verfahren zum erzeugen von vektoren auf einem displaygeraet
DE69529732T2 (de) Korrektur der Perspektive von Texturen in graphischen Bildern durch adaptive Approximation
DE3315148A1 (de) Digitale sichtanzeigeeinrichtung
DE3853511T2 (de) Mehrbildelementgenerator.
DE69008766T2 (de) Verfahren und Vorrichtung zur linearen Abschattung für ein Rastergrafikdisplay.
DE69427809T2 (de) Vorrichtung und Verfahren zur graphischen Darstellung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee