FR2640792A1 - CIRCUIT FOR DETERMINING SCANNING LINE POSITIONS FOR DISPLAY AND HANDLING BY AN INFOGRAPHIC SYSTEM - Google Patents

CIRCUIT FOR DETERMINING SCANNING LINE POSITIONS FOR DISPLAY AND HANDLING BY AN INFOGRAPHIC SYSTEM Download PDF

Info

Publication number
FR2640792A1
FR2640792A1 FR8916545A FR8916545A FR2640792A1 FR 2640792 A1 FR2640792 A1 FR 2640792A1 FR 8916545 A FR8916545 A FR 8916545A FR 8916545 A FR8916545 A FR 8916545A FR 2640792 A1 FR2640792 A1 FR 2640792A1
Authority
FR
France
Prior art keywords
value
line
vertices
line segment
segment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR8916545A
Other languages
French (fr)
Other versions
FR2640792B1 (en
Inventor
Chris Malachowsky
Curtis Priem
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of FR2640792A1 publication Critical patent/FR2640792A1/en
Application granted granted Critical
Publication of FR2640792B1 publication Critical patent/FR2640792B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)

Abstract

Ce circuit permet de déterminer les valeurs X de chaque extrémité d'une suite de lignes horizontales de balayage reliant un couple de segments de droite dont chacun est défini par un couple de sommets, les lignes horizontales de balayage définissant une aire à restituer sur un périphérique de sortie d'ordinateur. Il comprend, selon l'invention : - un premier 32 et un second 34 bloc de circuit, chacun de ces blocs de circuit comprenant des moyens pour déterminer la pente d'un segment de droite et des moyens pour déterminer, en fonction de la pente, les valeurs X de début et de fin pour chaque segment de droite de chaque ligne de balayage de l'aire à restituer, - des moyens pour faire commencer à fonctionner les deux blocs de circuit sur la même ligne de balayage, et - des moyens pour transformer la valeur Y de chaque bloc de circuit en la valeur Y de la ligne suivante de balayage adjacente au même moment.This circuit makes it possible to determine the X values of each end of a series of horizontal scan lines connecting a pair of straight line segments each of which is defined by a pair of vertices, the horizontal scan lines defining an area to be restored on a peripheral computer output. It comprises, according to the invention: a first 32 and a second 34 circuit block, each of these circuit blocks comprising means for determining the slope of a line segment and means for determining, as a function of the slope , the start and end X values for each straight line segment of each scan line of the area to be restored, - means for starting to operate the two circuit blocks on the same scan line, and - means to transform the Y value of each circuit block to the Y value of the next adjacent scan line at the same time.

Description

La présente invention concerne les systèmes infor-The present invention relates to computer systems

matiques, et plus particulièrement les circuits permettant de déterminer la position des différents points d'une ligne de balayage devant être affichée sur un afficheur en sortie d'un système informatique. L'un des problèmes majeurs, lorsque l'on utilise les ordinateurs pour produire des affichages graphiques, tient au fait que, pour une seule trame de matière graphique à  and more particularly the circuits for determining the position of the different points of a scan line to be displayed on a display at the output of a computer system. One of the major problems when using computers to produce graphic displays is that for a single frame of graphic material to

restituer sur un tube cathodique, il est généralement néces-  restitution on a cathode ray tube, it is usually necessary

saire de mémoriser une indication de l'information à affi-  to memorize an indication of the information to be displayed

cher en chaque position (à chaque pixel) du tube cathodique.  expensive in each position (at each pixel) of the cathode ray tube.

Avec des afficheurs de grandes dimensions et très détaillés, le nombre de pixels sur le tube cathodique peut avoisiner un millier ou plus dans le sens horizontal et un nombre comparable dans le sens vertical, donnant un total d'environ un million de pixels ou plus pour lesquels on doit mémoriser une information. Dans les systèmes préférentiels, on peut produire un certain nombre de couleurs différentes sur le tube cathodique, chacun des pixels comportant huit bits d'information numérique spécifiant la couleur particulière à produire en sortie. En conséquence, il faut mémoriser environ huit millions de bits d'information pour chaque  With large and very detailed displays, the number of pixels on the CRT can be around a thousand or more in the horizontal direction and a comparable number in the vertical direction, giving a total of about one million pixels or more for which one must memorize information. In preferred systems, a number of different colors can be produced on the cathode ray tube, each of the pixels having eight bits of digital information specifying the particular color to be outputted. As a result, approximately eight million bits of information must be stored for each

trame à représenter en sortie.frame to represent in output.

Il faut non seulement donner l'information de couleur pour chaque pixel de chaque trame de l'affichage, mais encore, lorsque l'on produit des affichages graphiques, le procédé habituel pour déterminer les formes des figures nécessite l'application de divers algorithmes aux données permettant de conformer ces figures. Si ces informations sont gérées par le logiciel du système, le calcul des positions de chaque point à afficher et la détermination des  Not only must the color information be given for each pixel of each frame of the display, but also, when producing graphic displays, the usual method for determining the shapes of the figures requires the application of various algorithms to data to conform these figures. If this information is managed by the system software, the calculation of the positions of each point to be displayed and the determination of the

données à afficher en ce point ralentissent le fonction-  data to display at this point slow down the function

nement du système à tel point que des fonctions telles que l'animation sont pratiquement impossibles à réaliser. Par exemple, si l'on veut restituer sur l'afficheur de sortie un polygone, il est nécessaire de déterminer chaque extrémité de chaque ligne horizontale constituant le polygone, car les informations sont délivrées à l'afficheur ligne d'affichage par ligne d'affichage. Dans les systèmes de l'art antérieur, cette détermination des extrémités de chaque ligne à balayer  of the system to such an extent that functions such as animation are practically impossible to achieve. For example, if one wants to restore on the output display a polygon, it is necessary to determine each end of each horizontal line constituting the polygon, since the information is delivered to the display line display line of display. In the systems of the prior art, this determination of the ends of each line to be scanned

sur l'afficheur en sortie nécessitait une exécution logi-  on the output display required a logical execution.

cielle par l'unité centrale de traitement pour calculer les valeurs d'extrémité de chaque ligne de balayage de chaque forme graphique à restituer. De telles configurations  by the central processing unit for calculating the end values of each scan line of each graphical form to be rendered. Such configurations

accroissent le temps nécessaire pour restituer l'image gra-  increase the time needed to reproduce the

phique à un tel point qu'il en résulte un ralentissement  to such an extent that it results in a slowdown

notable de l'affichage.notable of the display.

Pour cette raison, il a été proposé divers systèmes utilisant le matériel pour accélérer ces opérations. L'un des procédés permettant d'accélérer l'opération utilise en sortie deux tampons de trame, l'un des tampons étant chargé pendant que l'autre est exploré pour affichage. Un tel système accroit notablement la vitesse de fonctionnement mais nécessite pratiquement deux fois plus de mémoire pour  For this reason, it has been proposed various systems using hardware to accelerate these operations. One of the methods for speeding up the operation uses two frame buffers, one of which is loaded while the other is scanned for display. Such a system significantly increases the speed of operation but requires practically twice as much memory for

le stockage des données.the storage of data.

C'est pourqoi l'un des buts de la présente invention est, à cet égard, d'accélérer le fonctionnement des systèmes  It is for this reason that one of the aims of the present invention is, in this respect, to accelerate the operation of the systems

informatiques.computer.

Un autre but de la présente invention est de proposer des circuits permettant de gérer par matériel les manipulations de matière graphique qui, dans le cas habituel, auraient été  Another object of the present invention is to propose circuits making it possible to manage by material manipulation of graphical material which, in the usual case, would have been

gérées par le logiciel du système informatique.  managed by the computer system software.

Un autre but encore de la présente invention est de  Another object of the present invention is to

proposer des circuits permettant de déterminer les coor-  propose circuits for determining the coordination

données X et Y des extrémités des lignes à balayer sur l'af-  X and Y data of the ends of the lines to be scanned on the

ficheur de sortie.output file.

Ces buts, ainsi que d'autres, de la présente invention sont atteints grâce à un nouveau système d'affichage en sortie qui utilise un concept original de représentation des figures graphiques permettant d'obtenir à grande vitesse des  These and other objects of the present invention are achieved through a new output display system which employs an original concept of representing graphical figures to obtain high speed

graphiques, tout en n'utilisant qu'un seul tampon d'affi-  graphs, while using only one display buffer.

chage de sortie.exit.

Pour pouvoir réaliser par matériel la restitution des graphiques, on a constaté que les informations présentées au matériel seront traitées plus rapidement si elles sont essentiellement de même nature, quelle que soit la forme qui doit être tracée sur l'afficheur. Le système est basé sur une définition d'une figure graphique (une forme) selon laquelle on considère que la forme est composée d'un certain  In order to be able to realize by hardware the restitution of the graphs, it has been found that the information presented to the material will be processed more quickly if it is essentially of the same nature, whatever the form that must be plotted on the display. The system is based on a definition of a graphic figure (a form) according to which one considers that the form is composed of a certain

nombre de sous-ensembles qui sont chacun des quadrilatères.  number of subsets that are each quadrilaterals.

On prévoit des circuits pour afficher rapidement des images formées de quadrilatères, en ne gérant que les informations relatives aux quatre sommets de ces quadrilatères. Ces quadrilatères peuvent tous être gérés de la même manière par  Circuits are provided for rapidly displaying images formed of quadrilaterals, managing only the information relating to the four vertices of these quadrilaterals. These quadrilaterals can all be managed in the same way by

le matériel de restitution graphique et recombinés sur l'af-  graphical restitution material and recombined on the

ficheur de manière à restituer la forme voulue.  file in order to restore the desired shape.

Le système fractionne les quadrilatères en sous-ensembles constitués de couples de segments de droite qui sous-tendent une surface trapézoïdale à restituer sur l'afficheur de sortie. On détermine alors les coordonnées X et Y des deux extrémités de chaque ligne de balayage de chaque trapèze. La présente invention a pour objet des circuits qui déterminent en même temps l'une et l'autre extrémité de chaque ligne de balayage située à l'intérieur d'une figure en forme de  The system splits the quadrilaterals into subsets consisting of pairs of line segments that subtend a trapezoidal surface to be rendered on the output display. The X and Y coordinates of the two ends of each scan line of each trapezoid are then determined. The subject of the present invention is circuits which at the same time determine the one and the other end of each scanning line situated inside a FIG.

quadrilatère à afficher en sortie.  quadrilateral to display as output.

Le système et les circuits de la présente invention sont conçus de manière à sélectionner la décomposition optimale d'une forme pour que l'opération puisse être exécutée le  The system and circuits of the present invention are designed to select the optimal decomposition of a shape so that the operation can be performed on the

plus rapidement possible. Par exemple, si une forme à décom-  as quickly as possible. For example, if a decomposing form

poser ne s'étend que partiellement à l'intérieur d'une  lay only partially within a

fenêtre de cadrage et partiellement au-dessous ou bien au-  frame window and partially below or well below

dessus de la fenêtre de cadrage, l'opération sera exécutée plus rapidement si la portion située hors de la fenêtre de cadrage n'a pas besoin d'être traitée. Ceci peut être obtenu si la décomposition peut s'exécuter du haut vers le bas ou bien du bas vers le haut. En outre, la mémoire vive utilisée dans les systèmes informatiques est généralement divisée en  above the framing window, the operation will be executed more quickly if the portion outside the framing window does not need to be processed. This can be achieved if the decomposition can run from top to bottom or from bottom to top. In addition, the RAM used in computer systems is generally divided into

partitions appelées "pages", et des accès mémoire à l'inté-  partitions called "pages", and memory accesses to the

