U.S. patent number 3,639,736 [Application Number 04/878,018] was granted by the patent office on 1972-02-01 for display windowing by clipping.
Invention is credited to Ivan E. Sutherland.
| United States Patent |
3,639,736 |
| Sutherland |
February 1, 1972 |
DISPLAY WINDOWING BY CLIPPING
Abstract
A computation system is disclosed, as for interpolating lines
with specific application to the selection of a portion of a line
which is to be presented in a fragmentary display. The system as
disclosed eliminates those portions of lines that are contained
within a drawing (as defined in computer storage) which lie outside
a rectangular "window" (defining a portion of the drawing) by
computing vector coordinates for the terminal ends (start and end)
of the visible portions of each such lines. The described
embodiment utilizes a binary system of shifting coordinate
differential data to clip and divide the lines which are defined by
their end points. Repetitive operations attain the desired
definition.
|
Inventors: |
Sutherland; Ivan E. (Salt Lake
City, UT) |
| Family
ID: |
25371201 |
| Appl.
No.: |
04/878,018 |
| Filed: |
November 19, 1969 |
| Current U.S.
Class: |
708/290; 345/620;
345/16; 708/160 |
| Current CPC
Class: |
G09G
1/08 (20130101); G06T 15/10 (20130101) |
| Current International
Class: |
G09G
1/06 (20060101); G09G 1/08 (20060101); G06T
15/10 (20060101); G06f 007/38 () |
| Field of
Search: |
;235/152 ;340/324A
;315/18 |
References Cited
[Referenced By]
U.S. Patent Documents
Primary Examiner: Botz; Eugene G.
Assistant Examiner: Malzahn; David H.
Claims
What is claimed is:
1. A computing system comprising:
a first register means for registering representations of vector
coordinates for a first point;
a second register means for registering representations of vector
coordinates for a second point;
means for computing signals representative of vector coordinates
defining an interim point which is a linear combination of said
first and second points;
means for transferring said signals representative of vector
coordinates defining an interim point to one of said register means
to replace the prior contents of said register means; and
means for controlling said means for transferring, in accordance
with signals, including said signals representative of vector
coordinates of an interim point.
2. A computing system according to claim 1 wherein said means for
controlling said means for transferring said signals representative
of vector coordinates of an interim point includes, a logic circuit
connected to receive signals indicative of the signs of said vector
coordinates to control said means for transferring.
3. A computing system according to claim 1, wherein said vector
coordinates represented in said first and second register means are
signed quantities and the signs thereof are registered in said
first and second registers and wherein said means for computing
signals comprises means for computing signals representative of
vector coordinates, including signs therefor and wherein said means
for controlling said means for transferring is connected to be
controlled by signals representative of the signs of coordinates
including said coordinates of an interim point.
4. A computing system according to claim 3 further including
control means connected to said register means, to cyclically
operate said means for computing whereby to define the coordinate
end points of a line within a predetermined area.
5. A computing system according to claim 3 wherein said vector
coordinates are specified by four values, whereby said first and
second register means each register four coordinates.
6. A computing system according to claim 3 further including means
for registering coordinates defining at least four references to
which said coordinates for said points are referenced.
7. A computing system according to claim 1 wherein said means for
computing includes adder means and digital shift register
means.
8. A process of machine computing, comprising the steps of:
defining vector coordinates for a first point in machine
language;
defining vector coordinates for a second point in machine
language;
machine computing vector coordinates of an interim point which lies
in linear relationship with said first and second points; and
treating said vector coordinates of an interim point as the
coordinates to selectively replace one of said vector coordinates
for a first point or a second point and
repeating said computing step to finally define a pair of
coordinates within predetermined limits.
9. A process according to claim 8 wherein in said steps of defining
said points, four-value coordinates are utilized.
10. A process according to claim 9 wherein said points are defined
and computed in a binary system of numbers.
11. A process according to claim 9 wherein said coordinates are
referenced to four reference levels definitive of a rectangular
configuration.
Description
BACKGROUND AND SUMMARY OF THE INVENTION
When compared with a drawing on paper, a picture that is presented
by a current computer system (as on a cathode-ray tube) is sadly
lacking in resolution. Conventional display systems frequently use
10-bit digital-to-analog converters, providing a display in a
raster of "1024.times. 1024" definition. As a practical matter, the
actual resolution is usually somewhat less, because adjacent spots
or lines tend to overlap. If a display with a larger screen is
employed, to avoid such a problem, and provide a larger picture,
wider lines occur so that the amount of material which can appear
at one time is still rather limited. As the users of large paper
drawings have become accustomed to having a great deal of material
presented at once (with fine definition) by comparison, prior
computer displays have involved a substantial compromise.
It is noteworthy that the limitations of computer presentations are
not primarily in the storage of a drawing within the computer. A
drawing can be presented in computer memory with very high
resolution and precision. For example, if each coordinate is
represented with 16 bits, a picture 65 inches square can be
presented with resolution of about one-thousandth of an inch. If
such a picture could be displayed with its full resolution, it
would be far better than is conventionally provided on paper.
With such resolution available, large and complex pictures are
theoretically possible, which could contain exceedingly fine
detail. Unfortunately, the limitations of display equipment have
prevented the concurrent display of the entire drawing in all its
detail. However, it has been proposed to provide for expansion of
the picture so that any selected part thereof could be examined in
detail. The ability to expand the picture so that fine details are
made visible would partly compensate for the lack of resolution
available in the display unit.
If the picture on the display is enlarged, parts of it may move off
the screen. Consequently, programs are required to enlarge the
drawing and compute not only the location of each part of the
drawing after enlargement, but also determine which parts of the
drawing are to appear. For example, if all of a particular line or
figure is to remain in view, it may simply be enlarged. If a figure
or line lies entirely out of view, it must be eliminated from the
picture. However, as a third possibility, if a figure or line
intersects the edge of the predetermined visible area (window) the
part of it which is visible must be shown and the part which is
outside the visible area must be eliminated.
The process of eliminating those parts or lines of a drawing which
lie outside the observer's field of view has come to be known as
"windowing." The task can be thought of as restricting the display
to that portion of the drawing which is contained within a "window"
view of the drawing. Everything that lies within the window is to
be shown, while everything lying outside the window is to be
eliminated. If the window is made larger, then more material will
be shown; however it will be correspondingly smaller on the display
scope. If, on the contrary, the window is made smaller, the
material still inside it will appear correspondingly enlarged.
Windowing is most difficult for those parts or lines of the drawing
which are partly visible and therefore must be cut. There are two
principle methods employed to accomplish windowing, i.e., blanking
and clipping. If blanking is to be used, the display scope must
itself be blanked electronically whenever it displays information
outside the visible region. Systems which utilize blanking must
provide not only for accurate display within the visible region,
but also involve deflection outside the scope or display area. If a
picture is very much larger than the actual scope area, the
accuracy required of the electronic components involved may make
them inordinately expensive. In any case, because the display must
trace out both the visible and the blanked part of the picture, the
flicker rate will depend upon the complexity of the total drawing
regardless of how little of it is actually displayed.
As indicated above, windowing may also be performed by clipping,
the process of determining which portions of the drawing are within
the window and computing appropriate scope coordinates for such
portions. In clipping systems, the display is given only valid and
visible information on those portions of the drawing which lie
inside the window. For drawings composed of straight lines,
clipping requires only enough arithmetic to compute the
intersection of a line with the edge of a window. Clipping
processes, as previously practiced have required many tests and
complex arithmetic operations including multiplication and
division, to determine whether a line intersects a window edge, and
if so, which one and where. As a consequence, clipping systems have
generally been relatively slow.
Because it is essential to perform windowing (if drawings are to be
enlarged) nearly all sophisticated computer graphic systems do
windowing. In fact, these systems perform considerable windowing
because the entire drawing must be processed each time the picture
that is shown on the scope is moved or changed in scale. Although
various improved display systems have been proposed, windowing has
remained a considerable problem because of the time required for
the operation of prior systems. In general, the present system
employs a process, which may be embodied as a physical apparatus
for expeditiously processing the lines in a picture (line by line)
to effectively accomplish windowing by clipping.
The material to be processed in the system hereof is reduced to
four-dimensional vector coordinates of line ends. That is, each
part of the drawing is made up of line segments specified in terms
of their end coordinates or in terms of their relative positions.
The clipping system accepts information about the lines, processing
them line by line. If a total or complete two-dimensional drawing
is thought of as being written in memory on a large "page" the
coordinates of the page may then be contrasted with the coordinates
of the display scope. The clipping unit as disclosed herein will
then present the scope with only that part of the drawing which is
within the selected window. In that regard, the window is a
predefined rectangle on the drawing, in accordance with the desired
display. Whereas clipping in two dimensions is a fairly familiar
process, clipping for perspective projections frequently presents a
problem. In order to present a perspective picture, clipping must
be performed in three dimensions before doing the perspective
division or scaling. Clipping must precede division because the
unclipped ends of three-dimensional lines may have negative or zero
values along the Z-axis. Division by a negative value of Z will
give an erroneous position on the wrong side of the picture while
division by zero or too small a value of Z will cause an
overflow.
The clipping process as disclosed herein, for three-dimensional
presentations, involves computing the intersection of each line
with four planes, which may be considered as a pyramid of vision
from a viewers eye. As disclosed in detail below, the clipping
system can map the information which falls in the pyramid of vision
or window onto a portion of the scope face. The portion of the
scope within which information is presented is a rectangle aligned
with the axes of the scope. The size and position of the rectangle
or "viewport" is specified by giving the scope the coordinates of
its left, right, bottom and top edges. The system then performs
selective qualification and clipping of the lines by means of a
"midpoint" process which is involved with computing the vector
coordinates midpoint of each line. As described herein, the
midpoints are easily found, as for example, by adding together the
end point vector coordinates and shifting the sum one bit to the
right in a binary register. Consequently, the structural embodiment
hereof implementing the process is able to capitalize on the fact
that additions are much easier to perform than either
multiplications or divisions.
BRIEF DESCRIPTION OF THE DRAWINGS
In the drawings which constitute a part of this specification,
exemplary embodiments demonstrating various objectives and features
hereof are set forth as follows:
FIG. 1 is a diagrammatic illustration of the windowing process as
disclosed herein;
FIG. 2 is a diagrammatic representation of a line within a window
as those elements are defined in the system disclosed herein;
FIG. 3 is a diagrammatic representation of a window which
illustrates the clipping process hereof;
FIG. 4 is a chart illustrative of the operation of a system
hereof;
FIG. 5 is a block diagram of a timing unit for the system disclosed
herein;
FIG. 6 is a block diagram of a system constructed in accordance
with the present invention;
FIG. 7 is a simplified block diagram illustrative of a portion of
the system of FIG. 6;
FIG. 8 is a detailed block diagram of the portion of the system of
FIG. 6;
FIG. 9 is an analytical representation illustrative of one of the
operations performed in the system hereof;
FIG. 10 is a block diagram of another portion of the system of FIG.
6;
FIG. 11 is a block diagram of an alternate form of a portion of the
structure of FIG. 8.
DESCRIPTION OF THE ILLUSTRATIVE EMBODIMENT
Referring initially to FIG. 1, there is shown a plane 10 which is
representative of a two-dimensional drawing that is contained
within the storage capacity of a computer and is digitally defined
in vector coordinates. Within the limitations as considered above,
the entire page could be presented; however, the detail within a
window 12 would be very poor. In accordance with the present
invention, the content of the window 12 may be enlarged as
indicated in a plane 14 for display as a picture in a viewport 16
in considerable detail. The system hereof may be effectively
employed to define those lines 18 (in the viewport 16) which
actually lie within the window 12. Specifically, although the
picture that is defined by the lines 18 may be provided in various
sizes, the problem is that of clipping the lines at the borders or
edges of the window 12 and mapping the information into a viewport
16. In the exemplary system as disclosed herein as an application
hereof, primary novelty resides in the clipping operation to arrive
at the desired lengths for individual picture-component lines
18.
In general, the system hereof treats data which manifests an image
on the basis of individual lines. Such lines are defined by
coordinates for their start and end points, referenced to the edges
of the window, e.g., four dimensions. Specifically, for example,
the start point may be treated as the leftmost end of a line and is
defined by coordinates that are referenced to each of the four
edges of the window. The end point of the line may be similarly
defined. Note that "start" and "end" are arbitrarily applied to the
terminals of the lines.
Referring to FIG. 2, the start point S of a line is shown to lie
within the edges of a window which is defined by vector coordinates
for a top edge WT, a bottom edge WB, a left edge WL, and a right
edge WR. The utilization of the window edges as references to
formulate coordinates for line-end points and start points is an
important feature of the present system. In that regard, it is to
be noted that the system hereof involves four distances to specify
a point, i.e., involves a four-dimensional specification of
line-end points referenced to each of the four window edges.
Pursuing the exemplary identifications indicated above, the
starting point S is located or specified by the distances YTS (the
distance from the top of the window to the start of the line) YBS
(the distance from the start of the line to the bottom of the
window) XLS (the distance from the start of the line to the left
edge of the window) and XRS (the distance from the right edge of
the window to the start of the line.) Somewhat similarly, the end E
of the line is defined by the signed vector-coordinate quantities:
YTE (the distance from the top of the window to the end point of
the line) YBE (the distance from the end of the line to the bottom
of the window) XLE (the distance from the end of the line to the
left edge of the window) and XRE (the distance from the right edge
of the window to the end of the line). This form of four-vector
coordinate representation (four specified distances referenced to
the window edges) is utilized in the process and structure as
described herein in view of considerations that will be clear from
the more detailed description set forth below.
For convenient reference, a consolidated list of designation codes
as employed herein is set forth below identifying each of the
quantities for which a designation is provided.
DESIGNATIONS
S Start of Line E End of Line M Midpoint of Line WT Window top (Y
coordinate) WB Window bottom (Y coordinate) WL Window left edge (X
coordinate) WR Window right edge (X coordinate) YTS Signed distance
from start of line to top of window (Y.sub.s -WT) YBS Signed
distance from start of line to bottom of window (WB-Y.sub.s) XLS
Signed distance from start of line to left edge of window
(WL-X.sub.s) XRS Signed distance from start of line to right edge
of window (X.sub.s -W.sub.R) YTE Signed distance from end of line
to top of window (Y.sub.e -WT) YBE Signed distance from end of line
to bottom of window (WB-Ye) XLE Signed distance from end of line to
left edge of window (WL-Xe) XRE Signed distance from end of line to
right edge of window (Xe-W.sub.R) YTM Signed distance from midpoint
of line to top of window (Y.sub.m -WT) YBM Signed distance from
midpoint of line to bottom of window (WB-Y.sub.m) XLM Signed
distance from midpoint of line to left edge of window (WL-Xm) XRM
Signed distance from midpoint of line to right edge of window
(Xm-WR) ST Sign of YTS, YTM or YTE SB Sign of YBS, YBM or YBE SL
Sign of XLS, XLM, or XLE SR Sign of XRS, XRM or XRE OC.sub.s
(ST.sub.s), (SB.sub.s), (SL.sub.s), (SR.sub.s) OC.sub.m (ST.sub.m),
(SB.sub.m), (SL.sub.m), (SR.sub.m) OC.sub.e (ST.sub.e), (SB.sub.e),
(SL.sub.e), (SR.sub.e) A Control signal for: test each half line
segment for discard and process if not to be discarded. B Control
signal for: discard first segment of line, process second segment.
C Control signal for: process both line segments. D Control signal
for process first line segment, register second for process. E
Control signal for: process first line segment, discard second
segment. F Control signal for: process second line segment and
register first segment for display. G Control signal for: register
entire line for dis- play and terminate process. t.sub.1 Initial
signal preparatory to iterative cycle, trivial test of coordinate
signs for elimination of line as outside the window. t.sub.2 second
phase of process, transfer of coordinate signals to clipping
system. t.sub.3 Clipping process--iterative. t.sub.3 -1 Shift
content of dx and dy registers. t.sub.3 -2 Add content of dx and dy
registers to start point values. t.sub.3 -3 Test sign digits of
addition with end point and start point sign digits. t.sub.3 -4
Transfer coordinate signals for repetition of iterative process. R
Control signal for: discard entire line and terminate process.
__________________________________________________________________________
Subscripts s, m, and e designate start, midpoint or end in
designations ST, SB, SL and SR, e.g., ST.sub.e. Signs are computed
so that "1" represents a position outside the window.
Referring now to FIG. 3, there is shown a window 12, defined by
edges, WT, WR, WB and WL. Additionally, four lines 20, 22, 24 and
25 are shown which typify four general possible cases.
Specifically, the line 20 has both ends (the start point and the
end point) contained within the window 12. As the lines are here
assumed to be straight, it is apparent that any line which starts
and ends in the window is contained within the window. That is, any
straight line having both ends within the window 12 may be
recognized as a line which should be displayed in its entirety
without clipping.
The line 24 is characterized by having one end within the window 12
and the other end removed therefrom. Specifically, as shown, the
start point S of the line 24 lies within the window 12 while the
end point E lies without the window 12. In this case, the clipping
of the unwanted portion of the line 24 (that portion lying outside
the window 12) is effectively accomplished by the system hereof.
Specifically, the system establishes a numerical definition of that
portion of the line which lies within the window 12, e.g., the
section of the line from the start S to its intersection with the
window edge WR, by repeatedly treating half-length segments of the
line.
With regard to the lines 22 and 25, it is apparent that both have
their terminal points outside the window 12; however, the line 25
travels through the window while the line 22 is entirely outside
the window. The lines 22 and 25 must both be processed to determine
any portions which lie inside the window.
In general, the system hereof functions by segmenting the line at
its midpoint. For example, the midpoint M of the line 24 is defined
in rectangular coordinates: YTM, (distance from the top of the
window to the midpoint M of the line); YBM (the distance from the
midpoint of the line to the bottom of the window); XLM (the
distance from the midpoint of the line to the left edge of the
window); and XRM (the distance from the right edge of the window to
the midpoint of the line).
In accordance with the system hereof the midpoint M of the line is
relatively simply located by utilizing the vector coordinate system
as disclosed and subsequently the undesired portion of the line is
discarded. An iterative process is then performed whereby the
remaining half of the line is repeatedly segmented at its midpoint
progressively until only the desired portion of the line is
defined.
Pursuing further preliminary consideration of the operation of the
system hereof to repeatedly segment and discard or register a
portion of the line 24, each decision is made on the basis of the
signs (+ or - ) of the coordinates defining the line. In that
regard, each specified point (start, midpoint and end) is defined
by four quantities (vector coordinates) as explained above. The
points are specified by ordinates, referenced to the top of the
window WT and the bottom of the window WB, as well as abscissas
which are referenced to the left window edge WL and the right
window edge WR. The signs of these quantities determine which
portion of a line is to be discarded or registered. For reference
purposes, the signs of ordinates referenced to the edge WT are
identified as ST which is computed so that ST is a logical "1"
whenever the ordinate is above the edge WT. Similarly, the signs of
the ordinates referenced to the bottom of the window WB are
identified as SB computed so that SB is logical "1" whenever the
point is below the edge WB. The signs of abscissas, referenced to
the window edge WL are identified as SL and the signs of abscissas
referenced to the right edge of the window WR are identified as SR.
The sign digits SL and SR are similarly computed to be logical "1"
whenever the point identified is to the left of WL or the right of
WR respectively, i.e., outside the window. Thus, a negative sign
manifest by a "1" indicates a location that is outside the window
as may be seen from FIG. 3. In the terminology employed, subscripts
s, e and m are utilized to indicate whether the signs of
coordinates are directed to the start, end or midpoint of a
line.
Considering any specific point that lies within the window 12 (FIG.
3) it is apparent that the signs SL, SB, ST and SR each must be
"zero." That is, as shown in FIG. 3, any point lying within the
window 12 must be to the right and above the window edge WL and the
window bottom WB respectively. Somewhat similarly, a point lying
within the window 12 must also be below the window top WT and to
the right of the edge of the window WR. Consequently, utilizing
Boolean representation, it is apparent that if a point lies within
the window 12:
ST+ SB+ SL+ SR=0
Considering line 22 in FIG. 3, note that both the start point S and
the end point E lie to the right of the edge WR. Under such
circumstances, no part of the line 22 can be within the window, and
consequently the line can be rejected. Similarly, if both ends of
any line are above WT, below WB or to the left of WL, the line can
be rejected. Thus, any line for which:
ST.sub.s.sup. . ST.sub.e =1 or,
SB.sub.s.sup. . SB.sub.e =1 or,
SL.sub.s.sup. . SL.sub.e =1 or,
SR.sub.s.sup. . SR.sub.e =1 can be rejected
One class of lines which are not rejected by the above test, is
identified as Case A, in which neither the start, mid nor end point
of the line is in the window. Various examples of the case are
shown in FIG. 4. There are several types of such lines which must
be individually identified and treated examples of which are shown
in the graphic representation of the case as lines 29, 31 and 33.
These subcases of Case A are identified by the sign digits of the
coordinates. Specifically, the digits ST, SB, SL and SR are treated
to determine not only the action for the case A situations, but for
other cases as well as considered in detail below. Again, the
four-digit word composed of these sign digits is identified as OC
(OC= ST, SB, SL, SR).
With regard to lines that are exemplary of situations of Case A,
midpoint processing is required. For example, line 29 is outside
the window, yet it has its midpoint intersected by a quadrature
extension of the upper left corner of the window. That is, one half
section of the line 29 lies fully to the left of the window while
the second half section lies above the window. Both halves of the
line are thus established to be outside the window and should be
rejected. This subcase is identified as indicated in FIG. 4
when:
OC.sub.s =0010 (as a general proposition, has a "1" in a column
matching a "1" in OC.sub.m)
OC.sub.m =1010
OC.sub.e =1000 (as a general proposition, has a "1" in a column
matching a "1" in OC.sub.m)
It will be evident that these equations state that the start point
of the line 29 is outside the window only because it is left of the
left window edge, i.e., SL.sub.s =1. The midpoint is outside the
window because it is both above and to the left of the window,
i.e., ST.sub.m =1 and SL.sub.m =1. The end point is outside the
window only because it is above the top edge of the window, i.e.,
ST.sub.e =1. Thus, the above expressions for OC.sub.s, OC.sub.m and
OC.sub.e indicate both halves of the line 29 can be discarded.
Should the line (Case A) take a form of line 31 (FIG. 4) the first
half can be rejected or for line 33, the second half can be
rejected. The situations exemplified by the line 31 are identified
by the sign digits:
The situation of the line 33, as indicated in FIG. 4, is identified
by the sign digits:
Thus, upon identification of lines as typified by lines 31 and 33
(by considering the sign digits of their coordinates) the procedure
for processing such lines is established. To concisely summarize
the possibilities of Case A (start, end and midpoints all outside
window) the following indicates the procedures.
If: OC.sub.s contains a "1" in a corresponding digit position to a
"1" in OC.sub.m, reject the first half of the line.
If: OC.sub.m contains a "1" in a corresponding digit position to a
"1" in OC.sub.e, reject the last half of the line.
If: both of the above are true, reject the entire line.
It is to be understood that the half of the line which is not
rejected is processed further as another specific case or subcase
by which it is classified in the chart of FIG. 4.
Referring again to FIG. 4, there are shown three columns of binary
numerals respectively representing the sign values (OC.sub.s,
OC.sub.m and OC.sub.e) for the starting points, midpoints and end
points for each of a series of possible lines. These digits
manifest results of the logic expression.
OC= ST, SB, SL, SR
Recalling that the sign digit of each coordinate value is a "1" if
the indicated point is outside the window (FIG. 3) impressions are
developed from the sign digits for sets of coordinates to identify
various cases and control the processing of the lines
accordingly.
In the operation of the system, lines are preliminarily tested on
the basis of the above expressions and rejected if outside the
window. Thus this classification of lines is treated by rejection,
after which the system proceeds to treat more complex situations.
Reference will now be made to FIG. 4 in considering such
situations.
As considered above, FIG. 4 shows a graphic column indicating
various representative lines for each case, with reference to a
rectangle representing the window. The column also indicates the
operations for each of the lines, i.e., portions of the line are
either: rejected, further worked by a repetition of the operation,
or registered for display.
In FIG. 4, the second row (Case B) indicates the situation in which
the start point and the midpoint of the line lie without the
window; however, the end point lies within. Consequently, the
leading, or first half of the line is to be discarded while the
second portion is to be cyclically worked in accordance herewith by
repeating the operation on that half until the portion in the
window is defined. The case is identified when:
OC.sub.s =0100; OC.sub.m =0100 and OC.sub.e =0000.
Case C illustrates the situation in which the midpoint of the line
lies within the window; however, the start and the end points of
the line lie without. In this case, each half segment of the line
requires further cyclic processing as individual line cases. The
values of the sign digits that identify the case are:
OC.sub.s =0100; OC.sub.m =0000 and OC.sub.e =0001.
As illustrated, Case D reveals the situation in which the start of
the line lies outside the window while the midpoint and end point
lie within. In this situation the latter segment of the line is
registered for display, while the leading portion of the line is
further cyclically processed. The case is identified by the sign
digits:
OC.sub.s =0100; OC.sub.m =0000 and OC.sub.e =0000.
Case E illustrates the situation in which the start of the line
lies within the window; however, the midpoint and the end lie
without. Consequently, the first segment of the line is cyclically
processed while the second portion of the line is rejected as it
will not appear in the window. The case is identified by the sign
digits:
OC.sub.s =0000; OC.sub.m =0001 and OC.sub.e =0001.
Case F illustrates the situation in which the start and midpoint of
the line lie within the window while the end point lies without.
Here the first segment of the line is registered for display while
the second segment is further processed by cyclic operation hereof.
Sign indications are:
OC.sub.s =0000; OC.sub.m =0000 and OC.sub.e =0001.
Case G is the situation in which all three points of the line lie
within the window, which case indicates that the cyclic process is
complete, i.e., the line is known to lie fully within the window
and is therefore to be fully displayed. of course in this case, all
the sign digits are "zeros."
For convenience, tabulations of the operations and the cases to be
performed within the system for each of the cases represented in
FIG. 4 is set forth below.
Case Operation
__________________________________________________________________________
OC.sub.s OC.sub.m OC.sub.e (See FIG. 4) A Divides into a plurality
of subcases as considered above to totally eliminate the line, or
define that portion lying within the window. Any Any All "1" "1"
"0's" B Place M in S registers, drop S, leave E in E registers. Any
All All C Leave S in S registers; "1" "0's" "1's" place M in E
registers; store M and E for subsequent processing. Any All All D
Leave S in S registers; "1" "0's "0's" place M in E registers,
register M and E for display. All Any Any E Leave S in S registers;
"0's" "1" "1" place M in E registers; discard E. All All Any F
Place M in S registers; "0's" 37 0's" "1" Leave E in E registers;
register S and M for display. All All All Register S and E for
"0's" "0's" "0's" G display.
__________________________________________________________________________
Prior to considering the logic system in detail, some analysis of
timing operations will be useful with reference to FIG. 5. A timing
unit 21 provides timing signals t.sub.1, t.sub.2, t.sub.3,
t.sub.3-1 , t.sub.3-2 , t.sub. 3-3 and t.sub.3-4 and may comprise a
system of clocked flip-flops as well known in the prior art. For
convenient reference, the operations performed during each of the
timed intervals are summarized in the above chart. The signals each
define an established interval, and the subdivision of the interval
t, affords independent operation for the clipping system. In that
regard, the subdivision of the t.sub. 3 interval repeats until a
line as desired is defined, whereupon the timing cycle returns to
provide t.sub.1. Specifically, a junction gate 23, upon receiving
any case situation (B-F) other than Cases R or G, triggers the unit
21 to recycle the t.sub. 3 interval. On receipt of a signal R or G
(terminal cases) the unit returns to t.sub. 1 to initiate a fresh
line for consideration and clipping.
In view of the above analytical expression of the system hereof,
reference will now be made to FIG. 6 which is a block diagram of
the total system. In FIG. 6, a data processing system 26 is
represented which is merely peripheral to the subject hereof. The
data processing system includes window registers 30, and may take a
wide variety of different forms including various structures as
well known in the prior art, as for example that disclosed in U.S.
Pat. No. 3,274,376. Functionally, the system may convert lines as
otherwise designated to the four measurement, vector coordinate
representation employed herein as described above. Conventional
techniques as well known in the art may be used to accomplish such
transitions.
The data processing system 26 registers the vector coordinates of
lines and is connected through a cable 28 to a preliminary-test
logic system 38. Signals indicative of signs for the start and end
points of a line referenced to the window edges, i.e., signals
ST.sub.s, SB.sub.s, SL.sub.s, SR.sub.s, ST.sub.e, SB.sub.e,
SL.sub.e and SR.sub.e, as registered by the system 26 are thus
supplied through gang gates 36 to the preliminary-test logic system
38. It is to be understood that these signals may be variously
employed as control signals for an operative system in accordance
herewith. In an exemplary manner, certain logic combinations of
these signals are described herein to attain controls, however,
several other possible combinations should be recognized as
possibilities.
The function of the system 38 is to preliminarily identify those
lines that lie without the window (defined by the contents of the
window registers 30 in the data processing system 26. As indicated
above, if both ends of the line are to the right, left, above or
below the window, the entire line is known to be outside the window
and the line can be rejected. More specifically, the lines which
may be rejected, includes those which lie with their start and end
points to: the left of the window edge WL, above the window edge
WT, below the window edge WB or to the right of the window edge WR.
These lines are manifest by the sign digits for the start and end
points of the lines and specifically indicate rejection situations
upon occurrence of each of the following conditions:
ST.sub. s.sup.. ST.sub.e =1
SR.sub.s.sup. . SR.sub.e =1
SB.sub.s.sup. . SB.sub.e =1
SL.sub.s.sup. . SL.sub.e =1
Thus, the above expressions define one portion of the logic network
of the system 38. Upon occurrence of a rejectable line the system
38 provides a pulse to the system 26 via a conductor 44. That is,
the indication of a pulse in conductor 44 is that neither the line
nor any part thereof is to be included in the defined window. Lines
which are entirely contained within the window and therefore do not
require further processing are also recognized by the system 38 and
eliminated from further consideration. Specifically, lines
producing a "0" output from the following logic test are recognized
to lie entirely in the window,
0= ST.sub.s +SB.sub.s +SL.sub.s +SR.sub.s +ST.sub.e +SB.sub.e
+SL.sub.e +SR.sub.s
Thus, the above expression is logically embodied in the system 38
(along with the rejection logic) as well known in the art, to
provide a pulse through a conductor 41 to indicate that the line
under consideration need not be clipped.
The remaining signals (representative of the lines under
consideration or those passing the preliminary test and which may
be fragmentarily in the window) are applied to a gate 48 from the
system 26. The gate 48 is qualified by the negation signals in
conductors 40 during a time interval t.sub. 2 and passes the
line-defining coordinate signals to a clipping system 50. The
signal in line 40 is actually formulated as the combined "and" of
the negation of signals in conductors 41 and 44.
The clipping system 50 which receives the vector coordinate signals
is independently timed and defines the portion of a line which lies
within the window as defined by signals in the window registers 30
of the system 28. In this regard, the interpolation system
described below may also be employed to accomplish scaling
operations on a line; however, for present consideration of the
system, it may be presumed that well-known scaling techniques may
be employed by the data processing system 26 to accomplish the
desired adjustment.
The clipping system having defined portions of lines for display,
it provides that information through: a cable 52, the data
processing system 26 and a cable 54 to the display unit 42.
Recapitulating, as disclosed in detail below, the clipping system
50 performs the operations summarized above and with reference to
FIG. 4, to provide a defined line which lies within the window of
concern.
Preliminary to considering the clipping system 50 in detail, some
further analysis will be made with regard to FIG. 7. Functionally,
the initial operation of the clipping system is to locate the
midpoint of a line under consideration. Various operations may be
performed to accomplish the midpoint in a cyclic or reiterative
process. For example, the coordinates of the end points can be
added and the result divided by "2" to obtain the midpoint. In such
an arrangement the start point coordinates are contained in a set
of registers 56 and added (by a set of adders 60) to the end point
coordinates from the registers 58. For example if a coordinate of
the start point were "-10" and the similarly referenced coordinate
of the end point were "+8;" the midpoint coordinate would be "-1,"
(8- 10/2 )=-1.
Alternatively, the midpoint can be determined by registering the
starting point s of the line in the registers 56 while the length
of the line is contained in the registers 58. By registering this
information in binary form, a single shift in the registers 58
accomplishes a division by two. Subsequently, by adding the
"half-length" components of the line from the shift registers 58 to
the starting point in the registers 56 (all in rectangular vector
coordinates referenced to the window edges) a sum is provided from
an adder 60 which is representative of the midpoint M of the
line.
The details of one exemplary clipping system are set forth in FIG.
8 and will now be considered. It is to be noted initially that the
quantities: XLS, XRS, YBS and YTS are registered (with their
associated signs SL, SR, SB and ST) in the registers 61, 62, 63 and
64 respectively during the time t.sub. 2. Somewhat similarly, and
during the same interval, the quantities: XLE, XRE, YBE and YTE
(with their associated signs SL, SR, SB and ST) are registered
respectively in the registers 65, 66, 67 and 68 respectively.
These quantities are placed in the identified registers through
sets of gates 70 and 72 (components of gang gate 48, FIG. 6) which
are connected to the data processing system 26 (FIG. 6) and which
are qualified during an interval t.sub. 2. Additionally, during the
same interval, a similar set of gates 74 is qualified to pass
rectangular coordinate information definitive of the length of the
line from storage locations in the system 26. Specifically,
information representative of the dx coordinate of the line is
placed in shifting registers 76 and 77 from the system 26 (FIG. 6).
Similar information for the dy component lengths of the line is
placed in shifting registers 78 and 79 through the gates 74.
On completion of the preliminary transfer operations, the contents
of the shift registers 76, 77, 78 and 79 is shifted one digit
position (to lower orders of significance) by application of the
signal t.sub. 3-1 . As a consequence, the dx and dy component
lengths of the line are divided by "2" due to the fact that these
registers are of a binary structure and as well known in the prior
art of binary shift registers. Of course other radix systems could
well be employed in other systems.
Continuing with the sequence of operations, the occurrence of
timing pulse t.sub. 3-2 applied at each of the adders 80, 81, 82
and 83 actuates these adders to combine the contents of the
component half-lengths of the line with the signals indicative of
the starting points of the line. Specifically, the contents of the
register 76 (representing one half the abscissa length of the line)
is applied to the adder 80 along with the contents of the register
61 (XLS). As a consequence, of the addition, the output of the
adder 80 is representative of XLM, i.e., the "X" coordinate
distance from the left edge of the window to the midpoint of the
line. An analytical presentation of this operation is presented by
FIG. 9. Specifically, for example, the quantity -XLS + dx/ 2 may be
seen to develop a quantity +XLM, which is one of the coordinates
definitive of the midpoint of the line. Similar additions involve:
XRS and dx/ 2; YBS and dy//2; and YTS and dy/ 2 to derive the other
edge-referenced coordinates of the midpoint.
The interval of time defined by the signal t.sub. 3-2 may be
subdivided to accomplish various forms of serial or parallel
addition, as well known in the prior art. As a part of the
addition, the sign digits for the midpoint are established for each
of the sums. In general, the sign digit signals (SL, SR, SB and ST)
for the start, mid and end points indicate whether or not any of
these points lie in the window. If none do, the process becomes
that of Case A as described above. Conversely, if one or more of
the points lies in the window, the process becomes one of the Cases
B-G. The sign signals ST, SB, SL and SR (definitive of the line,
start end and midpoints) are applied to the sign logic system 84 as
four-digit binary numbers that indicate whether the points are in
or out of the window and are employed as set forth in FIG. 4.
Specifically, the digits OC define the points to be within the
window by containing all "zeros" and outside the window if they
contain any "1's."
The signal-represented inputs to the circuit 84 logically define
unique situations, e.g., cases, which in turn define the next steps
of the process of clipping or interpolating the line. If all these
signals include at least a single "1," then the start, mid and end
points of the line are all outside the window. The logic
determination (Case A) is made for each point after preliminary
logic combinations, as by an "or" gate (e.g., gate 87-- phantom)
the outputs from which are combined with signals indicative of
"all" "0's" for a point (OC) provided from an exemplary gate 85
(phantom). The detailed logic of the decoding matrix is summarized
in the following chart.
---------------------------------------------------------------------------
LOGIC OF MATRIX 87
oc.sub.s OC.sub.m OC.sub.e Any "1" Any "1" Any "1" Case A Any "1"
Any "1" All "0's" Case B Any "1" All "0's" Any "1" Case C Any "1"
All "0's" All "0's" Case D All "0's" Any "1" Any "1" Case E All
"0's" All "0's" Any "1" Case F All "0's" All "0's" All "0's" Case G
__________________________________________________________________________
thus, the cases are each defined from the outputs of gates as the
gates 85 and 87, by logic combinations with "and" gates as well
known in the prior art to determine each of the cases. As for the
somewhat ambiguous Case A, further logic operations must be
performed. Specifically, as set forth above:
If: OC.sub.s contains a "1" in a corresponding digit position to a
"1" in OC , reject the first half of the line.
If: OC.sub.m contains a "1" in a corresponding digit position to a
"1" in OC.sub.e, reject the last half of the line.
If: both of the above are true, reject the entire line.
If, in the Case A, the entire line is to be discarded, a signal R
goes high to indicate that further processing of the line is
unnecessary. The entire line is then discarded.
In the event of a Case A, in which the first half of the line is to
be discarded a signal B goes high, which commands operations to
perform that discard. Should the logic indicate that the last half
of the line is to be discarded, a signal E is provided (high) to
command that operation. The details of the discard operations are
considered below.
Next, consideration will be given to the Cases B-G which (distinct
from that described above) either the start, end or mid point of
the line falls inside the window.
The Case B is the situation in which the start point and midpoint
of the line are both outside the window while the end point is
inside. Consequently, the first segment of the line may be rejected
and the process repeated with on the second segment of the line. As
a result of the cyclic process, the system will logarithmically
arrive at a definition of a line that intersects the window
edge.
The Case C is a situation in which the midpoint of the line falls
within the window while both the start point and the end point fall
without. As a consequence, each segment must be processed
further.
Case D is the situation in which the start point of the line is
outside the window however both the midpoint and the end point are
within. In this case, the first segment of the line requires
further processing however the latter segment of the line is to be
displayed.
The Case E is somewhat similar to Case B; however, the start point
of the line lies within the window indicating that the first
portion or segment of the line must be processed further while the
last segment may be rejected.
The Case F typifies the situation which is somewhat similar to Case
D wherein two points of the line lie within the window.
Specifically, with regard to Case F, the start point and the
midpoint both lie within the window, defining therebetween a line
segment or defined vector which is to be displayed in its entirety.
A second portion of the line (portion between the midpoint and end
point) must be reprocessed to result in either the Case F or the
Case E.
Finally, the Case G indicates that the process has reached a stage
in which all three points of the line fall within the window with
the result that the line may be returned to the central processing
unit for subsequent display in its entirety.
Various transfer operations determined by the signals B through G
are provided by the decoding matrices 84. As indicated, various
forms of diode and other logic networks are well known in the prior
art for performing the operations set forth in FIG. 4 and the above
table, and which are suitable for use in the matrix 84.
Recapitulating, on completion of each addition and test operation,
one unique high signal R or B through G is provided from one of the
matrices 84 to control a series of gates as shown in FIG. 10 for
appropriately directing the various coordinate signals.
Specifically, a gate 102 receives the signals indicative of
midpoint from the adders (collectively referred to as 104) for a
conditional transfer to the start point registers (collectively
identified as 106). The gate 102 is qualified for such a transfer
by the letter signals B and F. That is, with reference to FIG. 4,
it may be seen that further processing involves the transfer of the
midpoint coordinates to the S registers 106. The gate 102 (as all
the gates in FIG. 10) is a complex gate involving a number of
simple binary gates. Of course, depending upon the specific
implementation of the individual registers as disclosed in FIG. 8,
the gates as depicted in FIG. 10 may take various specific forms as
well known in the prior art. However, as represented, each of the
gates shown in FIG. 10 receive a cable and provide output signals
to another cable in order to accomplish the desired transfer.
A gate 108 is also connected to receive signals from the adders 104
and is qualified by a high state of any one of the individual
letter signals A, C, D or E to transfer the output signals from the
adders 104 to the end point registers (collectively identified as
registers 110).
A gate 112 receives the start point signals from the registers 106
for return to the data processing system 26 on qualification by a
high level for either of the letter signals E or G. Somewhat
similarly, a gate 114 transfers the output of the adders 104 to the
processing system 26 upon being qualified by a high state of any
one of the letter signals C, D or E. In a somewhat similar manner,
a gate 116 is qualified by signals C, D and G, a high value for any
of which results in the passage of the starting point signals from
the registers 106 to the data processing system 26.
Considering a specific exemplary operation of the subsystem of FIG.
10, assume that the operation manifests the situation of Case B
(FIG. 4). Consequently, the first segment of the line is to be
rejected while the second segment of the line is to be iteratively
processed. In the operations performed, the first segment of the
line involves the start point signals contained in the S registers,
which may now be discarded. However, the midpoint of the line from
Case B is to be the start point for the next cycle of iterative
processing. Consequently, the output signals from the adders 104
(FIG. 10) are to be transferred to the S registers 106. The
transfer is accommodated by the signal B qualifying the gate 102 to
transfer the output from the adders 104 to the S- or
start-registers 106. The terminal end point of the line depicted
for Case B (FIG. 4), remains the end point for the second cycle of
processing. Consequently, the content of the end point registers
110 remains stationary.
Pursuing a consideration of other individual cases, in conjunction
with FIGS. 4 and 10, it may be seen that Case C involves a transfer
of the midpoint information to the end point registers 110 and a
storage of the midpoint and end point in the processing system for
subsequent treatment as an independent line. Specifically, upon
occurrence of Case C, the content of the S registers 106 is
preserved. The midpoint signals are transferred from the adders 104
through the gate 108 to the end point registers 110 and the cycle
(t.sub. 3) as described above is repeated. Concurrently, the
content of the end point registers 110 and the midpoint signals
provided from the adders 104 are transferred through the gates 114
and 116 respectively to the processing system.
In the situation of Case D, the second segment of the line is
registered which registration is accomplished by qualification of
the gates 114 and 116, by the signal D to return the second segment
of the line to the processing system. In order to work the first
segment of the line, the content of the registers 106 remains
within those registers while the midpoint information from the
adders 104 is transferred to the gate 108 to the end point
registers 110.
In the situation of the Case E, the end point signals may be
discarded, the start point signals remain in the registers 106 and
the newly developed midpoint signals from the adders 104 are
transferred through the gate 108 to the registers E to repeat the
cyclic process.
Case F involves registration of the first segment of the line and
working or processing the second segment. Consequently, the start
point signals along with the midpoint signals are transferred along
through the gates 112 and 114 for registration by the processing
system while the output from the adders 104 is transferred through
the gate 102 to establish new start point signals in the register
106. Finally, the Case G results in a qualification of the gates
112 and 116 to transfer the content of the start point registers
and the end point registers 110 to the processing system through
the gates 112 and 116.
The system as described above in detail, develops the coordinate
midpoint information by adding one half of the line length to the
coordinates of a terminal point. As suggested above, the midpoint
coordinates can also be formulated by adding the individual
coordinates of the terminals (start and end) and halving the result
by a shifting operation. Specifically, for example, one coordinate
stage of such a system is shown in FIG. 11. A register 161 serves
to register the value XLS (with the sign digit SLS) in a manner
similar to the register 61 of FIG. 8. The register 161 is connected
to an adder 181, along with a register 188 which contains an end
point coordinate value XLE. The output from the adder 181 is
provided through a shift unit 176 to accomplish the midpoint
coordinate value.
Referring to FIG. 9, it may be seen that by adding the quantities
XLS and XLE, and shifting the sum to accomplish a division by "2"
the value of XLM is provided. It is therefore apparent that the
individual coordinate stages of the system of FIG. 8 could be
replaced by stages as described with reference to FIG. 11. Thus,
two of the possible structures for obtaining the midpoint
coordinate have been disclosed herein.
With regard to variations of the system as disclosed herein, it is
to be noted that although a binary system has been considered in
detail, to attain midpoint coordinates, other number systems may be
used. For example, a trinary system would trisect the vector.
From the above, it may also be seen that when the clipping process
is complete, the working registers contain signals definitive of
the ends of the visible segment of a line in window-edge
coordinates. These coordinates may require conversion to an
appropriate scope coordinate in order to position the line properly
on the face of a cathode-ray tube for example. The sum of pairs of
window-edge coordinates may be used to find the position of the
point relative to the center of the window, indicated as WC.
For example:
(X-WL)+X-WR)=2X-(WL+WR)=2(X-WCX)
In two dimensions, the difference of pairs of window-edge
coordinates can be used to find the size of the window.
Specifically, for example,
(X-WL)-(X-WR)=(WR-WL)=2(WS)
(indicating the window size). In three dimensions, the difference
can be used to find the depth of information, Z for a perspective
division. Specifically:
[X-(-Z)]-[X-(+Z)]=2(z)
Thus in both two- and three-dimensional situations, the clipping
divider divides the sums of pairs of window-edge coordinates by
their differences.
The transformation employed in the transition form the clipped end
points to the desired scope coordinates also involves the size and
position of the view port. The transformations involve both the
divisions by the window size or Z coordinates and multiplication by
the view port size. The division and multiplication may be
performed simultaneously by pairs of coupled adders. For example,
the individual adders in the clipping unit may be coupled together
to perform such a function. One adder with its associated shifting
and working register may be used, for example, as an ordinary
scaler divider. The other adder with its working and shifting
register may provide for the multiplication. Instead of recording
the bits of the quotient as they are generated by the divider, the
bits are used immediately to control addition of the multiplicand,
to the accumulating product in the multiplier. If the signed test
in the scaler division is successful, the output of both adders
replaces their respective working registers. This simultaneously
provides a new dividend for the next trial and a new partial
product closer to the answer.
The system hereof can be utilized in cooperation with a matrix
multiplier to present perspective views of three-dimensional
objects tumbling in real time. The combination can also be employed
to display curves. In such a combination the matrix multiplier is
as a separate multiplier module for each column of the matrix. Each
module contains an accumulator, a partial product register, storage
for the four matrix elements in that column and the multiplication
logic. The entries of the role of the matrix serves simultaneously
as four separate multiplicands. An individual component of the
incoming rector serves as the common multiplier. The four
multiplications for a single row are thus performed simultaneously.
For additional speed, the bits of the multiplier are examined four
at a time rather than individually to control multiple-input adding
arrays.
In the display of curves, the matrix multiplier and the divider can
be used for generating a wide variety. For example, a collection of
vectors may be multiplied by a particular four of a four matrix and
the resulting vectors will be cubic polynominals where the
coefficients of the polynominals are the entries of the matrix.
The system hereof also has applications to solve the problem of
hidden lines in a visual presentation. This technique involves
breaking a picture down into successfully smaller "windows" within
which solid objects are examined. If there is nothing of interest
within a particular window, it need not be further subdivided. If,
however, the picture within a certain window contains a very
complex presentation, that window will be subdivided for more
detailed examination. The basic operation is to detect whether any
edge of a polygon passes through the window. If no edge of a
polygon passes through the window, the system detects whether the
polygon surrounds the window or lies within the window. The
clipping divider described above does this basic operation of
detecting whether an edge passes through the window very quickly.
In many cases the line can be trivially rejected as outside the
window after only a short interval of time. If the window is very
large, a midpoint of the line may fall within the window after only
three or four cyclic operations.
From the above, it will be apparent that the system hereof has
certain specific applications in addition to those set forth in
detail above.
* * * * *