U.S. patent number 3,675,230 [Application Number 04/845,394] was granted by the patent office on 1972-07-04 for apparatus for decoding graphic-display information.
This patent grant is currently assigned to National Research Development Corporation. Invention is credited to Michael Lloyd Victor Pitteway.
| United States Patent |
3,675,230 |
| Pitteway |
July 4, 1972 |
APPARATUS FOR DECODING GRAPHIC-DISPLAY INFORMATION
Abstract
Apparatus is described for decoding information specifying a
display for display means, such as a cathode-ray tube or an
incremental plotter. The information is received in a form which
specifies a number of curves making up the display in a small
number of "bits". Each curve is specified by the origin of the
curve, one of a number of sectors of the display area in which the
curve falls each sector bounded by straight lines radiating from
the origin point of the curve, the direction of a series of
elemental lines each connected the proceeding and making up the
curve, and the number of such lines in the curve. The apparatus
decodes this information, using logic circuits, to provide a signal
suitable for the display means.
|
Inventors: |
Pitteway; Michael Lloyd Victor
(Knole Hill, EN) |
|
Assignee: |
National Research Development
Corporation (London, EN)
|
| Family
ID: |
10385648 |
| Appl.
No.: |
04/845,394 |
| Filed: |
July 28, 1969 |
Foreign Application Priority Data
|
|
|
|
|
| Jul 29, 1968 [GB] |
|
|
36,172/68 |
|
| Current U.S.
Class: |
345/27;
315/367 |
| Current CPC
Class: |
G09G
1/10 (20130101) |
| Current International
Class: |
G09G
1/06 (20060101); G09G 1/10 (20060101); G06f
003/14 () |
| Field of
Search: |
;340/324.1 |
References Cited
[Referenced By]
U.S. Patent Documents
Primary Examiner: Trafton; David L.
Claims
I claim:
1. Apparatus for decoding information signals specifying a curve
for display and having first and second item information signals,
the first item signal specifying in which of a plurality of sectors
each bounded by a straight line radiating from the starting point
of the curve of a display area the curve is to be displayed and the
second item signal specifying the direction within the specified
sector of each of a series of elemental straight lines which
connected together approximate the curve the apparatus including
decoding means responsive to said second item signal for providing
a series of output signals specifying elemental lines in the
directions specified by said second item signal and sector
selection means responsive to said first item signal for providing
an output signal indicating the sector specified by the said first
item signal and display means for receiving the output signals from
said decoding means and sector selection means and producing a
visual reproduction of the curve approximation.
2. Apparatus according to claim 1 wherein the said sector-selection
means has a plurality of different electrical states, one
associated with each sector and individual thereto, and when in one
of its states provides output signals, on receipt of the first item
of information, which are limited to specifying elemental lines in
the sector associated with that state, and including control means
coupled to the sector-selection means to set the sector-selection
means to that one of its states associated with the sector
specified by the said first item of information.
3. Apparatus according to claim 2 for decoding information
specifying a curve for display by first and second items of
information, the first item specifying one of eight sectors by
first, second and third information "bits", and the second item
specifying one of two directions for each elemental line by a
single information bit, wherein the said sector-selection means
includes first and second logic means, the said first logic means
providing a signal for the said second logic means if the said
single bit is "one" or the said first bit is "zero", and the second
logic means providing a signal indicating that the direction of the
said elemental line, specified by the single bit, has a component
in one of two opposite directions as determined by the said second
bit, and third and fourth logic means, the third logic means
providing a signal for fourth logic means if the said single bit is
"one" or the said first bit is "one", the fourth logic means
providing a signal indicating that the direction of the said
elemental line has a component in one of two further opposite
directions, orthogonal to the said other directions, as determined
by the said third bit.
4. Apparatus according to claim 2 for decoding information
specifying a curve for display by first, second and third items of
information, the third item specifying the co-ordinates of the
origin of the curve which is also the point of intersection of the
sectors, the apparatus including first and second co-ordinate
stores adapted to be coupled to display means for providing
displays by moving writing means over a display area, the first and
second stores, in operation, controlling the position of the
writing means on the display area, read means for entering the
third item into the stores, and means for changing the contents of
the stores in accordance with the output signals of the
sector-selection means.
5. Apparatus according to claim 4 for decoding information
specifying a display made up of curves in a plurality of sectors of
the display area by groups of the items of information and a
further item in each group specifying the number of elemental lines
in each curve, the apparatus including a third store adapted to
receive the further item of information, and means for reducing the
content of the third store by one every time information for an
elemental line is provided by the sector-selection means, the said
read means entering the co-ordinates of the origin of the
subsequent curve in the display into the co-ordinate stores when
the content of the third store reaches zero.
6. Apparatus according to claim 5 wherein the read means is
responsive to another item of information to leave the contents of
the co-ordinate stores unchanged if the co-ordinates of the last
point in a curve displayed are the same as the co-ordinates of the
first point in a subsequent curve.
7. Apparatus for displaying curves from coded information including
apparatus according to claim 4, two digital-to-analogue converters,
each individually coupled to one of the said co-ordinate stores,
and display means selected from the group comprising a cathode-ray
tube for writing means in the form of an electron beam, and an
incremental plotter having writing means in the form of a pen, the
position of the writing means being controlled in orthogonal
directions by the output signals of the said digital-to-analogue
converters.
Description
The present invention relates to apparatus adapted to be coupled to
a display device to decode information specifying what is to be
displayed. The apparatus is particularly, but not exclusively,
useful in displaying graphical data or curves, and can be used to
generate alphanumeric data.
In providing a technique for coding information for graphical
displays, one important objective is to use as few bits as possible
since then the graphic data files can be reduced in size, telephone
line transmission times can be reduced, and smaller stores can be
used for cyclically refreshed displays.
A line drawing can be coded for display by a raster scan of the
type used in television transmissions. Each permitted point on the
display is either light or dark and requires one binary bit of
information, e.g., 0 for dark and 1 for light, so that over a
million bits are required for a display screen permitting 1,024
values each for cartesian coordinate X and Y.
On such a display, a typical line drawing might consist of 100
straight or curved lines averaging 100 steps each, i.e., each about
a tenth of the way across the screen. Each of these 10,000 points
can be described by 20 binary bits, 10 for X and 10 for Y, so that
the drawings can be described in 200,000 bits this way.
A line drawing displayed in this way will require nearly all 0 bits
with only an occasional 1. Each 0 sequence can be represented by a
count, so that this particular line drawing can be described by
10,000 integers. Most of these integers will be less than 1023,
exceptions being the very first, and possibly horizontal breaks
where there may be some unbroken dark lines. These exceptions can
be handled by a suitable convention, e.g., 1023 can be reserved to
indicate a continued 0 sequence of 1022, so that for example 3926
is coded as 1023 1023 1023 860, and 1023 is coded as 1022 1. The
picture can then be described in these terms in just over 100,000
bits.
Another coding technique is that used when a computer drives an
incremental plotter. This technique often uses 5 bits per step. A 1
in one bit position is used to drive the pen one step in the
positive X direction, a 1 in another position drives the pen in the
negative X direction, and 1's in third and fourth positions drive
the pen in positive Y and negative Y directions, respectively; two
appropriate bits set to 1 indicate a diagonal move. The fifth bit
set to 1 indicates that the move requires the pen to be held on to
the paper, so that 0 allows the pen to be positioned to start a new
line. If the drawing containing 100 lines averaging 100 steps each
involves 10 gaps also averaging 100 steps each, 55,000 bits are
sufficient to describe the whole picture, including 5,000 bits for
pen positioning.
If straight lines only are required, another technique can be used
in which a drawing can be very efficiently coded by giving the X
and Y coordinates of the starting point and end point of each line.
Each coordinate required 10 bits, so 4,000 bits are sufficient to
code a drawing with 100 straight lines. This technique known as
"vector generation" can be achieved in practice using either a
digital hardware implementation of a straight line generating
algorithm, or analogue techniques.
With analogue techniques, each straight line is generated through a
linear variation of the voltages which are then applied to the
deflecting system of an oscilloscope.
If curved lines are required, however, the vector generator is much
less efficient. Typically, 40 straight lines are required for a
reasonable fit to a circle. It is relatively easy to add complete
circles to the repertoire of a vector generator, but this is
somewhat restrictive, and an arc generator for a more general class
of curves is more useful. Typically 70 bits are required to
describe a given curved segment e.g., two 10 bit numbers for the
starting point, two for the end point, a starting gradient, a
finishing gradient and some curvature parameter. Conic section
arcs, for example, require seven numbers for their determination; a
complete ellipse or hyperbole has five degrees of freedom, and two
more are required to specify starting and end points. Thus 7,000
bits are required to describe a drawing with 100 simple curved
segments.
This technique for coding curved segments has a number of
disadvantages. If more complicated mathematical curves are
required, these must be described in terms of conic arcs or other
shapes appropriate to a particular type of display. This means an
additional load on a central computer supplying the display
information, and possibly complicated programming to provide the
information.
If a buffer in which the display information is stored, is formed
from a delay line, drum, magnetic tape loop or some other
recirculating device, the successive 70 bit patterns describing
each curve to be refreshed will appear on a regular clocked basis.
The curve generating hardware requires more time to generate a long
arc than a short arc. If a short arc is called for, the curve
generator must wait until the next 70 bit pattern has become
available from the buffer. If a long arc is called for, it may be
necessary to waste space in the buffer to allow this curve to be
completed before the next is initiated. In accommodating the timing
requirements of a recirculating buffer, the wasted capacity could
easily exceed the additional bit requirements of the compressed
incremental form.
A further disadvantage is that the curve generating system is less
efficient for curves requiring short arcs or fine detail, for
example, for some lettering. 70 bits are required even for a short
curve involving just a few incremental steps, 10 say, compared with
40 or 50 in ordinary incremental form (assuming that no pen
positioning is required), and 22 in a compressed incremental
form.
The present invention springs from the realization that graphical
display information can usually be encoded with considerably fewer
bits than have been used before, and that the information can be
decoded using simple apparatus devised for the purpose.
According to the present invention, therefore, there is provided
apparatus for decoding information specifying a curve for display
by first and second items of information, the first item specifying
in which of a plurality of sectors of a display area the curve is
to be displayed and the second item specifying a series of
elemental straight lines making up the curve by the variable
directions of the lines within the specified sector, the apparatus
including sector-selection means capable of providing a series of
output signals specifying elemental lines in any of the directions
in any of the sectors, but which, on receipt of the first item of
information, provides output signals specifying a series of
elemental lines in the sector specified by the first item, the
direction of the lines, being as specified by the second item.
In the preceding paragraph "curve" includes straight lines, in
addition to true curves. The number of sectors is conveniently
eight or 16, but other numbers can be used.
A third item of information may also be used in specifying the
curve by specifying the co-ordinates of the origin of the curve,
that is the point of intersection of the sectors. The apparatus may
then include first and second co-ordinate stores adapted to be
coupled to display means for providing displays by moving writing
means over a display area, the first and second stores, in
operation, controlling the position of the writing means on the
display area, read means for entering the third item into the
stores, and means for changing the contents of the stores in
accordance with the output signals of the sector-selection
means.
If, as will normally be the case, desired displays are likely to be
made up of a number of curves in different sectors, it is
preferable to provide a third store in which a further item of
information the desired number of moves for one curve can be
stored. This number can then be counted down to provide an
indication that one curve has been displayed and that subsequent
information relates to a further curve. Read means, coupled to the
first and second stores will then usually be required to clear
these stores and enter the co-ordinates of one end of the
subsequent curve. The read means also allows the co-ordinates of
the start of a display to be entered. If a new curve is to start
where the preceding curve finished, the read means may include
means responsive to the incoming information to allow the contents
of the co-ordinate stores to remain unaltered.
The code used preferably comprises a first bit to initiate
reproduction of the display, first and second groups of bits (that
is the third item of information) specifying the position of one
end of the first curve to be displayed, a third group of bits (that
is the further item) specifying the number of moves in the first
curve, a fourth group of bits (that is the first item) specifying
the sector in which the curve is to be drawn, and a fifth group of
bits (that is the second item) specifying what the moves are to be.
An additional bit may be provided to indicate whether or not the
subsequent curve is to start at the end of the first curve. The
second and subsequent curves are coded in the same way as the
first, except that where a subsequent curve starts at the end of a
preceding curve the first bit and first two groups of bits are
omitted.
Using the above code the number of bits required for a typical
drawing is reduced to about one-third compared with the technique
which uses individual incremental moves. In addition, the arc
generator mentioned above requires more hardware, for example a
complete adder and large registers, to obtain sufficient resolution
between different thin ellipses.
The writing means may be the electron beam of a cathode-ray tube,
the display area then being the screen of the tube. Another example
of the writing means is the pen of an incremental plotter, where
the display area is the paper over which the pen moves.
If a cathode-ray tube is used, the display may be altered using a
light pen provided the tube is not a long persistance tube, and the
display is refreshed periodically. The information for the display
is then best held in a cyclic store, such as a delay line, closed
loop magnetic or paper tape, or an integrated-circuit shift
register, rather than a storage tube. The position of the light pen
in relation to the display can then be obtained by determining when
the display illuminates the tip of the pen.
An embodiment of the invention will now be described, by way of
example, with reference to the accompanying drawings in which:
FIG. 1 is a block diagram of a display system using decoding
apparatus according to the present invention,
FIG. 2 is a diagram showing how a curve to be displayed is formed
move by move,
FIG. 3 shows octants in which curves can be formed,
FIG. 4 shows how a letter `S` could be generated using apparatus
according to the invention,
FIG. 5 is a flow chart for decoding display information, and
FIG. 6 is a schematic diagram of apparatus according to the
invention.
In FIG. 1 an overall system for providing a display is shown.
Information for the display is first encoded, using the system
described below, and then deposited in a file 10. The information
for a display may already be obtainable for plotting on an
incremental plotter by means of an available programme, and if so,
a further programme can be used to provide the encoded information.
When a display is required, the encoded information for all the
curves in the display is sent, for example, by telephone line to a
recycling buffer-store 11, which may, as has been mentioned, be a
delay line.
Logic hardware 12, which will be described in more detail below,
decodes the information and presents its digital output to a
digital-to-analogue converter 13 coupled to a cathode-ray tube 14,
on which the required display appears.
If a display area is divided into a number of elements it may be
sufficient to reproduce a curve 16 of FIG. 2 by the irregular line
17 made up of elemental lines joining some of the elements. The
line 17 is produced by starting at a point 18 which is specified as
one end of the curve 16 and progressing by increments along
elemental lines which are either horizontal or at 45.degree.
between elements, such as the elements 19, 20 and 21 of the display
area. Since only two elemental lines are used these can be coded by
two binary characters 0 and 1.
The system of FIG. 2 for reproducing curves is satisfactory only so
long as the gradient of the curve is between 0.degree. and
45.degree.. This problem is overcome by specifying in which of a
number of octants a curve occurs. These octants, numbered 0 to 7
are shown in FIG. 3. The elemental lines for each curve in a
display are preceded by three bits specifying a selected octant,
and when the display moves out of that octant when, for example, a
gradient changes from less than 45.degree. to more than 45.degree.,
a new octant is specified. Hence it is also necessary to specify
how many elemental lines there are in a given octant.
Where a display has to be more accurate than can be obtained using
the above procedure, the angular position of a curve can be
specified in one or more sectors, for example, 16 sectors. Less
sectors can also be used if a display is made up entirely of
horizontal and vertical lines, or can be sufficiently accurately
represented by such lines.
An example of the various groups of bits in a complete code for one
curve is a follows:
an initial bit, known as the "beam on" bit, to signify that curve
information follows,
10 bits specifying the X coordinate of the beginning of the
curve,
10 bits specifying the Y coordinate of the beginning of the
curve,
eight bits specifying the number of elemental lines in the octant
in which the curve occurs,
three bits specifying the octant,
a number of bits equal to the number of elemental lines, specifying
the lines, and
one bit signifying whether the next curve starts at the end of the
curve specified.
The coded information for the next curve then follows.
In describing the invention further the following notation is
used:
X and Y represent the coordinates of the start of the curve,
N represents the number of elemental lines,
w, x and y represent the three bits specifying the selected octant
respectively,
m represents the bit specifying the direction of each elemental
line, and
c represents the last bit specifying whether or not the next curve
starts where the last finished.
By way of example the code for the line 17 of FIG. 2 without the X,
Y and c bits is as follows:
000000100110010010010101101111 The first three bits, w, x and y,
are all zero indicating movement in the octant marked 0 in FIG. 3.
The next eight bits are coded 00010011, so N = 19 and there are 19
individual elemental line bits, m.
Another example is the letter S of FIG. 4 which starts with a 1 for
"beam on", then 10 bits for X and 10 bits for Y to locate the
lower, left hand end of the letter as a starting point. The coding
continues:
N w x y lines (m) 00001100 0 0 1 110101001000 1 00001001 0 0 0
000100111 1 00001000 1 0 0 11010100 1 00001000 1 1 0 00100111 1
00010000 0 1 0 1101001001001011 1 00000101 1 1 0 11010 1 00000100 1
0 0 1011 1 00000110 0 0 0 110100 1 00001010 0 0 1 0001001101
The bits have been set out for convenience in tabular form, but
they are not spaced in the buffer store. The left hand column shows
the continuation bit c, and the coding must include at least one
terminating zero before the next "beam on" bit.
The logic hardware 12, of FIG. 1, which is an embodiment of the
present invention, and decodes information encoded in the described
way, will now be described.
The requirements for the logic hardware 12 can be obtained from the
flow chart of FIG. 5, and any apparatus which functions according
to the chart can be used for the hardware 12. In describing the
flow chart reference numerals refer to operations.
Firstly, there is a wait, 25, until a "beam on" bit is received,
and the X and Y bits are loaded, 26. Next the w, x, y and N bits
are loaded, 27, and then the beam of the cathode-ray display tube
is switched on, 28. The first m bit is read, 29, and this bit and
the w bit are tested, 30, and if m = 1 or w = 0 the left branch is
taken, and if m = 1 or w = 1 the right branch is taken, that is,
either or both branches may be taken. The bits x and y are tested,
31 and 32 giving four possibilities:
if x = 0, the X coordinate is increased by one, 33,
if x = 1, the X coordinate is decreased by one, 34,
if y = 0, the Y coordinate is increased by one, 35, and
if y = 1, the Y coordinate is decreased by one, 36.
Next, N is reduced by one, 37, and the result tested, 38, is to
discover if N is zero. If not, the next m bit is read 29, but if N
is zero then the beam is switched off, 39, and the continuation bit
C is read, 40, and tested, 41. If equal to 1, the bits w, x, y and
N are loaded, 27, again, and if not a wait, 25, until a further
"beam on" bit occurs.
The layout of that part of the flow chart having the operations 30
to 36, is possible only through the numbering of the octants of
FIG. 3 in the order shown, although of course other, less
convenient, flow charts could be devised if the octants of FIG. 3
were numbered in other ways. In FIG. 3 a "1" in the least
significant position y indicates a negative Y direction, that is
octants 1, 3, 5 or 7. A "1" in the middle position x indicates a
negative X direction, that is octants 2, 3, 6 or 7. A "1" in the
most significant position w indicates that Y movements are in the
quadrants 4, 5, 6 or 7.
In FIG. 6 encoded display information from the buffer store 11 is
clocked into an 11-stage shift register 45 as clock pulses are
received from a clock pulse source 44. The output of the shift
register 45 is connected by way of groups of AND gates, 46 to 49,
to a Y register 50, an X register 51, an octant register 52, and an
N register 53, respectively.
The AND gates of each group are coupled to the register 45 to allow
the contents of its stages to be read in parallel into the
appropriate one of the registers 50 to 53. Thus there are 10 gates
in the groups 46 and 47, three in the group 48 and eight in the
group 49. In each group the gates are coupled to the more
significant stages of the register 45.
The registers 50 and 51 are so coupled to the digital to analogue
converter 13 so that the numbers contained by these registers are
applied one at a time as digital input signals to the
converter.
The least significant stage of the shift register 45 is connected
through an AND gate 54 to a store 55.
In order to simplify FIG. 6, some of the outputs of the registers
and the stores shown have been designated with the reference
numeral of the store or register with a bar over the numeral. This
signifies that the output so designated is inverted with respect to
the contents of the store or register. For example, the output 55
of the store 55 is zero when the store holds the bit 1, and vice
versa.
The register 53 is set to contain the number 22 in binary digits by
the store 55 when this store is in its reset state. All the stages
of the register 53, which acts as a sequencer, are coupled in
parallel to an AND gate 57 to detect when number N has been counted
down to zero. The output of the AND gate 57 is coupled to store 58,
which has one output 58 connected to gates 46 to 49, and another to
a store 59. A further output from the store 58 is coupled by way of
a "two-bit" delay circuit 60 to AND gates 61 and 62 which determine
whether the X and Y coordinates at the end of a curve are changed
or not.
The inputs of AND gates 70 to 75 are connected to the octant
register 52 and the shift register 45. Together with invertors 76
and 77 these AND gates change the contents of the X and Y registers
50 and 52 to which the outputs of the gates 72 to 75 are
connected.
In operation, when the display of one curve has been finished, the
apparatus of FIG. 6 waits until a "beam on" bit, a "1", is clocked
into the register 45. When this bit reaches the right hand end of
the register 45, the store 55 is set making the register 53 ready
to be clocked down by the next clock pulse. The following 10 stages
of the register 45 now hold the X coordinate. The next clock pulse
counts the register 53 down to 21, and a decode AND gate 64 opens
the AND gates in the group 46, loading the register 51 (the store
58 is reset at this time enabling the groups of gates 46 to
49).
The Y coordinate is now clocked into the register 45 and when the
count in the register 53 reaches 11 a decoder-AND gate 65 is
enabled allowing the Y coordinate to be read into the register 50.
Similarly a decode gate 66 is enabled and the octant register 52 is
loaded when the count in the register 53 reaches eight, that is,
three clock pulses later when the three octant bits are in the
register 45.
When the register 53 reaches zero, the state of the store 58
changes setting the store 59, and enabling the group of gates 49.
The eight bits giving the number of increments N now in the
register 45 is transferred to the register 53, and the cathode-ray
tube beam is switched on.
The store 58 requires two pulses to reset, so it remains set until
the register 53 again reaches zero.
The first increment bit now reaches the gates 70 and 71, which
apply their outputs through the inverters 76 and 77 to the gates 72
to 75. Since AND gate 78 is now open the gates 72 to 75 change the
contents of the registers 50 and 52 according to the x and y bits
and the outputs of the inverters 76 and 77, as follows:
Gate 72 open, decrease Y,
Gate 73 open, increase Y,
Gate 74 open, increase X, and
Gate 75 open, decrease X.
The operation of the gates 70 to 75 and the inverters 76 and 77 can
be followed by inspecting the following table:
OUTPUT OF GATES
Increase Decrease Increase X Decrease X Y Y w x y m 74 75 73 72 0 0
0 1 0 0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1 1 0
1 0 1 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 0 1 1
1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1
For example, if the octant is that numbered zero in FIG. 3, the
bits w, x and y will be zero, and if the increment bit is also 0,
the gate 70 has "1" on both inputs, and the gate 71 has a "1" and a
"0". The output of the inverter 76 is then "0", and that of the
inverter 77 is "1" .
At the time of a clock pulse only the gate 74 has a "1" on all its
inputs and the content of the X register 51 is increased.
When all the elemental lines in a curve have been completed the
register 53 again reaches zero, and the store 58 changes state
closing the gate 78. After a two-bit delay one of the gates 61 or
62 opens, these gates being coupled to the inverted output and the
output respectively of that stage of the register 45 now containing
the continuation bit c. If c is a "1" the register 53 is set to ten
and the circuit is ready to receive the three octant bits
specifying a new octant, but if c is an "0", the register 53 is set
to 22 and is ready to receive new X and Y co-ordinates. The
sequence of operations then repeats from the appropriate point
displaying the next curve.
It will be appreciated that the block diagram of FIG. 6 is to a
great extent dependent on the code in which information is
received. Thus the invention can, of course, be put into practice
using apparatus having other block diagrams and which receives
information in the same or different code. For example the register
52 and the gates 70 to 75 will be replaced if a code using a
different number of sectors is employed. In another example a
further "bit" may be added to the code indicating that standard
characters or curves are to be displayed. The block diagram of the
apparatus then includes means responsive to the further "bit" to
activate means for generating standard characters or curves.
* * * * *