rieur d'une même page prennent moins de temps que si l'on doit aller d'une première adresse dans une première page à une seconde adresse dans une autre page (c'est-à-dire si l'on doit franchir une frontière de page). Si l'opération a lieu en remontant depuis le bas, on devra traverser moins de frontières de page si le traitement d'une ligne de balayage donnée s'exécute de la droite vers la gauche, plutôt que de la gauche vers la droite comme cela est habituellement le cas. En traversant moins de frontières de page, on permet  on the same page take less time than if you have to go from a first address in a first page to a second address in another page (that is to say if you have to cross a border of page). If the operation is going up from the bottom, we will have to traverse fewer page boundaries if the processing of a given scan line runs from right to left, rather than from left to right like this is usually the case. Crossing fewer page boundaries allows

également un fonctionnement plus rapide.  also faster operation.

La décomposition et le traitement des lignes de balayage permis par le système de la présente invention et par sa mise en oeuvre ont lieu de la gauche vers la droite ou bien de la droite vers la gauche, et de haut en bas ou de bas en haut. Les circuits sont également capables de déterminer le point de départ et le point final de chaque ligne de balayage même si la figure est formée de segments de droite formant entre eux des intersections. L'aptitude des circuits  The decomposition and treatment of scan lines enabled by the system of the present invention and its implementation take place from left to right or from right to left, and from top to bottom or from bottom to top . The circuits are also able to determine the starting point and end point of each scan line even if the figure is formed of line segments intersecting with each other. The aptitude of circuits

de la présente invention a délivrer les coordonnées rectan-  of the present invention to deliver the rectangular coordinates

gulaires permet des transferts rapides d'informations gra-  gulars allows fast transfers of

phiques vers un afficheur de sortie.  to an output display.

A cet effet, l'invention propose un circuit pour déter-  For this purpose, the invention proposes a circuit for determining

miner les valeurs X de chaque extrémité d'une suite de lignes horizontales reliant un couple de segments de droite dont chacun est défini par un couple de sommets, l'aire définie par les lignes horizontales devant être présentée  undermine the X values of each end of a series of horizontal lines connecting a pair of line segments each of which is defined by a pair of vertices, the area defined by the horizontal lines to be presented

sur un afficheur de sortie d'un système informatique, carac-  on an exit display of a computer system, which is

térisé en ce qu'il comprend.: des moyens pour déterminer la variation de la valeur X entre les sommets d'un premier segment de droite; des moyens pour déterminer la variation de la valeur X entre les sommets d'un second segment de droite; des moyens pour déterminer la variation de la valeur Y entre les sommets du premier segment de droite; des moyens pour déterminer la variation de la valeur Y entre les sommets du second segment de droite; des moyens pour déterminer si la pente du premier segment de droite est supérieure à l'unité; des moyens pour déterminer si la pente du second segment de droite est supérieure à l'unité; des moyens pour établir, pour le premier segment de droite, une valeur d'erreur égale à la plus grande des variations de X et de Y entre les sommets; des moyens pour établir, pour le second segment-de droite, une valeur d'erreur égale à la plus grande des variations de X et de Y entre les sommets; des moyens pour incrémenter la valeur du terme X ou Y de plus grande variation entre les sommets à partir d'une position initiale de ce terme pour le premier segment de droite; des moyens pour incrémenter la valeur du terme X ou Y de plus grande variation entre les sommets à partir d'une position initiale de ce terme pour le second segment de droite, les positions initiales de chacun des segments de droite ayant la même valeur Y; des moyens pour retrancher de l'erreur, pour le premier segment de droite, la moindre des variations des termes X ou Y avec chaque incrément du terme X ou Y présentant la variation la plus importante entre les sommets, jusqu'à ce que l'erreur atteigne zéro; des moyens pour retrancher de l'erreur, pour le second segment de droite, la moindre des variations des termes X ou Y avec chaque incrément du terme X ou Y présentant la variation la plus importante entre les sommets, jusqu'à ce que l'erreur atteigne zéro; des moyens pour incrémenter le terme X ou Y présentant la moindre variation entre les sommets du premier segment de droite en réponse au terme d'erreur devenant zéro pour le premier segment de droite; des moyens pour incrémenter le terme X ou Y présentant la moindre variation entre les sommets du second segment de droite en réponse au terme d'erreur devenant zéro pour le second segment de droite; et des moyens pour poursuivre l'opération jusqu'à ce que les valeurs X et Y atteintes par incrémentation soient égales aux valeurs X et Y du sommet  characterized in that it comprises: means for determining the variation of the X value between the vertices of a first line segment; means for determining the variation of the X value between the vertices of a second line segment; means for determining the variation of the Y value between the vertices of the first line segment; means for determining the variation of the Y value between the vertices of the second line segment; means for determining whether the slope of the first line segment is greater than unity; means for determining whether the slope of the second line segment is greater than unity; means for establishing, for the first line segment, an error value equal to the greatest of the variations of X and Y between the vertices; means for setting, for the second right-hand segment, an error value equal to the largest of the variations of X and Y between the vertices; means for incrementing the value of the X or Y term of greatest variation between the vertices from an initial position of that term for the first line segment; means for incrementing the value of the X or Y term of greatest variation between the vertices from an initial position of that term for the second straight segment, the initial positions of each of the line segments having the same value Y; means for subtracting from the error, for the first line segment, the least of the variations of the terms X or Y with each increment of the term X or Y having the greatest variation between the vertices, until the error reaches zero; means for subtracting from the error, for the second straight segment, the least of the variations of the terms X or Y with each increment of the term X or Y having the greatest variation between the vertices, until the error reaches zero; means for incrementing the X or Y term exhibiting the least variation between the vertices of the first line segment in response to the error term becoming zero for the first line segment; means for incrementing the X or Y term exhibiting the least variation between the vertices of the second line segment in response to the error term becoming zero for the second line segment; and means for continuing the operation until the incrementally increased X and Y values are equal to the X and Y values of the vertex

terminal pour ce segment de droite.terminal for this line segment.

Il est de préférence en outre prévu des moyens pour interrompre le fonctionnement des premiers moyens pour incrémenter la valeur du terme X ou Y de plus grande variation entre les sommets pour le segment de ligne pour lequel le terme d'erreur atteint zéro tant que le terme d'erreur pour l'autre segment de droite n'a pas atteint zéro. Selon un autre aspect de la présente invention, il est proposé un circuit pour déterminer les valeurs X de chaque extrémité d'une suite de lignes horizontales de balayage reliant un couple de segments de droite dont chacun est défini par un couple de sommets, les lignes horizontales de  It is further preferably provided means for interrupting the operation of the first means for incrementing the value of the X or Y term of greatest variation between the vertices for the line segment for which the error term reaches zero as long as the term error for the other line segment did not reach zero. According to another aspect of the present invention, there is provided a circuit for determining the X values of each end of a series of horizontal scan lines connecting a pair of line segments each of which is defined by a pair of vertices, the lines Horizontal

balayage définissant une aire à restituer sur un péri-  scan defining an area to be restored on a peri-

phérique de sortie d'ordinateur, caractérisé en ce qu'il comprend: un premier et un second bloc de circuit, chacun  digital output signal, characterized in that it comprises: a first and a second circuit block, each

de ces blocs de circuit comprenant des moyens pour déter-  of these circuit blocks comprising means for determining

miner la pente d'un segment de droite et des moyens pour déterminer, en fonction de la pente, les valeurs X de début et de fin pour chaque segment de droite de chaque ligne de balayage de l'aire à restituer; des moyens pour faire commencer à fonctionner les deux blocs de circuit sur la même ligne de balayage; et des moyens pour transformer la valeur Y de chaque bloc de circuit en la valeur Y de la  undermining the slope of a line segment and means for determining, as a function of slope, the starting and ending X values for each line segment of each scan line of the area to be retrieved; means for starting to operate both circuit blocks on the same scan line; and means for transforming the Y value of each circuit block into the Y value of the

ligne suivante de balayage adjacente au même moment.  next scan line adjacent at the same time.

Les buts et caractéristiques de l'invention que l'on a indiqués, ainsi que d'autres, apparaîtront clairement à  The aims and features of the invention which have been indicated, as well as others, will be made clear in

l'homme du métier à la lecture de la description détaillée  the person skilled in the art upon reading the detailed description

ci-dessous, faite en référence aux diverses figures des  below, with reference to the various figures of the

dessins, sur lesquelles on a désigné par les mêmes réfé-  drawings, on which the same references have been

rences, d'une vue à l'autre, les éléments semblables.  from one view to another, similar elements.

La figure 1 est une représentation d'une forme graphique divisée en deux quadrilatères qui, lorsqu'ils sont affichés  Figure 1 is a representation of a graphical form divided into two quadrilaterals which, when displayed

séparément sur un périphérique de sortie d'ordinateur, pro-  separately on a computer output device, pro-

duisent la forme d'origine complète.  the complete original form.

Les figures 2A à 2D sont des illustrations de la forme  Figures 2A to 2D are illustrations of the form

d'un quadrilatère simple décomposé en segments de lignes.  a simple quadrilateral broken down into line segments.

La figure 3 est un schéma par blocs illustrant un système de sortie graphique pour ordinateur, réalisé conformément  FIG. 3 is a block diagram illustrating a computer graphics output system, produced in accordance with FIG.

aux enseignements de la présente invention.  to the teachings of the present invention.

La figure 4 est une illustration du fonctionnement d'une  Figure 4 is an illustration of the operation of a

partie du circuit de la présente invention.  part of the circuit of the present invention.

La figure 5 est un diagramme de circuit illustrant une  Figure 5 is a circuit diagram illustrating a

manière de mettre en oeuvre la présente invention.  to implement the present invention.

Notations et nomenclatureNotations and nomenclature

Certaines parties des descriptions détaillées qui vont  Some parts of the detailed descriptions that go

suivre sont présentées en termes d'algorithmes et de représentations symboliques d'opérations effectuées sur des  to follow are presented in terms of algorithms and symbolic representations of operations performed on

bits de données dans une mémoire d'ordinateur. Ces descrip-  bits of data in a computer memory. These descriptions

tions algorithmiques et ces représentations sont les moyens utilisés par les hommes du métier de l'informatique pour exposer de la manière la plus efficace leurs réalisations à  algorithmic representations and these representations are the means used by those skilled in the computer industry to expose in the most effective way their achievements to

d'autres hommes du métier.other men of the trade.

Dans le cas présent, comme d'ailleurs dans le cas géné-  In the present case, as in the case of

ral, un algorithme est conçu sous la forme d'une séquence autonome d'étapes conduisant à un résultat voulu. Les étapes sont de celles qui nécessitent des manipulations physiques de quantités physiques. Généralement, bien que cela ne soit pas nécessaire, ces quantités prennent la forme de signaux  ral, an algorithm is conceived as an autonomous sequence of steps leading to a desired result. The steps are those that require physical manipulations of physical quantities. Generally, although not necessary, these quantities take the form of

électriques ou magnétiques pouvant être mémorisés, transfé-  electrical or magnetic devices that can be stored, transferred

rés, combinés, comparés et manipulés de toute autre manière.  res, combined, compared and manipulated in any other way.

Il s'est révélé commode certaines fois, principalement parce qu'il s'agit là d'un usage répandu, de se référer à ces  It has proven to be convenient at times, mainly because it is a widespread use, to refer to these

signaux en termes de "bits", "valeurs", "éléments", "sym-  signals in terms of "bits", "values", "elements", "sym-

boles", "caractères", "nombres", etc. On gardera cependant à  "," characters "," numbers ", etc. However, we will keep

l'esprit le fait que tous ces termes, et les termes sembla-  mind that all these terms, and the terms

