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× 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 s -WT) YBS Signed distance from start of line to bottom of window (WB-Y s ) XLS Signed distance from start of line to left edge of window (WL-X s ) XRS Signed distance from start of line to right edge of window (X s -W R ) YTE Signed distance from end of line to top of window (Y 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 R ) YTM Signed distance from midpoint of line to top of window (Y m -WT) YBM Signed distance from midpoint of line to bottom of window (WB-Y 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 s (ST s ), (SB s ), (SL s ), (SR s ) OC m (ST m ), (SB m ), (SL m ), (SR m ) OC e (ST e ), (SB e ), (SL e ), (SR 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 1 Initial signal preparatory to iterative cycle, trivial test of coordinate signs for elimination of line as outside the window. t 2 second phase of process, transfer of coordinate signals to clipping system. t 3 Clipping process--iterative. t 3 -1 Shift content of dx and dy registers. t 3 -2 Add content of dx and dy registers to start point values. t 3 -3 Test sign digits of addition with end point and start point sign digits. t 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 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 s . ST e =1 or,
SB s . SB e =1 or,
SL s . SL e =1 or,
SR s . SR 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 s =0010 (as a general proposition, has a "1" in a column matching a "1" in OC m )
OC m =1010
OC e =1000 (as a general proposition, has a "1" in a column matching a "1" in OC 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 s =1. The midpoint is outside the window because it is both above and to the left of the window, i.e., ST m =1 and SL m =1. The end point is outside the window only because it is above the top edge of the window, i.e., ST e =1. Thus, the above expressions for OC s , OC m and OC 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 s contains a "1" in a corresponding digit position to a "1" in OC m , reject the first half of the line.
If: OC m contains a "1" in a corresponding digit position to a "1" in OC 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 s , OC m and OC 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 s =0100; OC m =0100 and OC 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 s =0100; OC m =0000 and OC 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 s =0100; OC m =0000 and OC 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 s =0000; OC m =0001 and OC 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 s =0000; OC m =0000 and OC 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 s OC m OC 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 1 , t 2 , t 3 , t 3 -1 , t 3 -2 , t 3-3 and t 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 3 interval repeats until a line as desired is defined, whereupon the timing cycle returns to provide t 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 3 interval. On receipt of a signal R or G (terminal cases) the unit returns to t 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 s , SB s , SL s , SR s , ST e , SB e , SL e and SR 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 s . ST e =1
SR s . SR e =1
SB s . SB e =1
SL s . SL 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 s +SB s +SL s +SR s +ST e +SB e +SL e +SR 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 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 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 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 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 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 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 s OC m OC 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 s contains a "1" in a corresponding digit position to a "1" in OC , reject the first half of the line.
If: OC m contains a "1" in a corresponding digit position to a "1" in OC 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 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.