bles, doivent être associés aux quantités physiques appro-  must be associated with the appropriate physical quantities

priées et ne sont que des désignations commodes appliquées à  requested and are only convenient designations applied to

ces quantités.these quantities.

Par ailleurs, les manipulations exécutées sont souvent  Moreover, the manipulations performed are often

désignées par des termes, tels que "addition" ou "compa-  terms, such as "addition" or "compa-

raison", qui sont généralement associés à des opérations mentales exécutées par l'homme. Cependant, dans la plupart des cas il ne sera ni souhaitable ni nécessaire de recourir aux aptitudes de l'homme pour les opérations qui seront décrites ci-dessous à propos de la présente invention; ces opérations sont des opérations exécutées en machine. Pour exécuter les opérations de la présente invention, on peut utilement employer des machines telles que des ordinateurs universels ou autres appareils semblables. Dans tous les cas, on gardera à l'esprit la distinction entre le procédé permettant de faire exécuter des opérations à un ordinateur  reason, "which are generally associated with man-made mental operations, however, in most cases it will be neither desirable nor necessary to resort to human skills for the operations described below Of the present invention, these operations are machine-executed operations, and use may be made of machines such as universal computers or other similar apparatus in carrying out the operations of the present invention. the distinction between the method of executing operations on a computer

et le procédé de calcul proprement dit. La présente inven-  and the actual calculation method. This invention

tion concerne des étapes de procédé permettant de faire fonctionner un ordinateur afin de lui faire traiter des signaux physiques électriques ou autres (par exemple méca-  The invention relates to process steps for operating a computer to process electrical or other physical signals (e.g.

niques ou chimiques) pour produire d'autres signaux phy-  or other chemicals) to produce other physiological

siques voulus.wanted.

La présente invention concerne également un dispositif  The present invention also relates to a device

pour exécuter ces opérations. Ce dispositif peut être réa-  to perform these operations. This device can be

lisé spécialement pour les besoins de l'invention, -ou bien il peut être constitué d'un ordinateur universel activé sélectivement ou reconfiguré par un programme informatique mémorisé dans cet ordinateur. Les algorithmes que l'on présentera ici ne sont pas propres à un ordinateur ou dispositif particulier. En particulier, on pourrait utiliser diverses machines universelles avec des programmes écrits conformément aux enseignements qui seront exposés ici, ou bien il pourrait se révéler plus commode de réaliser un dispositif plus spécialisé pour exécuter les étapes de procédé requises. La structure nécessaire à ces diverses  especially for the purposes of the invention, or it may consist of a universal computer selectively activated or reconfigured by a computer program stored in this computer. The algorithms that will be presented here are not specific to a particular computer or device. In particular, various universal machines could be used with written programs in accordance with the teachings to be discussed herein, or it might be more convenient to provide a more specialized device for performing the required process steps. The structure necessary for these various

machines découlera de la description que l'on va donner  machines will flow from the description that we will give

ci-dessous.below.

Description du mode de réalisation préféré  Description of the preferred embodiment

Lors de la conception des systèmes informatiques, on  When designing computer systems, one

s'est aperçu que l'affichage des images graphiques ralen-  noticed that the display of slow moving graphic images

tissait notablement le fonctionnement de la plupart des machines. Ceci vient du fait que la quantité d'informations que doit traiter l1ordinateur pour chaque trame à restituer sur l'afficheur en sortie est très élevée, et du fait que la manipulation de ces informations pour pouvoir restituer l'image graphique nécessite une utilisation démesurée de  significantly woven the operation of most machines. This is because the amount of information that the computer must process for each frame to be rendered on the output display is very high, and because the manipulation of this information to be able to render the graphic image requires an excessive use of

l'unité centrale de traitement.the central processing unit.

Ceci est particulièrement vrai pour un système utilisant une interface comprenant des "fenêtres" multiples sur son  This is especially true for a system using an interface with multiple "windows" on its

- affichage de sortie. Dans un tel système, on place simul-  - output display. In such a system, simul-

tanément plusieurs programmes dans des parties de la mémoire, ces programmes étant disponibles à tout moment. Les informations textuelles et graphiques en sortie de chacun de ces programmes doivent apparaître sur l'afficheur de sortie  several programs in parts of the memory, these programs being available at any time. Textual and graphical information output from each of these programs must appear on the output display

à l'intérieur d'un ensemble donné de frontières prédé-  within a given set of predefined boundaries

terminées appelées "fenêtre" ou "fenêtre de cadrage". Chaque fenêtre peut couvrir d'autres fenêtres, la "fenêtre en  completed called "window" or "frame window". Each window can cover other windows, the "window in

avant-plan" conrrespondant au fichier actif en cours. Géné-  foreground "corresponding to the current active file.

ralement, l'utilisateur de l'ordinateur ne manipule le pro-  the user of the computer does not handle the

gramme qu'une seule fenêtre à la fois, mais peut basculer rapidement sur un programme se trouvant dans une autre fenêtre afin de travailler avec ce programme. En général, les fenêtres nécessitent beaucoup plus de mémoire et de  only one window at a time, but can quickly switch to a program in another window to work with this program. In general, windows require a lot more memory and

temps pour leur manipulation que pour les opérations n'im-  time for their handling than for operations

pliquant pas de fenêtres.pleading no windows.

Le système dont fait partie la présente invention accélère l'affichage infographique en gérant par matériel la plupart des opérations, de sorte que les informations sont instantanément disponibles. Pour permettre l'utilisation du matériel pour la mise en oeuvre de la restitution des graphiques, le système fractionne en quadrilatères les images graphiques à restituer sur l'affichage, quadrilatères qui peuvent tous être gérés de la même manière par le  The system of which the present invention is incorporated accelerates the computer graphics display by managing most operations by hardware, so that the information is instantly available. To allow the use of the material for the implementation of the restitution of the graphics, the system splits in quadrilaterals the graphic images to be restored on the display, quadrilaterals which can all be managed in the same way by the

matériel. Le système prend ces quadrilatères et les frac-  equipment. The system takes these quadrilaterals and breaks them

tionne à nouveau pour donner des segments de droite qui sous-tendent les lignes de balayage correspondantes à restituer sur l'afficheur de sortie, les différentes lignes  again to give line segments which underlie the corresponding scan lines to be rendered on the output display, the different lines

de balayage reconstituant finalement un trapèze. Les coor-  scan finally restoring a trapezoid. The coordinators

données X et Y des deux extrémités de chaque ligne de balayage sont alors déterminées par les circuits de la  X and Y data of the two ends of each scan line are then determined by the circuits of the

présente invention. Le système prend ces coordonnées rectan-  present invention. The system takes these coordinates

gulaires et les traduit en lignes de balayage série qui peuvent être mémorisées dans un tampon de trame et affiché  gulars and translates them into serial scan lines that can be stored in a frame buffer and displayed

sur un afficheur de sortie.on an exit display.

La figure 1 est une représentation d'une forme graphique divisée en deux quadrilatères 8 et 9 qui, lorsqu'ils sont individuellement affichés sur un périphérique de sortie d'ordinateur, donnent la forme originelle complète. Bien que la forme illustrée figure 1 soit simple, l'homme du métier comprendra que l'on peut restituer des formes dont la complexité varie à l'infini à condition de choisir un nombre  Figure 1 is a representation of a graphical form divided into two quadrilaterals 8 and 9 which, when individually displayed on a computer output device, give the complete original form. Although the form illustrated in FIG. 1 is simple, those skilled in the art will understand that we can restore shapes whose complexity varies infinitely if we choose a number

suffisamment important de petits quadrilatères individuels.  large enough individual small quadrilaterals.

En fait, le système de la présente invention a été utilisé pour restituer des formes an.imées tridimensionnelles très  In fact, the system of the present invention has been used to reproduce very dimensional three-dimensional shapes.

complexes de nature.nature complexes.

La figure 3 illustre sous forme de schéma par blocs un système de sortie graphique 10 réalisé conformément à la présente invention, qui peut être utilisé avec un système informatique universel. Le système 10 comporte une logique d'interfaçage de bus 12 qui reçoit de l'unité centrale de traitement du système informatique (non représentée sur les figures) des informations concernant la forme graphique que l'on souhaite afficher. La logique d'interfaçage de bus 12 reçoit des informations sur une ligne d'adressage qui indique l'endroit particulier du système 10 o l'on devra transférer la donnée en entrée. La logique d'interfaçage de bus 12 reçoit sur une ligne d'entrée des données les données  Figure 3 illustrates in block diagram form a graphical output system 10 made in accordance with the present invention, which may be used with a universal computer system. The system 10 includes a bus interface logic 12 which receives information from the central processing unit of the computer system (not shown in the figures) concerning the graphic form that it is desired to display. The bus interfacing logic 12 receives information on an address line which indicates the particular location of the system where the input data will have to be transferred. The bus interfacing logic 12 receives on a data input line the data

utiles telles que la description de la couleur. La logique  useful such as the description of the color. The logic

d'interfaçage de bus 12 reçoit également, sur une ligne de commande, un signal de commande indiquant la manière dont on  bus interfacing 12 also receives, on a command line, a control signal indicating the manner in which one

devra traiter les informations.will have to process the information.

Lorsque l'on reconstruit des représentations graphiques à partir de quadrilatères conformément aux enseignements de la présente invention, les informations d'entrée comportent les coordonnées de l'aire rectangulaire qui définit la fenêtre particulière dans laquelle doit apparaître l'information affichée, les coordonnées (sommets) du quadrilatère et les données de couleur relatives à chaque quadrilatère. Les données de couleur qui doivent être présentées à l'affichage du quadrilatère sont mémorisées dans un étage 22 de routage  When reconstructing graphical representations from quadrilaterals in accordance with the teachings of the present invention, the input information includes the coordinates of the rectangular area that defines the particular window in which the displayed information should appear, the coordinates ( vertices) of the quadrilateral and the color data for each quadrilateral. The color data that must be presented to the display of the quadrilateral are stored in a routing stage 22

de données et d'interfaçage mémoire. Les sommets du quadri-  data and memory interfacing. The summits of the

latère et les informations concernant la fenêtre de cadrage sont mémorisés dans un circuit d'étagement des coordonnées 14 qui comportent un matériel effectuant les comparaisons des informations incidentes par des moyens bien connus de la technique antérieure tels que des registres et des circuits  latte and the information relating to the registration window is stored in a coordinate staging circuit 14 which includes a material performing comparisons of the incident information by means well known in the prior art such as registers and circuits

à portes.with doors.

Les comparaisons effectuées comportent la comparaison de la valeur X de chaque sommet à la valeur X de chacun des autres sommets, la comparaison de la valeur Y de chaque sommet à la valeur Y de chacun des autres sommets et la comparaison de chacune des valeurs X et Y des différents sommets aux valeurs X et Y des bords de la fenêtre de  The comparisons made include comparing the X value of each vertex with the X value of each of the other vertices, comparing the Y value of each vertex with the Y value of each of the other vertices, and comparing each of the X and Y of the different vertices at the X and Y values of the edges of the window of

cadrage dans laquelle doivent être présentées les informa-  framework in which the information should be presented

tions. Comme ceci est réalisé par matériel, les informations  tions. As this is done by hardware, the information

sont immédiatement disponibles pour utilisation par le sys-  are immediately available for use by the

tème 10, sans aucune perte de temps d'horloge système.  10, without any loss of system clock time.

Les informations relatives aux sommets du quadrilatère et  Information about the tops of the quadrilateral and

à la fenêtre de cadrage disponibles dans le circuit d'étage-  to the framing window available in the floor circuit-

ment des coordonnées 14-sont appliquées à un étage de sé-  14-coordinates are applied to a stage of se-

quencement des coordonnées 16 dans lequel le quadrilatère est décomposé en une série de sous-ensembles dont chacun est  coordinate 16 in which the quadrilateral is decomposed into a series of subsets each of which is

formé de deux segments de droite du quadrilatère d'origine.  formed of two line segments of the original quadrilateral.

Chacun de ces sous-ensembles est choisi de manière que les segments de droite définissent une aire du quadrilatère qui  Each of these subsets is chosen so that the line segments define an area of the quadrilateral that

puisse être tracée par une série de lignes de balayage hori-  can be traced through a series of horizontal scanning lines

zontales parallèles, avec pour chacune une valeur X de début se trouvant sur l'un des segments de droite et une valeur X de fin se trouvant sur l'autre segment de droite. Pour l'essentiel, les deux segments de ligne définissent un  zontales parallel, each with a starting X value on one of the line segments and an X end value on the other line segment. For the most part, the two line segments define a

trapèze comprenant autant de lignes de balayage Y (hori-  trapezium comprising as many scan lines Y (horizontal)

zontales) que possible, compte tenu de la forme du quadri-  as possible, taking into account the shape of the quadrennial

latère. Lorsque toute les lignes de balayage de tout les  latere. When all the scan lines of all the

sous-ensembles seront restitués sur l'afficheur, le quadri-  subassemblies will be displayed on the display, the quadrant

latère sera défini en totalité.Lateral will be defined in full.

Les figures 2A à 2B illustrent un quadrilatère isolé  Figures 2A-2B illustrate an isolated quadrilateral

divisé en sous-ensembles conformément à la présente inven-  divided into subsets according to the present invention.

tion. Le quadrilatère que l'on décompose est illustré sur la figure 2A, et les sous-ensembles de celui-ci sont illustrés sur les figures 2B à 2D. Comme on peut le voir sur la figure 2, chaque sous-ensemble comprend, lorsqu'il est présenté sur un afficheur de sortie, une série de lignes de balayage horizontales qui commencent sur l'un des segments de droite définissant le quadrilatère et se terminent sur un autre  tion. The quadrilateral that is broken down is illustrated in Figure 2A, and the subsets thereof are illustrated in Figures 2B to 2D. As can be seen in FIG. 2, each subset comprises, when presented on an output display, a series of horizontal scan lines that start on one of the line segments defining the quadrilateral and terminate. on another

segment de droite. Les lignes de balayage de chaque sous-  right segment. The scan lines of each subset

ensemble du quadrilatère représentent une partie trapé-  together the quadrilateral represent a trapezoidal

zoïdale du quadrilatère d'origine. Lorsque ces lignes hori-  zoidal of the original quadrilateral. When these horizontal lines

zontales de tous les sous-ensembles trapézoïdaux sont balayées dans le tampon de trame pour présentation sur l'afficheur de sortie, la forme du quadrilatère est recons-  of all trapezoidal subsets are scanned into the frame buffer for presentation on the output display, the quadrilateral shape is reconstructed.

tituée dans son intégralité sur l'afficheur.  staggered in its entirety on the display.

Si l'on revient à la figure 3, après que les quadri-  If we go back to Figure 3, after the four

latères aient été décomposés en sous-ensembles, on détermine dans un étage d'adressage fonctionnel 18 les valeurs X de début et de fin des diverses lignes de balayage Y. Dans le mode de réalisation préféré de la présente invention, ceci est réalisé au moyen de circuits qui déterminent les pixels particuliers constituant les valeurs X de début et de fin de  latters have been decomposed into subsets, the start and end X values of the various scan lines Y are determined in a functional addressing stage 18. In the preferred embodiment of the present invention, this is achieved by means of of circuits that determine the particular pixels constituting the X-values of beginning and end of

chaque ligne de balayage située à l'intérieur de la décom-  each scan line inside the decom-

position en sous-ensembles du quadrilatère. Cet étage d'adressage fonctionnel 18 réalise également une partie du cadrage nécessaire pour adapter les divers quadrilatères aux fenêtres de cadrage, puis transfère les signaux vers un étage générateur de masque 20 qui configure les informations en blocs de seize pixels qui indiquent le début et la fin de chaque ligne de balayage et qui sont utilisés pour adresser  position in subsets of the quadrilateral. This functional addressing stage 18 also realizes part of the framing necessary to adapt the various quadrilaterals to the framing windows, then transfers the signals to a mask generating stage 20 which configures the information in blocks of sixteen pixels which indicate the beginning and the end of each scan line and which are used to address

l'étage 22 de routage des données et d'interfaçage mémoire.  the stage 22 of data routing and memory interfacing.

Les signaux de génération de masque sont également appli-  The mask generation signals are also applied

qués à un générateur d'adresses linéaires 24 qui traduit les adresses rectangulaires délivrées par l'étage générateur de masque 20 en signaux permettant d'adresser linéairement le tampon de trame pour l'affichage en sortie. On transfère en ce point vers le tampon de l'afficheur de sortie (tampon de trame) les données de couleur relatives au quadrilatère à afficher qui avaient été conservées en mémoire dans l'étage 22. Diverses parties du système que l'on vient de décrire sont exposées plus en détail dans un certain nombre de demandes de brevet en cours de délivrance, appartenant toutes à la Demanderesse et revendiquant la priorité de demandes déposées à la date de priorité de la présente demande et intitulées: Hardware Implementation of Clipping Comparison Logic (Réalisation matérielle d'une logique de comparaison de cadrage), aux noms de Chris Malachowsky et Curtis Priem, Method and Apparatus for Drawing in any Direction to Minimise Page Crossings (Procédé et dispositif pour effectuer des traçages en tous sens en minimisant les changements de page), aux noms de Chris Malachowsky et Curtis Priem, Clipping Utilizing Test Window (Cadrage utilisant une fenêtre de test), aux noms de Chris Malachowsky et Curtis Priem, Method and Apparatus for Controlling Index Register in a * Graphic Subsystem (Procédé et dispositif de contrôle du registre d'index dans un sous-système graphique) , aux noms de Chris Malachowsky et Curtis Priem, Method and Apparatus for Sorting Line Segments for Display and Manipulation by a Computer System (Procédé et dispositif de tri de segments de droite pour affichage et manipulation par un système informatique), aux noms de Chris Malachowsky et Curtis Priem, Method and Apparatus for Translating Rectilinear Information into Scan Line Information for Display by a Computer System (Procédé et dispositif de traduction d'informations rectangulaires en informations de lignes de balayage pour affichage par un système informatique), aux noms de Chris Malachowsky et Curtis Priem, et Method and apparatus for Decomposing a Quadrilateral Figure for Display and Manipulation by a Computer System (Procédé et dispositif de décomposition d'un quadrilatère figuré pour affichage et manipulation par un système  A linear address generator 24 translates the rectangular addresses delivered by the mask generator stage 20 into signals for linearly addressing the frame buffer for outputting. At this point, the color data relating to the quadrilateral to be displayed which had been stored in memory in stage 22 were transferred to the buffer of the output display (frame buffer). Various parts of the system which have just been describe are discussed in more detail in a number of pending patent applications, all of which belong to the Applicant and claim priority of applications filed on the priority date of this application and entitled: Hardware Implementation of Clipping Comparison Logic ( Material realization of a framing comparison logic), in the names of Chris Malachowsky and Curtis Priem, Method and Apparatus for Drawing in any Direction to Minimize Page Crossings (Method and device to perform tracing in all directions while minimizing page changes ), Chris Malachowsky and Curtis Priem's name, Clipping Utilizing Test Window, with the names of e Chris Malachowsky and Curtis Priem, Method and Apparatus for Controlling Index Register in a Graphic Subsystem (Method and Device for Monitoring the Index Register in a Graphic Subsystem), Chris Malachowsky and Curtis Priem, Method and Apparatus for Sorting Line Segments for Display and Manipulation by a Computer System, entitled Chris Malachowsky and Curtis Priem, Method and Apparatus for Translating Rectilinear Information into Scan Line Information for Display by a Computer System, named after Chris Malachowsky and Curtis Priem, and Method and apparatus for Decomposing a Quadrilateral Figure for Display and Manipulation by a Computer System (Method and device for decomposing a quad figured rilater for display and manipulation by a system

informatique), au nom de Chris Malachowsky.  computer), on behalf of Chris Malachowsky.

La description de la présente invention, elle, concerne  The description of the present invention relates to

le dispositif et le procédé permettant de déterminer les  the device and the method for determining the

extrémités de chaque ligne horizontale de chaque sous-  ends of each horizontal line of each subset

ensemble trapézoïdal du quadrilatère qui devra être produit en bout dechaîne sur l'afficheur de sortie, sous forme de lignes de balayage. Bien que la présente invention soit décrite en relation avec le système infographique illustré figure 3, les spécialistes de la technique comprendront qu'elle peut être appliquée, de façon très étendue, à d'autres systèmes destinés à produire des affichages  trapezoidal assembly of the quadrilateral which will have to be produced at the end of the chain on the output display, in the form of scanning lines. Although the present invention is described in connection with the infographic system illustrated in FIG. 3, it will be appreciated by those skilled in the art that it can be applied extensively to other systems for producing displays.

graphiques en sortie de systèmes informatiques.  output graphics of computer systems.

Les circuits de la présente invention reçoivent des circuits qui décomposent chaque quadrilatère en signaux d'entrée de sous-ensembles représentant les couples de segments de droite qui sous-tendent une série de lignes horizontales communes devant être affichées sur l'afficheur de sortie du système informatique auquel est associé le système infographique. Ces signaux sont appliqués aux circuits sous la forme des coordonnées rectangulaires des  The circuits of the present invention receive circuitry that decompose each quadrilateral into subset input signals representing the pairs of line segments that underlie a series of common horizontal lines to be displayed on the system output display. computer system with which the infographic system is associated. These signals are applied to the circuits in the form of the rectangular coordinates of the

sommets des segments de droite sous-tendant l'aire trapé-  vertices of the line segments underlying the trap

zoïdale particulière ayant les mêmes valeurs Y. Les circuits délivrant ces signaux sont décrits dans une demande de brevet en cours de délivrance, appartenant à la Demanderesse et revendiquant la priorité d'une demande déposée à la date de priorité de la présente demande et intitulée Method and apparatus for Decomposing a Graphics Images for Display and Manipulation by a Computer System (Procédé et dispositif de décomposition d'images infographiques pour affichage et manipulation par un système informatique), au nom de Chris Malachowsky. Comme les informations de position de ligne délivrées au circuit de la présente invention ne comprennent que les  The circuits providing these signals are described in a patent application being issued, belonging to the Applicant and claiming the priority of an application filed on the priority date of the present application and entitled Method and apparatus for Decomposing Graphics for Display and Manipulation by a Computer System, a process and device for decomposing computer graphics for display and manipulation by a computer system, on behalf of Chris Malachowsky. Since the line position information supplied to the circuit of the present invention includes only the

sommets des segments de lignes définissant les divers sous-  vertices of the line segments defining the various sub-

ensembles du quadrilatère, alors que l'afficheur de sortie gère les informations ligne de balayage par ligne de  sets of the quadrilateral, while the output display handles the line scan information by line of

balayage, il est nécessaire de déterminer les points d'ex-  scanning, it is necessary to determine the points of ex-

trémité de chacune des lignes de balayage Y horizontales sous-tendues par les segments de droite afin de pouvoir former sur l'afficheur de sortie les lignes de balayage de  each of the horizontal Y scan lines subtended by the straight segments so that the scan lines of the output display can be formed on the output display.

manière à donner le quadrilatère en question. -  to give the quadrilateral in question. -

Lorsque l'on trace un segment sur un afficheur de sortie tel qu'un tube cathodique, le segment est défini par une  When drawing a segment on an output display such as a cathode ray tube, the segment is defined by a

série de pixels situés sur des lignes de balayage adja-  series of pixels on adjacent scanning lines

centes. Si le segment à tracer est horizontal, une seule ligne de balayage suffit sur l'afficheur pour tracer le segment, si l'on connait l'adresse du pixel de début et du pixel de fin. Si le segment est vertical, on doit inscrire sur l'afficheur un unique pixel pour chaque ligne d'un certain nombre de lignes de balayage adjacentes. Les segments d'inclinaison intermédiaire entre l'horizontale et la verticale ont un nombre de pixels par ligne de balayage variable en fonction de la pente du segment. Si le segment a une faible pente, on trace un certain nombre de pixels adjacents sur chaque ligne de balayage d'une pluralité de  Centes. If the segment to be plotted is horizontal, a single scan line is sufficient on the display to plot the segment, if we know the address of the start pixel and the end pixel. If the segment is vertical, a single pixel must be written on the display for each line of a number of adjacent scan lines. The intermediate slope segments between the horizontal and the vertical have a number of pixels per scan line variable depending on the slope of the segment. If the segment has a small slope, a number of adjacent pixels are plotted on each scan line of a plurality of

lignes de balayage adjacentes, jusqu'à achever le segment.  adjacent scan lines, to complete the segment.

Si les valeurs X de début et de fin de chaque série de pixels adjacents de chaque ligne de balayage sont connues, on peut remplir les pixels sur l'afficheur intercalaires et  If the beginning and ending X values of each series of adjacent pixels of each scan line are known, the pixels on the intercalary display can be filled and

achever ainsi le segment.thus complete the segment.

Il est nécessaire de connaître la position, sur chaque  It is necessary to know the position, on each

ligne de balayage, de chacun des segments de ligne défi-  scanning line, of each of the defined line segments

nissant les côtés des trapèzes à balayer sur l'affichage, afin de tracer ces trapèzes. Tel est le cas si l'on veut commencer et finir chaque ligne de balayage et cadrer les lignes de balayage afin de les limiter à une fenêtre de cadrage. S'il y a intersection de la frontière de cadrage et d'un segment de droite, on doit prévoir un procédé pour déterminer la partie de chaque segment de droite qui doit être tracée. Le concept général du circuit de la présente invention consiste à déterminer ces points de début et de  naming the sides of the trapezes to scan on the display, in order to draw these trapezes. This is the case if we want to start and finish each scan line and frame the scan lines to limit them to a frame window. If there is an intersection of the framing boundary and a straight line segment, a process must be provided to determine the portion of each line segment to be plotted. The general concept of the circuit of the present invention is to determine these start and end points.

fin de chaque ligne de balayage.end of each scan line.

Le circuit de la présente invention comprend deux parties semblables afin de pouvoir gérer en même temps chacun des  The circuit of the present invention comprises two similar parts in order to be able to manage at the same time each of the

deux segments de droite définissant un sous-ensemble. Cha-  two straight segments defining a subset. Cha-

cune de ces parties de circuit commence d'abord par l'un des sommets d'un segment de droite, calcule la pente de ce segment de droite, détermine à partir de ce calcul si c'est la valeur X ou la valeur Y du segment qui augmente avec le taux d'accroissement le plus fort, détermine et mémorise une  one of these circuit parts first begins with one of the vertices of a line segment, calculates the slope of this line segment, determines from this calculation whether it is the X value or the Y value of the segment that increases with the highest growth rate, determines and memorizes a

valeur d'erreur initiale qui devra être décrémentée en fonc-  initial error value which will have to be decremented

tion de la pente, et commence à tracer les valeurs à partir d'un premier sommet. On choisit la valeur d'erreur pour  slope, and starts plotting the values from a first vertex. We choose the error value for

qu'elle soit une mesure de la distance séparant, perpen-  be a measure of the distance separating,

diculairement à l'axe de plus grand déplacement, le trajet  to the axis of greatest displacement, the path

exact du segment de droite des pixels effectivement pro-  exact right segment of the pixels actually produced

duits. Si la valeur de X change plus vite que celle de Y, on incrémente (ou décrémente) d'un pixel chaque pas X, tandis que l'on retranche la variation sur Y de la valeur d'erreur  ucts. If the value of X changes faster than that of Y, we increment (or decrement) by one pixel each step X, while we subtract the variation on Y of the error value

jusqu'à ce que la valeur d'erreur atteigne ou dépasse zéro.  until the error value reaches or exceeds zero.

De cette manière, on détermine la valeur X pour laquelle on doit incrémenter (ou décrémenter) la valeur Y. On mémorise cette valeur X comme valeur X d'extrémité du segment de droite en question, et on incrémente (ou on décrémente) la valeur Y. On mémorise la valeur X rencontrée la première pour la nouvelle valeur Y en tant que valeur X de début pour la nouvelle ligne de valeur de balayage associée à la nouvelle valeur Y. Les opérations continuent de cette manière, avec mémorisation pour chaque valeur Y de la première et de la dernière valeur X rencontrées, jusqu'à  In this way, the value X for which the value Y is to be incremented (or decremented) is determined. This value X is stored as the end value X of the segment of the line in question, and the value is incremented (or decremented). Y. The first encountered value X is stored for the new value Y as the starting value X for the new scan value line associated with the new value Y. The operations continue in this manner, with storage for each value Y of the first and last X values encountered, up to

atteindre le sommet d'extrémité du segment de droite.  reach the end vertex of the right segment.

Du fait que l'on a deux circuits qui fonctionnent de la même manière pour traiter en même temps les deux segments de droite de chaque sous-ensemble d'un quadrilatère, la partie de circuit gérant le premier segment de droite prête à changer de niveau Y attend, lorsqu'elle est prête, que le circuit gérant l'autre segment de droite atteigne le moment o sa valeur Y doit changer. Lorsque ceci a lieu, les valeurs X d'une ligne de balayage complète ont été définies et peuvent être traitées; en conséquence, les deux circuits avancent en même temps à la valeur Y suivante. Le traitement des deux valeurs X de début et des deux valeurs X de fin identifiées pour chacune des lignes de balayage consiste à déterminer la valeur la plus à gauche (minimale) et la plus à droite (maximale) des valeurs X mémorisées à délivrer au  Because we have two circuits that function in the same way to simultaneously process the two line segments of each subset of a quadrilateral, the circuit part managing the first line segment ready to change level. It waits, when it is ready, for the circuit managing the other segment on the right to reach the moment when its value Y must change. When this occurs, the X values of a full scan line have been defined and can be processed; as a result, both circuits advance at the same time to the next value Y. The processing of the two start X values and the two end X values identified for each of the scan lines consists in determining the leftmost (minimum) and rightmost (maximum) values of the stored X values to be delivered to the

circuit de génération de masque 20 illustré figure 3.  mask generating circuit 20 illustrated in FIG.

Pour traiter rapidement chaque quadrilatère, lorsque l'on  To quickly process each quadrilateral, when one

a atteint l'extrémité d'un segment de droite d'un sous-  has reached the end of a straight segment of a sub-

ensemble, le circuit charge le segment de droite suivant à traiter. Comme cela est souvent le cas, un segment de droite se termine avant l'autre. Dans un tel cas, on n'a pas besoin de recharger le segment de ligne qui ne se termine pas, et  together, the circuit loads the next straight segment to be processed. As is often the case, one line segment ends before the other. In such a case, there is no need to reload the line segment that does not end, and

264079Z264079Z

on économise ainsi un temps important.  This saves a lot of time.

Le circuit continue à traiter les segments de ligne du quadrilatère jusqu'à achèvement de la figure. A chaque étape, les valeurs produites sont transférées à des circuits permettant de trier les valeurs, afin de déterminer les valeurs réelles de début et de fin des lignes de balayage en fonction du sens de fonctionnement des circuits de la présente invention et de l'application des informations de fenêtre de cadrage. On doit effectuer cette opération de tri parce que, comme souligné plus haut, le système et le  The circuit continues to process the line segments of the quadrilateral until completion of the figure. At each step, the generated values are transferred to circuitry for sorting the values, to determine the actual start and end values of the scan lines as a function of the operating direction of the circuitry of the present invention and the application. framing window information. This sorting operation must be carried out because, as pointed out above, the system and the

circuit de la présente invention sont conçus pour sélec-  circuit of the present invention are designed to select

tionner la meilleure manière de décomposer une forme pour que l'opération ait lieu le plus rapidement possible. Par  the best way to break down a shape so that the operation takes place as quickly as possible. By

exemple, si une forme à décomposer ne se trouve que parti-  example, if a form to decompose is only partially

ellement à l'intérieur d'une fenêtre de cadrage et parti-  within a frame window and parti-

ellement au-dessus ou bien au-dessous de cette fenêtre de cadrage, l'opération s'exécutera plus rapidement si l'on n'a pas besoin de traiter la partie se trouvant hors de la fenêtre de cadrage. On peut obtenir ceci si la décomposition peut s'exécuter soit de haut en bas soit de bas en haut. En  above or below this frame window, the operation will run faster if you do not need to treat the part outside the frame window. This can be achieved if the decomposition can run either from top to bottom or from bottom to top. In

outre, si l'opération a lieu de bas en haut, on doit fran-  Moreover, if the operation takes place from the bottom up, one must

chir en mémoire un nombre moindre de frontières de page si l'opération s'exécute de droite à gauche que si elle s'exécute de gauche à droite, comme cela est habituellement  Store fewer page boundaries in the memory if the operation runs from right to left than if it runs from left to right, as is usually the case

le cas. En franchissant un moindre nombre de pages, on as-  the case. By crossing a smaller number of pages, we

sure un fonctionnement plus rapide.sure faster operation.

On va donner ci-dessous un algorithme en un pseudo-code semblable au langage de programmation "C', permettant de  We will give below an algorithm in a pseudo-code similar to the programming language "C", allowing to

réaliser les opérations de la présente invention. L'algo-  perform the operations of the present invention. The algorithmic

rithme utilise une version modifiée de l'algorithme de  rithm uses a modified version of the algorithm of

Bresenham bien connu; cependant, l'homme du métier com-  Bresenham well known; however, those skilled in the art

prendra qu'il existe de nombreux autres algorithmes de conversion de balayage qui pourraient être aisément adaptés  will take that there are many other scan conversion algorithms that could be easily adapted

pour mettre en oeuvre la présente invention.  to implement the present invention.

Dans cet algorithme: - "DeltaX" désigne la variation de X d'un sommet à l'autre, - "DeltaY" désigne la variation de Y d'un sommet à l'autre, - on donne à X comme valeur initiale la valeur du sommet de départ, - on donne à Y comme valeur initiale la valeur du sommet de départ, - "Xterm" est la valeur X du sommet terminal, - "Yterm" est la valeur Y du sommet terminal,  In this algorithm: - "DeltaX" denotes the variation of X from one vertex to another, - "DeltaY" denotes the variation of Y from one vertex to another, - we give to X as initial value the value from the starting vertex, - Y is given as initial value the value of the starting vertex, - "Xterm" is the value X of the terminal vertex, - "Yterm" is the value Y of the terminal vertex,

- "abso()" renvoie la valeur absolue des arguments spéci-  - "abso ()" returns the absolute value of the specific arguments

fiés, et - "axe principal" désigne soit X soit Y selon que c'est  and "main axis" means either X or Y depending on whether it is

DeltaX qui est supérieur à DeltaY, ou le contraire.  DeltaX that is greater than DeltaY, or the opposite.

Initialisation DeltaX = abs(X-Xterm) DeltaY = abs(Y-Yterm) axe principal = ((DeltaY-DeltaX)≥0) ? Y:X pente = ((X-Xterm)"≥0) ? Y:X haut = ((YYterm)≥0) ? 0:1 E =: (Delta(axe principal) "1) cb = Delta(axe principal) [0] /* bit le plus faible */ Boucle principale X débutpixel (X,Y) tant que (X!=Xterm) { E = E - DeltaY si (testX(E,cb,haut)) { finpixel(X,Y) Y = Y + (haut ? 1:-1); X = X + (pente ? 1:-1); début_pixel(X,Y) E = E + DeltaX; }sinon X = X + (pente ? 1:-1); } finpixel(X,Y) Test de boucle principale X testX(e,cb,haut)= (e<0) Il (haut&&(cb==0)&&(e==0) Boucle principale Y début_pixel (X,Y) tant que (Y!=Yterm){ E = E - DeltaX si (testY(E,cb,pente)){ fin_pixel (X, Y) X = X + (pente ? 1:-1); Y = Y + (haut ? 1:-1); début pixel(X,Y) E = E + DeltaY; sinon Y = Y + (haut ? 1:1); ) fin_pixel (X, Y) Test de boucle principale Y testY(e,cb,pente) = (e<0) Il (pente&&(cb==0)&&(e==0) La figure 4 illustre le fonctionnement d'une partie des circuits de la présente invention que l'on vient de décrire pour la gestion d'un segment de droite. Sur la figure 4, on a illustré un segment de droite commençant au sommet (0,5) et se terminant au sommet (4,6). Si l'on met en oeuvre la présente invention, les circuits déterminent d'abord la variation de X entre les deux sommets du segment de droite et la variation de Y entre les sommets, puis détermine à partir de ces variations la pente du segment de droite, détermine l'axe principal (la valeur présentant la variation la plus importante) et rend le terme d'erreur égal à la moitié de la valeur de la variation de X. On choisit cette valeur moitié pour équilibrer les pixels définis par le  Initialization DeltaX = abs (X-Xterm) DeltaY = abs (Y-Yterm) main axis = ((DeltaY-DeltaX) ≥0)? Y: X slope = ((X-Xterm) "≥0)? Y: X up = ((YYterm) ≥0)? 0: 1 E =: (Delta (main axis)" 1) cb = Delta (main axis ) [0] / * lowest bit * / Main loop X startpixel (X, Y) as long as (X! = Xterm) {E = E - DeltaY if (testX (E, cb, up)) {finpixel (X Y) Y = Y + (high? 1: -1); X = X + (slope? 1: -1); start_pixel (X, Y) E = E + DeltaX; } else X = X + (slope? 1: -1); } finpixel (X, Y) Main loop test X testX (e, cb, up) = (e <0) Il (top && (cb == 0) && (e == 0) Main loop Y begin_pixel (X, Y ) as (Y! = Yterm) {E = E - DeltaX if (testY (E, cb, slope)) {end_pixel (X, Y) X = X + (slope? 1: -1); Y = Y + (high? 1: -1); pixel start (X, Y) E = E + DeltaY; else Y = Y + (high? 1: 1);) end_pixel (X, Y) Main loop test Y testY (e , cb, slope) = (e <0) Il (slope && (cb == 0) && (e == 0) FIG. 4 illustrates the operation of a part of the circuits of the present invention which has just been described for the management of a straight line segment Fig. 4 shows a line segment beginning at the top (0.5) and terminating at the top (4,6). the circuits first determine the variation of X between the two vertices of the line segment and the variation of Y between the vertices, then determine from these variations the slope of the line segment, determines the main axis (the value presenting the largest variation) and makes the error term equal to half of the value of the variation of X. We choose this value half to balance the pixels defined by the

circuit pour le segment de droite afin de donner une appa-  circuit for the right segment to give an appearance

rence plus symétrique. A partir de ces valeurs, le traçage commence, avec la valeur de sommet de X mémorisée comme valeur du premier X sur la ligne de balayage pour ce segment de droite. Le circuit décrémente ensuite l'erreur de la valeur de la variation selon Y et teste deux conditions: "le terme d'erreur est-t-il maintenant inférieur à zéro ?" et "la direction de traçage est-t-elle vers le haut et  more symmetrical From these values, tracing begins, with the vertex value of X stored as the value of the first X on the scan line for that line segment. The circuit then decrements the error of the value of the variation according to Y and tests two conditions: "is the error term now less than zero?" and "is the tracing direction up and

l'erreur égale à zéro ?".the error equals zero? "

Si aucune de ces conditions n'est vérifiée, l'opération continue jusqu'à ce que la valeur du terme d'erreur atteigne un point tel que la condition testée devienne vraie,  If none of these conditions are satisfied, the operation continues until the value of the error term reaches a point such that the tested condition becomes true,

* c'est-à-dire que le terme d'erreur atteigne ou dépasse zéro.* that is, the error term reaches or exceeds zero.

On mémorise alors la valeur du terme X comme dernière valeur X pour cette ligne de balayage (pour cette valeur Y) de ce segment de droite. L'opération continue pour la valeur Y  The value of the term X is then stored as the last value X for this scan line (for this value Y) of this line segment. The operation continues for the value Y

suivante, en mémorisant la première valeur X après l'in-  next, by memorizing the first value X after the in-

crément comme valeur X de début pour la ligne de balayage, et en ajoutant à nouveau la valeur de la variation de X au terme d'erreur. L'opération continue en suivant la ligne de balayage par accroissement des valeurs X et réduction du terme d'erreur jusqu'à ce que le terme d'erreur atteigne ou dépasse zéro. Ici encore, on mémorise alors la valeur X comme dernière valeur X de la ligne de balayage, on ajoute à nouveau la variation de X au terms d'erreur et on passe à la  crement as the starting X value for the scan line, and again adding the value of the variation of X to the error term. The operation continues by following the X-scan increment scan line and reducing the error term until the error term reaches or exceeds zero. Here again, we store the value X as the last value X of the scan line, we add again the variation of X to the error terms and we go to the

valeur Y suivante.next Y value.

L'opération continue jusqu'à déterminer la valeur X égale à la valeur X terminale pour le segment de droite; on a alors défini la totalité du segment de droite et le circuit peut être initialisé pour un nouveau segment de droite. On notera que, bien que chacune des parties du circuit opère de façon indépendante pour traiter l'un des deux segments de droite, lorsque chaque partie du circuit  The operation continues to determine the value X equal to the X terminal value for the line segment; we then defined the entire line segment and the circuit can be initialized for a new line segment. Note that although each of the parts of the circuit operates independently to process one of the two straight segments, when each part of the circuit

qui gère un segment de droite a terminé une ligne de bala-  who manages a right-wing segment has completed a line of

yage donnée, elle teste si l'autre segment de ligne a été complètement défini pour cette ligne de balayage. Si tel n'est pas le cas, le circuit attend alors que la ligne de balayage ait été finie pour l'autre segment de droite, afin que les deux circuits puissent progresser ensemble et que l'on puisse transférer la définition complète de chaque  Given the data, it tests whether the other line segment has been completely defined for this scan line. If this is not the case, then the circuit waits for the scan line to be finished for the other line segment so that the two circuits can progress together and the complete definition of each can be transferred.

ligne de balayage aux étages suivants en une seule fois.  scan line to subsequent stages at one time.

La figure 5 illustre un circuit 30 constituant un mode de  FIG. 5 illustrates a circuit 30 constituting a mode of

réalisation préféré pour la mise en oeuvre de l'invention.  preferred embodiment for the implementation of the invention.

Le circuit 30 compbrte deux parties essentiellement semblables 32 et 34 dont chacune gère l'un des deux segments de droite. On décrira seulement la partie 32, du fait de cette similitude. Lors de la détermination des valeurs d'extrémité des lignes de balayage, on commence par initialiser les circuits pour chaque segment de droite. Pour réaliser ceci, la partie 32 reçoit, à un premier cycle d'horloge, des valeurs d'entrée représentant les valeurs de X du début et de la fin du premier segment de droite (le segment de ligne A). Ces valeurs sont, respectivement, mémorisées dans des registres 36 et 38 et transférées à des multiplexeurs 40 et 42. Les multiplexeurs 40 et 42  The circuit 30 includes two essentially similar parts 32 and 34, each of which manages one of the two right-hand segments. We will only describe part 32, because of this similarity. When determining the end values of the scan lines, initialize the circuits for each line segment. To achieve this, the party 32 receives, at a first clock cycle, input values representing the X values of the beginning and the end of the first line segment (the line segment A). These values are, respectively, stored in registers 36 and 38 and transferred to multiplexers 40 and 42. Multiplexers 40 and 42

transfèrent les valeurs X à des portes OU EXCLUSIF 44 et 46.  transfer X values to EXCLUSIVE OR gates 44 and 46.

Ces portes OU EXCLUSIF 44 et 46 reçoivent également des valeurs d'entrée ("zéro" ou "un") qui permettent de transférer la valeur X telle quelle ou complémentée, afin de pouvoir soit ajouter soit retrancher les valeurs au moyen d'un additionneur 48. Si, par exemple, on applique un "zéro" à la porte OU EXCLUSIF 44, la valeur sur l'autre entrée de cette porte sera simplement transférée à l'additionneur 48 tandis que, si on applique un "un" à la porte*44, la valeur d'entrée sera complémentée de sorte que il sera facile de la retrancher (en binaire). Pour déterminer la variation de la valeur de X entre le début et la fin, on calcule la différence entre les termes X et, par un multiplexeur 50, on applique pour mémorisation cette différence à un registre 52 de variation de X. Au cycle d'horloge suivant, on applique aux multiplexeurs et 42 les valeurs de Y de début et de fin du segment de droite A; de façon semblable, on détermine la variation de Y au moyen de l'additionneur 48 et on la mémorise à la fois dans un registre de variation de Y 54 et dans un registre  These EXCLUSIVE OR gates 44 and 46 also receive input values ("zero" or "one") which make it possible to transfer the value X as it is or complemented, in order to be able to add or subtract the values by means of an adder 48. If, for example, a "zero" is applied to the EXCLUSIVE OR gate 44, the value on the other input of this gate will simply be transferred to the adder 48 while, if a "one" is applied to the gate * 44, the input value will be complemented so that it will be easy to remove (in binary). To determine the variation of the value of X between the beginning and the end, the difference between the terms X is calculated and, by a multiplexer 50, this difference is applied for storage to a register 52 of variation of X. At the cycle of following clock is applied to the multiplexers and the 42 values of Y start and end of the line segment A; similarly, the variation of Y is determined by means of the adder 48 and is stored both in a Y variation register 54 and in a register

d'erreur 56.Error 56.

La mémorisation de la valeur de variation de Y dans le registre d'erreur 56 permet de déterminer l'axe principal sans qu'il soit nécessaire de recourir à des circuits additionnels. Ceci est réalisé en transférant à l'additionneur 48 les valeurs conservées dans les registres 52 et 56, en complémentant l'une d'entre elles afin de déterminer, parmi DeltaX et DeltaY, la valeur la plus élevée. Cette valeur la plus élevée est alors divisée par deux en décalant d'une unité vers la droite la valeur dans l'additionneur 48 et en la plaçant dans le registre d'erreur au moyen du multiplexeur 50. Ceci achève l'initialisation du  The storage of the variation value of Y in the error register 56 makes it possible to determine the main axis without the need to resort to additional circuits. This is done by transferring to the adder 48 the values stored in the registers 52 and 56, complementing one of them to determine, among DeltaX and DeltaY, the highest value. This highest value is then halved by shifting the value by one unit to the right in the adder 48 and placing it in the error register by means of the multiplexer 50. This completes the initialization of the

circuit 32.circuit 32.

Au même moment, le circuit 34 reçoit les valeurs de X et de Y de début et de fin et achève leur initialisation pour l'autre segment de droite à traiter, c'est-à-dire la droite B. Une fois l'initialisation achevée, chacun des circuits 32 et 34 commence à traiter l'information de segment de droite du segment de droite qu'il gère. Si l'on considère seulement le circuit 32, la valeur de X courante pour la ligne A est conservée dans le registre 36. La valeur dans le registre 36 est testée, au moyen d'un comparateur 58, par rapport à la valeur terminale de X mémorisée dans le registre 38. Si les valeurs ne sont pas égales, les multiplexeurs 40 et 42 transfèrent à l'additionneur 48 l'erreur et les valeurs de variation de Y via les portes OU EXCLUSIF 44 et 46, de manière à retrancher de l'erreur la variation de Y. On mémorise dans le registre d'erreur 56 la valeur d'erreur réduite, et le processus continue jusqu'à ce que la valeur d'erreur atteigne ou dépasse zéro. Le rapport entre l'erreur et la valeur zéro est testée par une machine à états 60 qui, lorsque la condition de test est vérifiée, transfère la valeur de X actuelle comme valeur d'extrémité pour cette ligne de balayage Y, provoque l'incrémentation (ou la décrémentation) de la valeur de Y et restaure le registre d'erreur en ajoutant à la valeur d'erreur actuelle une valeur égale à la valeur de la variation de X. Comme on l'a souligné plus haut, lorsque l'un ou l'autre des circuits 32 ou 34 arrive au moment o une valeur de Y doit changer en fonction de la valeur de la pente du segment de droite, le premier des circuits 32 ou 34 qui atteint la valeur de changement le signale à la machine à états 60 et attent que l'autre des deux circuits 32 ou 34 soit également prêt à modifier la valeur de Y. Lorsque tel est le cas, la machine à états délivre des signaux permettant de faire progresser chacun des deux circuits 32 et 34 à la ligne Y suivante. De cette manière, les deux circuits 32 et 34 gèrent la même ligne de balayage Y en même temps, et on peut transférer ainsi en même temps aux étages suivants les  At the same time, the circuit 34 receives the values of X and Y of start and end and completes their initialization for the other segment of the line to be processed, that is to say the line B. Once the initialization completed, each of circuits 32 and 34 begins processing the right segment information of the line segment that it manages. If only the circuit 32 is considered, the current value of X for the line A is kept in the register 36. The value in the register 36 is tested, by means of a comparator 58, with respect to the terminal value of X stored in the register 38. If the values are not equal, the multiplexers 40 and 42 transfer to the adder 48 the error and the values of variation of Y via the EXCLUSIVE OR gates 44 and 46, so as to subtract from the error of the variation of Y. The reduced error value is stored in the error register 56, and the process continues until the error value reaches or exceeds zero. The ratio between the error and the zero value is tested by a state machine 60 which, when the test condition is satisfied, transfers the current value of X as the end value for that scan line Y, causes the incrementation (or decrement) the value of Y and restores the error register by adding to the current error value a value equal to the value of the variation of X. As was pointed out above, when the one or the other of the circuits 32 or 34 arrives at the moment when a value of Y must change according to the value of the slope of the line segment, the first of the circuits 32 or 34 which reaches the value of change signals it to the state machine 60 and wait that the other of the two circuits 32 or 34 is also ready to change the value of Y. When this is the case, the state machine delivers signals to advance each of the two circuits 32 and 34 at the next line Y. In this way, the two circuits 32 and 34 handle the same scan line Y at the same time, and thus can be transferred to the following stages at the same time.

valeurs des deux extrémités d'une ligne de balayage.  values of both ends of a scan line.

Lorsque le circuit 30 de la figure 5 est en train de traiter un segment de droite pour déterminer les valeurs de X des extrémités de la ligne horizontale, et que le segment de droite est un segment de droite avec une pente supérieure ou égale à l'unité, c'est-à-dire correspondant à un angle d'inclinaison de 45 ou plus, le circuit opère, pour l'essentiel, de la même manière. Les valeurs de X de début et de fin de chaque segment de droite sont tout d'abord traitées par chacun des circuits 32 et 34 pour déterminer, dans chacun des cas, une variation de la valeur de X. Les valeurs de Y de début et de fin de chaque segment de droite sont ensuite traitées par chacun des circuits pour déterminer, dans chacun des cas, une variation de la valeur de Y. La variation de valeur de X est ensuite comparée à la variation de valeur de Y pour chacun des deux segments de droite, et l'on donne à l'erreur une valeur égale à la moitié de la variation de la valeur de Y pour chaque segment de droite ayant une pente supérieure à l'unité. Le traitement a ensuite lieu de la même manière que précédemment, en avançant cependant initialement pas à pas suivant les valeurs de Y jusqu'à ce que l'on rencontre une variation de X. Entretemps, un circuit 64 est en train de gérer les valeurs de Y. Le circuit 64 comporte un registre 66 qui, initialement, reçoit et conserve la valeur de Y, un multiplexeur 68 qui reçoit un certain nombre de signaux comprenant la valeur de fin de Y de chaque segment de droite et les valeurs minimales et maximales de cadrage Y, et un registre de fin Y 70. Les valeurs des registres 66 et 70 sont comparés par un comparateur 72 qui est capable de déterminer si une valeur est supérieure, inférieure ou égale à l'autre. Cette configuration peut être utilisée pour déterminer le moment o un segment de droite a atteint son point d'extrémité, et également pour déterminer si la figure  When the circuit 30 of FIG. 5 is processing a line segment to determine the X values of the ends of the horizontal line, and the line segment is a line segment with a slope greater than or equal to unit, that is to say corresponding to an inclination angle of 45 or more, the circuit operates, essentially, in the same way. The starting and ending X values of each line segment are first processed by each of the circuits 32 and 34 to determine, in each case, a change in the value of X. The values of Y of start and end of each line segment are then processed by each circuit to determine, in each case, a change in the value of Y. The change in value of X is then compared to the change in value of Y for each of the two segments of the line, and the error is given a value equal to half of the variation of the value of Y for each line segment having a slope greater than unity. The processing then takes place in the same manner as before, advancing however initially step by step according to the values of Y until a variation of X is encountered. Meanwhile, a circuit 64 is in the process of managing the values The circuit 64 includes a register 66 which initially receives and holds the value of Y, a multiplexer 68 which receives a number of signals including the end of Y value of each line segment and the minimum and maximum values. Y and a Y end register 70. The values of the registers 66 and 70 are compared by a comparator 72 which is able to determine if one value is greater than, less than or equal to the other. This configuration can be used to determine when a line segment has reached its end point, and also to determine if the figure

se trouve à l'intérieur de la fenêtre de cadrage.  is inside the frame window.

Le circuit 64 comporte également un registre de cadrage Y 74 qui reçoit en entrée des valeurs représentant les valeurs de cadrage Y maximum ou minimum. Ces valeurs indiquent la position des frontières supérieure et inférieure de la fenêtre de cadrage dans laquelle on doit inscrire le quadrilatère. Le registre de cadrage 74 reçoit l'une de ces valeurs par l'intermédiaire d'un multiplexeur 76 qui laisse passer soit la valeur Y minimum soit la valeur Y maximum de la fenêtre de cadrage, selon le sens dans lequel  The circuit 64 also includes a Y-register 74 which receives as input values representing the maximum or minimum framing values Y. These values indicate the position of the upper and lower borders of the frame window in which the quadrilateral must be written. The framing register 74 receives one of these values via a multiplexer 76 which passes either the minimum Y value or the maximum Y value of the framing window, depending on the direction in which

l'information est inscrite dans le tampon de trame.  the information is written in the frame buffer.

Dans certains cas, une forme particulière à restituer peut se trouver cadrée à la fois sur son bord supérieur et sur son bord inférieur. Le cadrage au bord de début de la forme est déterminé en comparant la valeur initiale Y du registre 66 à la valeur de cadrage de début, qui est appliquée au registre 74 par un multipleur 76. Si, par exemple, l'information est en cours d'inscription en bas de l'écran, la valeur appliquée est la valeur Y de cadrage minimale; si l'on progresse dans l'autre sens, c'est la  In some cases, a particular shape to be restored can be framed both on its upper edge and on its lower edge. The framing at the beginning edge of the shape is determined by comparing the initial value Y of the register 66 with the starting framing value, which is applied to the register 74 by a multiplier 76. If, for example, the information is in progress at the bottom of the screen, the value applied is the minimum framing Y value; if you go the other way, it's the

valeur Y de cadrage maximale que l'on applique au registre.  maximum framing Y value applied to the register.

Un multiplexeur 78 applique la valeur de cadrage au comparateur 72. Le comparateur de grandeurs 72 délivre alors un signal qui inhibe la restitution tant que la valeur Y ne  A multiplexer 78 applies the framing value to the comparator 72. The quantity comparator 72 then delivers a signal which inhibits the restitution as long as the value Y

se trouve pas & l'intérieur de la fenêtre de cadrage.  is not inside the frame window.

La valeur de Y placée dans le registre 70 est la valeur Y de la dernière ligne & tracer dans le trapèze ou la frontière de cadrage Y appropriée, selon la valeur à laquelle on doit terminer entièrement la figure une fois que  The value of Y placed in the register 70 is the Y value of the last line & traced in the trapezoid or the appropriate framing border Y, depending on the value at which the figure must be completely completed once

la forme se trouve à l'intérieur de la fenêtre de cadrage.  the shape is inside the frame window.

Cette valeur (registre 70) est délivrée par le circuit (multiplexeur 78) qui compare la valeur courante de Y (registre 66) à cette valeur de fin de Y. Dans le cas o la forme s'étend au-delà de la fenêtre de cadrage, la valeur Y de fin est placée dans le registre 70 et comparée dans le comparateur 72 à la valeur Y réelle. De cette manière, on peut déterminer la valeur de fin de la partie de la forme à restituer. Ceci est particulièrement intéressant avec la présente invention, qui est capable d'inscrire les informations dans le tampon de trame aussi bien en allant vers le haut qu'en allant vers le bas (c'est-à-dire dans le sens des Y croissants ou décroissants, respectivement). Ceci permet d'exécuter la conversion de balayage de ligne de telle sorte que les informations visibles (non cadrées) soient traitées les premières lors de  This value (register 70) is delivered by the circuit (multiplexer 78) which compares the current value of Y (register 66) with this end value of Y. In the case where the form extends beyond the window of framing, the end Y value is placed in the register 70 and compared in the comparator 72 to the actual value Y. In this way, the end value of the part of the shape to be rendered can be determined. This is particularly interesting with the present invention, which is able to write the information in the frame buffer both upward and downward (i.e. in the direction of increasing Y's or decreasing, respectively). This makes it possible to execute the line scan conversion so that the visible (non-framed) information is processed first when

cette opération, avant les informations qui seront cadrées.  this operation, before the information that will be framed.

On peut faire abstraction de ces dernières informations, ce  We can ignore this latest information, this

qui accroît notablement la vitesse de fonctionnement.  which significantly increases the speed of operation.

Claims (3)

PREVENDICATIONSPREVENDICATIONS 1. Un circuit (30) pour déterminer les valeurs X de chaque extrémité d'une suite de lignes horizontales reliant un couple de segments de droite dcnt chacun est défini par  1. A circuit (30) for determining the X values of each end of a series of horizontal lines connecting a pair of line segments each of which is defined by un couple de sommets, l'aire définie par les lignes hori-  a pair of vertices, the area defined by the horizontal lines zontales devant être présentée sur un afficheur de sortie d'un système informatique, circuit caractérisé en ce qu'il comprend: - des moyens (32) pour déterminer la variation de la valeur X entre les sommets d'un premier segment de droite, - des moyens (34) pour déterminer la variation de la valeur X entre les sommets d'un second segment de droite, - des moyens (32) pour déterminer la variation de la valeur Y entre les sommets du premier segment de droite, - des moyens (34) pour déterminer la variation de la valeur Y entre les sommets du second segment de droite, - des moyens (32) pour déterminer si la pente du premier segment de droite est supérieure à l'unité, - des moyens (34) pour déterminer si la pente du second segment de droite est supérieure à l'unité, - des moyens (32) pour établir, pour le premier segment de droite, une valeur d'erreur égale à la plus grande des variations de X et de Y entre les sommets, - des moyens (34) pour établir, pour le second segment de droite, une valeur d'erreur égale à la plus grande des variations de X et de Y entre les sommets, des moyens (32) pour incrémenter la valeur du terme X ou Y de plus grande variation entre les sommets à partir d'une position initiale de ce terme pour le premier segment de droite, - des moyens (34) pour incrémenter la valeur du terme X ou Y de plus grande variation entre les sommets à partir d'une position initiale de ce terme pour le second segment de droite, les positions initiales de chacun des segments de droite ayant la même valeur Y, - des moyens (32) pour retrancher de l'erreur, pour le premier segment de droite, la moindre des variations des termes X ou Y avec chaque incrément du terme X ou Y  zontales to be presented on an output display of a computer system, circuit characterized in that it comprises: - means (32) for determining the variation of the value X between the vertices of a first segment of line, - means (34) for determining the variation of the X value between the vertices of a second line segment, - means (32) for determining the variation of the Y value between the vertices of the first line segment, - means (34) for determining the variation of the Y value between the vertices of the second line segment, - means (32) for determining whether the slope of the first line segment is greater than unity, - means (34) for determining if the slope of the second line segment is greater than unity; - means (32) for establishing, for the first line segment, an error value equal to the greatest of the variations of X and Y between the vertices, - means (34) to establish, for the second segm right angle, an error value equal to the largest of the X and Y variations between the vertices, means (32) for incrementing the value of the X or Y term of greatest variation between the vertices from an initial position of this term for the first line segment, - means (34) for incrementing the value of the X or Y term of greatest variation between the vertices from an initial position of this term for the second segment of right, the initial positions of each of the line segments having the same value Y, - means (32) for subtracting from the error, for the first line segment, the least of the variations of the terms X or Y with each increment of the term X or Y présentant la variation la plus importante entre les som-  with the most significant variation between mets, jusqu'à ce que l'erreur atteigne zéro, - des moyens (34) pour retrancher de l'erreur, pour le second segment de droite, la moindre des variations des termes X ou Y avec, chaque incrément du terme X ou Y  put, until the error reaches zero, - means (34) to subtract from the error, for the second straight segment, the least of the variations of the terms X or Y with, each increment of the term X or Y présentant la variation la plus importante entre les som-  with the most significant variation between mets, jusqu'à ce que l'erreur atteigne zéro, - des moyens (32) pour incrémenter le terme X ou Y présentant la moindre variation entre les sommets du premier segment de droite en réponse au terme d'erreur devenant zéro pour le premier segment de droite, - des moyens (34) pour incrémenter le terme X ou Y présentant la moindre variation entre les sommets du second segment de droite en réponse au terme d'erreur devenant zéro pour le second segment de droite, et - des moyens (32,34) pour poursuivre l'opération jusqu'à ce que les valeurs X et Y atteintes par incrémentation soient égales aux valeurs X et Y du sommet terminal pour ce  set, until the error reaches zero, - means (32) for incrementing the term X or Y having the least variation between the vertices of the first line segment in response to the error term becoming zero for the first right-hand segment; means (34) for incrementing the X or Y term exhibiting the least variation between the vertices of the second line segment in response to the error term becoming zero for the second line segment, and - means ( 32,34) to continue the operation until the values X and Y reached by incrementation are equal to the values X and Y of the terminal vertex for this segment de droite.right segment. 2. Le. circuit pour déterminer les valeurs X de chaque extrémité d'une suite de lignes horizontales reliant un couple de segments de droite selon la revendication 1, caractérisé en ce qu'il comprend en outre: - des moyens pour interrompre le fonctionnement des premiers moyens pour incrémenter la valeur du terme X ou Y de plus grande variation entre les sommets pour le segment de ligne pour lequel le terme d'erreur atteint zéro tant que le terme d'erreur pour l'autre segment de droite n'a pas  2. The. circuit for determining the X values of each end of a series of horizontal lines connecting a pair of line segments according to claim 1, characterized in that it further comprises: - means for interrupting the operation of the first means for incrementing the value of the X or Y term of greatest variation between the vertices for the line segment for which the error term reaches zero as long as the error term for the other line segment does not atteint zéro.reaches zero. 3. Un circuit pour déterminer les valeurs X de chaque extrémité d'une suite de lignes horizontales de balayage reliant un couple de segments de droite dont chacun est défini par un couple de sommets, les lignes horizontales de  3. A circuit for determining the X values of each end of a series of horizontal scan lines connecting a pair of line segments each of which is defined by a pair of vertices, the horizontal lines of balayage définissant une aire à restituer sur un péri-  scan defining an area to be restored on a peri- phérique de sortie d'ordinateur, circuit caractérisé en ce qu'il comprend: - un premier (32) et un second (34) bloc de circuit, chacun de ces blocs de circuit comprenant des moyens pour déterminer la pente d'un segment de droite et des moyens pour déterminer, en fonction de la pente, les valeurs X de début et de fin pour chaque segment de droite de chaque ligne de balayage de l'aire à restituer, - des moyens pour faire commencer à fonctionner les deux blocs de circuit sur la même ligne de balayage, et des moyens pour transformer la valeur Y de chaque bloc de circuit en la valeur Y de la ligne suivante de balayage  computer output circuit, characterized in that it comprises: - a first (32) and a second (34) circuit block, each of these circuit blocks comprising means for determining the slope of a segment of and means for determining, as a function of the slope, the starting and ending X values for each line segment of each scan line of the area to be restored, - means for starting to operate the two blocks of circuit on the same scan line, and means for transforming the Y value of each circuit block into the Y value of the next scan line adjacente au même moment.adjacent at the same time. 2C2C
FR8916545A 1988-12-20 1989-12-14 CIRCUIT FOR DETERMINING POSITIONS OF SCANNING LINES FOR DISPLAY AND MANIPULATION BY AN INFOGRAPHIC SYSTEM Expired - Fee Related FR2640792B1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US28699788A 1988-12-20 1988-12-20

Publications (2)

Publication Number Publication Date
FR2640792A1 true FR2640792A1 (en) 1990-06-22
FR2640792B1 FR2640792B1 (en) 1995-03-03

Family

ID=23101036

Family Applications (1)

Application Number Title Priority Date Filing Date
FR8916545A Expired - Fee Related FR2640792B1 (en) 1988-12-20 1989-12-14 CIRCUIT FOR DETERMINING POSITIONS OF SCANNING LINES FOR DISPLAY AND MANIPULATION BY AN INFOGRAPHIC SYSTEM

Country Status (5)

Country Link
JP (1) JP2787487B2 (en)
CA (1) CA1324676C (en)
FR (1) FR2640792B1 (en)
GB (1) GB2226480B (en)
HK (1) HK52594A (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1985002035A1 (en) * 1983-10-25 1985-05-09 Ramtek Corporation Surface-fill method and apparatus
EP0218984A2 (en) * 1985-10-09 1987-04-22 International Business Machines Corporation Computer graphics processing apparatus and method
US4725831A (en) * 1984-04-27 1988-02-16 Xtar Corporation High-speed video graphics system and method for generating solid polygons on a raster display

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1985002035A1 (en) * 1983-10-25 1985-05-09 Ramtek Corporation Surface-fill method and apparatus
US4725831A (en) * 1984-04-27 1988-02-16 Xtar Corporation High-speed video graphics system and method for generating solid polygons on a raster display
EP0218984A2 (en) * 1985-10-09 1987-04-22 International Business Machines Corporation Computer graphics processing apparatus and method

Also Published As

Publication number Publication date
JPH02190897A (en) 1990-07-26
FR2640792B1 (en) 1995-03-03
GB2226480B (en) 1993-09-22
CA1324676C (en) 1993-11-23
JP2787487B2 (en) 1998-08-20
GB8921264D0 (en) 1989-11-08
GB2226480A (en) 1990-06-27
HK52594A (en) 1994-06-03

Similar Documents

Publication Publication Date Title
FR2534400A1 (en) GRAPHIC DISPLAY METHODS AND APPARATUS
FR2638264A1 (en) METHOD FOR MINIMIZING THE VISUAL DEGRADATION OF DIGITAL CHARACTERS, IN PARTICULAR WHEN DISPLAYED ON A SCREEN
EP1292921B1 (en) Refinement of a three-dimensional triangular mesh
EP0054596B1 (en) Process for inspecting and automatically classifying objects presenting configurations with dimensional tolerances and variable rejecting criteria depending on placement, apparatus and circuits therefor
FR2583541A1 (en) HIGH SPEED Z BUFFER WITH DYNAMIC RANDOM ACCESS MEMORY
FR2597227A1 (en) METHOD FOR PRODUCING A TWO-DIMENSIONAL DISPLAY REPRESENTING A THREE-DIMENSIONAL DATA SET
FR2646729A1 (en) Method and system for manipulating drafts of a symbol image in various dimensions and by various displacements of points in order to improve a numerical character figure on a frame output device
EP0458692B1 (en) Method of displaying a partial image of a physical structure
FR2583183A1 (en) METHOD AND APPARATUS FOR RAPIDLY CALCULATING FRACTALS
FR2604019A1 (en) COLOR VIDEO DISPLAY DEVICE FOR COMPUTER SYSTEM, AND METHOD FOR CONVERTING COLOR VIDEO SIGNALS THEREFOR
FR2586838A1 (en) PROCESSOR FOR REMOVING HIDDEN FACES FOR THE SYNTHESIS OF THREE-DIMENSIONAL IMAGES
FR2632434A1 (en) METHOD AND DEVICE FOR DISPLAYING TWO AND THREE-DIMENSIONAL GRAPHIC INFORMATION WITHIN A WINDOW OF A DISPLAY SYSTEM
FR2964236A1 (en) DEVICE AND METHOD FOR GENERATING VARIABLE PRIORITY MULTIFERENCE IMAGES
JP2005050317A5 (en)
CN107633228A (en) Video data handling procedure and device, computing device
FR2543721A1 (en) DEVICE FOR GENERATING IMAGES ON A SCREEN IN A COMPUTER-CONTROLLED VISUALIZATION SYSTEM
EP0125989B1 (en) Method of generating a video picture comprising a geometric figure, and form generator carrying out this method
FR2658933A1 (en) SYSTEM FOR CONTROLLING THE CONDUCT OF TEST SEQUENCES IN AN INFORMATION PROCESSING APPARATUS.
FR2640792A1 (en) CIRCUIT FOR DETERMINING SCANNING LINE POSITIONS FOR DISPLAY AND HANDLING BY AN INFOGRAPHIC SYSTEM
JP3651943B2 (en) Icon creation method and movie frame creation method
US20220230388A1 (en) Modifying voxel resolutions within three-dimensional representations
FR2458863A1 (en) VIDEO DISPLAY TERMINAL AND MIXED GRAPHIC AND ALPHANUMERIC DISPLAY METHOD
KR100544803B1 (en) Fast processing of image primitives
JP2887255B2 (en) Image synthesis device
CN117952817B (en) Image comparison display method and related device

Legal Events

Date Code Title Description
ST Notification of lapse