System For Generating Orthogonal Control Signals To Produce Curvilinear Motion

Villalobos , et al. May 7, 1

Patent Grant 3809868

U.S. patent number 3,809,868 [Application Number 05/253,891] was granted by the patent office on 1974-05-07 for system for generating orthogonal control signals to produce curvilinear motion. This patent grant is currently assigned to Hughes Aircraft Company. Invention is credited to Richard H. Breinlinger, Allen A. Harano, Luis F. Villalobos.


United States Patent 3,809,868
Villalobos ,   et al. May 7, 1974

SYSTEM FOR GENERATING ORTHOGONAL CONTROL SIGNALS TO PRODUCE CURVILINEAR MOTION

Abstract

A system for producing orthogonal control signals for display or tool control purposes. The orthogonal control signals are generated in response to received point and slope data for each of a plurality of curve sections. The generated control signals produce curve strokes which are a variable geometric portion of an ellipse that is constrained by the received point and slope data. In generating the orthogonal control signals a set of four parameters are generated as intermediate controls. The four parameters are readily transformed to produce rotation, scaling or other operations, or are economically stored in memory as part of an instruction set for producing general or predetermined characters, symbols and graphic images from linked curve sections. A sequence of curve sections may be pieced together with smooth transitions free of slope discontinuities.


Inventors: Villalobos; Luis F. (Waltham, MA), Harano; Allen A. (Watertown, MA), Breinlinger; Richard H. (Concord, MA)
Assignee: Hughes Aircraft Company (Culver City, CA)
Family ID: 26803307
Appl. No.: 05/253,891
Filed: May 16, 1972

Related U.S. Patent Documents

Application Number Filing Date Patent Number Issue Date
106108 Jan 13, 1971

Current U.S. Class: 345/443; 708/275; 708/605; 700/187; 700/194; 345/440.1
Current CPC Class: G06G 7/22 (20130101); G06G 7/28 (20130101); G09G 1/08 (20130101); G06F 17/175 (20130101); G05B 19/4103 (20130101); G05B 2219/35554 (20130101); G05B 2219/34136 (20130101); G05B 2219/49221 (20130101)
Current International Class: G09G 1/06 (20060101); G09G 1/08 (20060101); G06G 7/22 (20060101); G06G 7/00 (20060101); G06G 7/28 (20060101); G05B 19/4103 (20060101); G05B 19/41 (20060101); G06F 17/17 (20060101); H01j 029/70 ()
Field of Search: ;235/151,197,198,150.53 ;340/324A,172.5 ;315/18,22,26,27 ;444/1

References Cited [Referenced By]

U.S. Patent Documents
3476974 November 1969 Turnage, Jr.
3488483 January 1970 Freedman
3205349 September 1965 Bryan
3283317 November 1966 Courter
3335416 August 1967 Hughes
3422305 January 1969 Infante
3519876 July 1970 Murray
3539860 November 1970 Max
Primary Examiner: Ruggiero; Joseph F.
Attorney, Agent or Firm: MacAllister; W. H. Adam; Walter J.

Parent Case Text



CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation-in-part of our copending United States patent application Ser. No. 106,108 for DISPLAY SYSTEM filed Jan. 13, 1971 .
Claims



1. A system for providing X and Y orthogonal control signals comprising:

means for receiving point and slope data representative of strokes to be executed under the control of said X and Y control signals;

means responsive to said received data for developing a set of four control parameters:

means for generating a set of quadrature phased sinusoidally varying signals scaled in accordance with the values of said control parameters to provide a set of four scaled sinusoidally varying signals;

means for causing said four sinusoidally varying signals to be generated for a selected portion of a cycle;

means for combining said four time varying signals in pairs to produce said X and Y function control signals; and

said means for developing said four control parameters from said received point and slope data being operative to develop said parameters according to a predetermined transformation which defines said parameters as the coefficients of summed sine and cosine function signals that represent orthogonal coordinates of an elliptical stroke constrained by said

2. The system of claim 1 wherein said selected portion of a cycle is a

3. The system of claim 2 wherein:

said received point and slope data represents the terminal point coordinates (X0, Y0; X1, Y1) and slopes (S0; S1) of a stroke; and

said developing means is operative to provide a corresponding transformation on said received data to produce said set of four

4. The system of claim 3 wherein the transformation of said developing means relates said four parameters to said received point and slope data according to the following equations:

A=x1-x0; b=y1-y0

j=[(so)a-b]/(s1-s0)

k=a+j

l=(s1)j

5. the system of claim 2 wherein:

said received point and slope data represents the terminal point coordinates (X0, Y0; X1, Y1) and the coordinates of an intermediate point (X3, Y3) for a stroke and the slope (S0, S1, S3) of one of the three points; and

said developing means is operative to provide a corresponding transformation on said received data to produce said set of four

6. The system of claim 5 wherein the transformation of said dveloping means relates said four parameters to said received point and slope information according to the following equations:

A=x1-x0; b=y1-y0

c=x1-x3; d=y1-y3

e=[(s0)c-d]/[(s1)a-b]; f=.sqroot.1- (e)(e)

k=(ae-c)/(e+f-1)

j=k-a

m=(so)k

7. the system of claim 5 wherein the transformation of said developing means relates said four parameters to said received point and slope information according to the following equations:

A=x1-x0; b=y1-y0

c=x3-x0; d=y3-y0

e=[(s1)c-d]/[(s1)a-b]; f=.sqroot.1-(e)(e)

k=[(x3-x1)+af]/(e+f-1)

j=k-a

l=(s1)j

8. the system of claim 5 wherein the transformation of said developing means relates said four parameters to said received point and slope information according to the following equations:

A=x1-y0; b=y1-y0

c=x3-x0; d=y3-y0

h=x3-x1; i=y3-y1

g=[(s3)c-d]/[(s3)h-1]; e=[1+g(.sqroot.2g-1)]/[ 1+(g)(g)]

f=.sqroot.1-(e)(e)

j=(c-af)/(e+f-1)

k=J+A

L=(d-bf)/(e+f-1)

9. the system of claim 2 wherein;

said received point and slope data represents the terminal point coordinates (X0, Y0; X1, Y1) of a stroke and a third intermediate point (X2, Y2) at the maximum displacement from a straight line between the terminal points; and

said developing means is operative to provide a corresponding transformation on said received data to produce said set of four

10. The system of claim 9 wherein the transformation of said developing means relates said four parameters to said received point and slope data according to the following equations:

A=x1-xo; b=y1-yo

c=x2-x0; d=y2-yo

r=1/.sqroot.2; t= 1/(.sqroot. 2- 1)

j=(c-ar)t

k=j+a

l=(d-br)i

11. the system of claim 1 further including:

controllable marking means responsive to said X and Y control signals for providing in viewable form a curve section representative thereof;

means for establishing magnitude limits to said X and Y control signals;

means for detecting when said control signals exceed said limits; and

means for inhibiting marking by said controllable marking means in response

12. The system of claim 11 further including:

means for controlling the rate of variation of said X and Y control signals; and

means operative in response to detection of said control signals exceeding said limits for increasing the rate of variation of said X and Y control

13. A system for providing X and Y orthogonal control signals comprising:

means for producing four parameters to represent input data;

means for storing values representing the sine and cosine functions for predetermined portions of a cycle;

controllable means for retreiving said stored values to provide sine and cosine signals;

means controlled by first and second ones of said four parameters for providing first and second output signals representing said sine signal adjusted according to the value of said first and second parameters;

means controlled by third and fourth ones of said four parameters for providing third and fourth output signals representing said cosine signal adjusted according the value of said third and fourth parameters;

first means for developing said X control signal to represent a combination of said first and third output signals; and

second means for developing said Y control signal to represent a

14. The system of claim 13 wherein said means for providing said first, second, third, and fourth output signals include binary rate multipliers

15. The system of claim 14 wherein:

said means are provided for detecting the quadrant represented by said sine and cosine signals;

means are provided for detecting the sign of said first and third parameters;

said first developing means includes means responsive to the detected quadrant and detected sign of said first and third parameters for identifying each elemental signal in said X control signal as an increasing or decreasing elemental change;

means are provided for detecting the sign of said second and fourth parameters; and

said second developing means includes means responsive to the detected quadrant and detected sign of said second and fourth parameters for identifying each elemental signal in said Y control signal as an

16. The system of claim 14 further including means for controlling the rate of generation of said elemental signals to provide regulation in the rate

17. The system of claim 16 wherein:

a source of clock signals is provided;

said controllable means includes first and second binary rate multipliers responsive to said stored values and said clock signals to provide a series of elemental signals as said sine and cosine signals; and

said controllable means is operative to inhibit said clock signals for a predetermined interval after each elemental signal in said first, second,

18. The system of claim 13 further including:

means responsive to said X and Y control signals for moving a part; and

means for controlling the generation of said sine and cosine signals to limit accelerations of said part represented by said X and Y control

19. A system for producing X and y orthogonal control signals representing a curve section in response to input data including curve terminations and operative to provide predetermined transformations to said control signals, said system comprising:

means for receiving said input data;

means responsive to said received input data for developing a set of plural control parameters;

means responsive to said control parameters for producing a set of transformed control parameters to represent a predetermined manipulation on said curve section as realized by a direct alteration on said control parameters and without introducing distortions to said curve section other than said predetermined manipulations;

means for generating a set of sinusoidally varying signals scaled in response to said transformed control parameters; and

means for combining said scaled, sinusoidally varying signals to provide

20. The system of claim 19 wherein said predetermined manipulation is a rotation by a selected angle about an axis orthogonal to the plane of said

21. The system of claim 20 wherein said producing means is operative to provide each parameter of said set of transformed parameters as the combination of two of said control parameters scaled by a trigonometric

22. The system of claim 19 wherein said producing means includes means for providing a rotation in a space described by more than two dimensions.

23. The system of claim 22 wherein:

said set of control parameters includes additional parameters to represent one or more dimensions other than the X and Y dimensions;

said transformed parameter producing means is operative in response to said set of control parameters including said additional parameters to provide transformed control parameters representing a rotation about an axis other than the axis orthogonal to the plane of said X and Y control signals;

said generating means is responsive to said set of transformed control parameters including said additional transformed parameters to provide said scaled sinusoidally varying signals including further sinusoidally varying signals scaled in response to said additional transformed parameters; and

said combining means is operative to provide additional orthogonal control signals as combinations of said further scaled, sinusoidally varying

24. The system of claim 23 wherein said transformed parameter producing means include:

a plurality of means each responsive to one of a plurality of selected angles of rotation to provide a corresponding transformation on a portion of said set of control parameters; and

means for providing sequential operation of said plurality of means to

25. The system of claim 19 wherein said producing means is operative to produce right angle rotations and reflections as the manipulations of said

26. The system of claim 25 wherein said producing means further includes means for providing as said transformed parameters, predetermined combinations of said control parameters and the negative of said control

27. The system of claim 19 wherein said producing means includes means for scaling said control parameters to alter the size of said curve section.

28. The system of claim 19 wherein:

said control parameters include initial point corrdinates; and

said producing means includes means for adding first and second offset

29. A system for generating orthogonal X and Y control signals to represent predetermined strokes, said system including:

addressable means for storing a plurality of instruction sets;

each of said instruction sets including one or more sets of generally different parameters;

means for generating a plurality of sinusoidally varying signals scaled in response to a set of parameters;

means for responding sequentially to each stored set of parameters for application of each set of parameters to said generating means; and

means for combining each sequence of generated scaled sinusoidally varying signals to provide the X and Y control signals for each of said

30. The system of claim 29 wherein:

means are provided for reducing the scale of each sequential set of parameters before application to said generating means; and

said stored parameters are stored in augmented scale to provide a greater number of terminal points available for each of said predetermined

31. A system for generating X and Y orthogonal control signals to represent linked curve sections having smooth transitions comprising:

means for receiving data representing points on said curve sections;

means responsive to received data for developing a set of control parameters;

means for generating for a selected portion of a cycle a plurality of sinusoidally varying signals scaled in response to said set of paramters;

means for combining said scaled sinusoidally varying signals to provide said X and Y orthogonal control signals;

means for determining the relative variations in said X and Y control signals at the terminal point of said X and Y control signals for each selected portion of a cycle; and

means responsive to further received data and said determined relative variation for developing a further set of control parameters for a subsequent set of X and Y control signals for an adjacent curve section having an initial relative slope matching the slope of the terminal point of the preceeding curve section.
Description



FIELD OF THE INVENTION

This invention relates to systems for generating orthogonally reacting control signals for application to a display or tool controller and in particular relates to a system for generating control signals which react to produce elliptical motion.

BACKGROUND OF THE INVENTION

As indicated in our above-referencec copending United States patent application of the electronic display system providing, for example, on the surface of a cathode-ray-tube a controllable series of characters and graphical representations is an impressively useful tool in information processing or system design applications. See, for example, United States patents of Bryan et al, U.S. Pat. No. 3,205,349 or Turnage et al, U.S. Pat. No. 3,476,974. Additionally, physical tools such as lasers employed in the garment industry to cut sections of cloth according to predetermined patterns can be programmed to respond to the control signals similar to those employed in display systems to control the motion of the laser or other physical tool involved. The many complex motions, point sequences or display strokes which are needed in these applications involve repetitive generation of a series of control signals for application to the ultimate display or tool controller and thus often result in an extremely complex and time consuming series of steps and calculations in the processing electronics employed for their generation. Even so, the resulting control signals often produce motions which do not satisfactorily approximate the desired trajectories.

Moreover, if manipulations are required between receipt of the specifying parameters and the final generation of the orthogonal control signals, prior art systems have required that the transformed orthogonal control signals be produced by starting from the original specifying input data, and thus enormously complicate the transformation operation. Also, transformations, such as rotations, will alter the control signals in undesired ways. Thus general curve transformations have been unavialable in prior art systems. Additionally, the generation of linked curve sections joined at points where the slopes are equal has not previously been possible.

BRIEF SUMMARY OF THE INVENTION

The design of the present invention provides for the generation of orthogonally reacting control signals to control a display or mechanical tool system in accordance with input curve specifications in the form of points or slopes. The control signals are generated as one or more linked elliptical curve sections constrained uniquely to fit the input sepcifications of points and slopes. The generation of control signals can be accomplished through either stored program computer control or by specific hard wired implementation and in either case provide for rapid generation of the control signals with a minimum of generator components or computer time, particularly important when a plurality of sections must be constructed in rapid sequence.

The generation of the control signals from the input point and slope specifications is accomplished in two steps, a first step, governed by one of several tranformations, depending upon different ways of specifying the input constraints, produces four intermediate control parameters which are then applied to a function generator where the four parameters are employed to scale quadrature phased, time varying, quarter cycle, sinusoidal signals. The scaled signals are then combined in pairs to produce the orthogonal control signals and, additional offset and initial position signals are combined with the paired time varying signals to provide appropriate placement of the initial point for each stroke of the elliptical curve sections. Where transformations, such as rotations, on the ultimately produced strokes of elliptical curve sections are desired, these are easily accomplished through predetermined scaling operations on the four intermediate parameters without the requirement for recalculation from the original input point and slope specifications. Rotations and other similar transformations do not vary the curve shape since the parameters are not required to be recalculated from the starting point and slope data.

In addition to savings in computing time and display speed the present invention is able to produce complex and most commonly used shapes from a minimum of strokes by employing the flexibility of elliptical curve sections which are, in turn, each specified by four intermediate parameters. The intermediate parameter approach permits predetermined characters, symbols and graphics to be stored in very small memory areas permitting an extremely large repertory of predetermined figures which may be called up for display or tool control by simply specifying a memory address without the need for recalculation of a series of intermediate control parameters for the function generator. Additionally, by appropriate selection of type of point and slope input data, linked curves can be generated with smooth transitions between adjacent sections. Moreover, by controlling the order in which input point data is specified, the cruve sections are generated in either of the two possible directions to further increase system flexibility.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other features of the invention will be more fully described below in a detailed description of the preferred embodiment presented for purposes of illustration, and not by way of limitation, and in the accompanying figures of which:

FIG. 1 is a block diagram of basic functional components employed in the invention;

FIG. 1A presents tranformations useful in correlating parameters of this application with our above-referenced patent application;

FIG. 2 is a graph useful in describing the principles of the invention;

FIGS. 3 and 5-8 illustrate circuit diagrams for different conversions available for input data as employed in FIG. 1;

FIGS. 4 and 4A show circuitry for one implementation of a function generator for use in FIG. 1;

FIGS. 9 and 10 illustrate circuitry for an alternative version of a function generator for use in FIG. 1;

FIG. 11 presents a basic functional diagram of additional features of the invention;

FIGS. 12-16 illustrate circuitry to provide different transformations which may be employed in the system of FIG. 11;

FIGS. 12A, 13A, 14A and 15A present algebraic statements of the transformation of the corresponding circuitry Figures;

FIG. 17 illustrates a system for generating preselected symbols, characters and graphics from stored instruction sets;

FIG. 18 illustrates circuitry for operation of the invention in accordance with stored program computer control;

FIG. 19 presents a flow chart describing the programming for use in FIG. 18 in generating linked sections; and

FIG. 20 presents a three-dimensional rotation implementation for the invention.

DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT

Referring now to FIG. 1 the basic functional parts of the display or tool control system according to the present invention can be understood to establish perspective for more detailed descriptions of the structure of each part. Since a part of what is described below is presented in our above-referenced copending United States patent application, there will be some similarities between this case and that presented before. There has been, however, during the evolution of this design a change of notation which is reflected in the equations of FIG. 1A. These provide the correspondence between parameters employed in the present application and those of the previous case. With specific reference now to FIG. 1, an input source 12 such as a keyboard or a set of registers for point and slope data is provided from which one or more sets of point and slope information is provided to a data converter 14. The data converter 14 is programmed by hard wired interconnection of a plurality of digital modules as will be explained below, or through software commands in a computer as will also be more fully described below. The converter 14 responds to the point and slope input information from source 12 to provide a plurality of output parameter signals to a function generator 16. The output parameters include initial points in orthogonal X and Y coordinates (XO and YO) for each curve section to be generated as well as four additional parameters labeled with the notation J, K, L and M which define each stroke. The function generator 16 receives the initial point coordinates and the four parameters (J, K, L and M) and employs them to scale quadrature phased sinusoidal signals according to a predetermined relationship. The resulting scaled signals are then summed in pairs with one of the parameters and with the initial point coordinates to produce corresponding orthogonally reacting, time varying control signals labeled as X(t) and Y(t) on lines 18 and 20. The output control signals are applied to a display or other utilization device 22.

The X and Y control signals from the generator 16 may be in digital or analog form and in the former will be converted to analog form by a digital-to-analog converter 24 for use by analog inputs of such display devices as an X-Y cathode-ray-tube 26, scan converter 28 and associated television monitor 30, direct view storage tube 32, or X-Y plotter 34. An enabled signal is provided to a blanking circuit 36 which causes marking by the displays only during the selected portion of a cycle of the quadrature phased sinusoidal signals. In other embodiments the X and Y control signal outputs of the generator 16 are in digital incremental form wherein each pulse output represents a predetermined positioning change for the display or other utilization device 22. The incremental pulse signals are ideally suited for application to an incremental digital plotter 38 or numerically controlled tool system 40.

A significant factor in the efficiency of the present system is the use of selected portion of an ellipse approach. By reference now to FIG. 2 the mathematical transformations of the data converter 14 which create this efficiency can be more easily understood. In FIG. 2 a curve section 42 is to be displayed or a tool system is to be governed by the motion represented by that curve. The curve will be specified from the input source 12 in the typical case by a set of points or points and slopes along the curve 42. For exemplary purposes in the present patent application five cases are presented of different combinations of points and slopes including: (1) beginning and ending points (P0 and P1) and the curve slopes, (S0 and S1) respectively; (2) three points (P0, P1 and P3) and the slope at the initial point (S0); (3) three points (P0, P1 and P3) and the slope at the ending point (S1); (4) three points (P0, P1 and P3) and the slope of the intermediate point (S3); and (5) beginning and ending points (P0 and P1) and the position of a point (P2) on the curve between beginning and ending points at a position which is the greatest distance from a straight line joining the beginning and ending points.

The data converter 14 accepts point and slope information for any of these five cases and provides electrical output signals representative of the coordinates of the beginning point P0 (X0, Y0) and four intermediate parameters J, K, L and M which specify the curve on the basis of a quarter cycle ellipse. The mathematics which govern this conversion in the five cases is presented below.

Case i

input: x0; y0; x1; y1; s0; s1

let: a=x1-x0; b=y1-y0

output:

x0; y0

j=(s0a-b)/(s1-s0)

k=a+j

l=s1j

m=b+l

case ii

input: x0; y0; x1; y1; x3; y3; s0

let:

a=x1-x0; b=y1-y0

c=x1-x3; d=y1-y3

e=(s0c-d)/(s1a-b); f=.sqroot.1-(e) (e)

output:

x0; y0

k=(ae-c)/(e+f-1)

j=k-a

m=s0k

l=m-b

case iii

input: x0; y0; x1; y1; x3; y3; s1

let:

a=x1-x0; b=y1-y0

c=x3-x0; d=y3-y0

e=(s1c-d)/(s1a-b); f=.sqroot.1-(e) (e)

output:

x0; y0

k=[(x3-x1)+af]/(e+f-1)

j=k-a

l=s1j

m=l+b

case iv

input: x0; y0; x1; y1; x3; y3; s3

let:

a=x1-x0; b=y1-y0

c=x3-x0; d=y3-y0

h=x3-x1; i=y3-y1

g=(s3c-d)/s3h-i); e=[1+g(.sqroot.2g-1)]/[1+(g) (g)]

f=.sqroot.1-(e) (e)

output:

x0; y0

j=(c-af)/(e+ f-1)

k=j+a

l=(d-bf)/(e+f-1)

m=l+b

case v

input: x0; y0; x1; y1; x2; y2

let:

a=x1-x0; b=y1-y0

c=x2-x0; d=y2-y0

r=1/.sqroot. 2; t=1/.sqroot. 2-1

output:

x0; y0;

j=(c-ar)t

k=j+a

l=(d-br)t

m=l+b

any of the above five cases governing the operation of the data converter 14 will produce initial point X0 and Y0 output coordinates plus four J, K, L and M parameters for application to the function generator 16. Additional mathematics governing operation of the function generator 16 in responding to the output signals from the data converter 14 to provide time varying X(t) and Y(t) control signals for application to a display or control system 22 is indicated below.

X(t)=J[cos(t)-1] + Ksin(t)+X0

Y(t)=L[cos(t)-1] + Msin(t)+Y0

Where generally 0.ltoreq.t.ltoreq.2.pi.

typically 0.ltoreq.t.ltoreq..pi./2

Not only has it been found that elliptical sections provide excellent fit characteristics for controlling the motion of displays of tool mechanisms but that the generation of the orthogonal X and Y controls for each stroke fo the mathematics indicated above is accomplished more simply. Also the very low density storage of predetermined strokes in the form of the parameter outputs from the data converter 14 enables a great variety of alphanumeric and graphic information to be displayed directly from storage. The lower quantity of data necessitated to accurately prescribe the curve also insures more efficient use of data lines such as provided by the telephone system. Additionally, transformations on the generated strokes can in most cases be easily performed on the intermediate parameters provided by the data converter 14 without the necessity for recalculation from original point and slope input information as is common in other systems, and without creating unwanted distortions in the curves. Furthermore, by interchanging the initial and terminal points, the curve can be traced in the same or opposite direction to provide greater flexibility.

Consider now in detail specific implementations for the data converter 14 and the function generator 16 to provide X and Y time varying orthogonal control signals in response to point and slope input data. For this purpose reference is made to FIG. 3 which shows a detailed schematic diagram of a possible implementation for the data generator 14 in case I. The converter of FIG. 3 receives data input from a plurality of sources 50, 52, 54, 56, 58 and 60 which respectively contain signal values representative of X0, Y0, Y1, X1, S0 and S1. The signals from the sources 50 and 62 are directly fed through the system to provide respective X0 and Y0 output signals and are also applied respectively to inverting inputs of summing networks 64 and 62. The X1 and Y1 signals from sources 54 and 56 are applied respectively to noninverting inputs of networks 64 and 62. The output of summer 62 is applied to a multiplicand input of a multiplier 66 which receives on its multiplier input the S0 signal from source 58. The product output of multiplier 56 is applied to a noninverting input of a summer 68 while an inverting input thereof receives the output of summer 64. The S0 and S1 signals from sources 58 and 60 are applied respectively to inverting and noninverting inputs of a summer 70 which in turn provides this output to a denominator input of a divider circuit 72. The numerator input of divider 72 is provided from the output of summer 68 and the quotient output of divider 72, the J output of the converter, is applied to a noninverting input of a summing network 74 and to a multiplicand input of a multiplier 76. The summer 74 receives on a further noninverting input the output of summer 64 and provides this output as the K signal. The multiplier 76 receives on a multiplier input the S1 signal from source 60 and provides a product output signal as the L signal from the converter and also applied that signal to a noninverting input of a summer 78. The summer 78 receives on a further noninverting input the output of summer 64 and provides its summed output as the M signal from the converter.

The inputs from sources 50-60 for the converter of FIGS. 3 may be in either analog or digital form. If in analog form the summers, multipliers and dividers of the system can be any of the well known analog circuits which provide this function. If the input is in digital form the summers, multipliers and divider may be digital circuits and will, in typical application, be clocked in sequence as they occur in FIG. 3 from left to right such that each module has available all necessary inputs at the clocking point when it must provide the digital logic function indicated.

In FIG. 4 an exemplary function generator 16 is indicated in detail. The J, K, M and L outputs from the data converter 14 are applied respectively to multiplicand inputs of multipliers 80, 82, 84 and 86. The J and L signals are also applied to inverting inputs of respective summers 88 and 90. Multiplier inputs of multipliers 80 and 86 are provided by a time varying cosine signal from a cosine function generator 90 while multiplier inputs of the multipliers 82 and 84 are provided by a time varying sine function signal from a sine function generator 92. The generators 90 and 92 are controlled by a time controller 94. The time controller 94 and the generators 90 and 92 may be of the type indicated in our above-referenced copending patent application as the unit 34, shown in FIG. 4A, in which case the quadrature phased time varying signals are generated from a triangle wave source composed of an integrator 91 which integrates the positive or negative values from a switch 89 controlled by the integrator output to provide a single polarity triangle wave which is applied through a diode approximator 93 to provide a full wave rectified time varying sine function and through an inverter 95 and a diode approximator 97, to provide the full wave rectified time varying cosine function. To provide quadrature phasing, the triangle wave varies between zero and a predetermined upper limit and the resulting outputs of the diode approximators represent full wave rectifications of the sine and cosine functions. As indicated in our above-referenced application these outputs are converted to the normal sine and cosine function signals through gates 99 and 101 which provide polarity reversal on alternate cycles; summers 103 and 105 provide the composite signals.

The multipliers 80 and 82 provide product outputs to noninverting inputs of summer 88 along with the initial value signal (X0) and the summed output provides the time varying X(t) signal for application to a display system 22. Similarly the multipliers 84 and 86 provide their product outputs to noninverting inputs of summer 90 which also receives on a further noninverting input the initial value Y0 signal. The sum output of the summer 90 is the time varying Y(t) signal applied to the display system 22.

To cause the X and Y signals to vary for a quarter cycle in the typical mode of use and to cause the display 22 to respond only during that quarter cycle, a phase detector 94 responds to the outputs of generators 90 and 92 to detect each of the quarter cycles from the generators at t=0, .pi./2, .pi. and 3.pi./4. These may be accomplished using known thresholding techniques. The phase detector provides four outputs, one representing eqch quarter cycle point, to a logic switch 96 which selects one of the four outputs for application as a reset input to the time controller 98. The time controller receives a start signal on a set input which can be used to enable a gate 107 within FIG. 4A to apply the positive and negative representations of an input to switch 89 to cause the generation of electrical sine and cosine function representations from t=0. At the quarter cycle point, with the appropriate selection of switch 96, the time controller 98 is reset with the reset signal applied to discharge the integration capacitor of the integrator 91 causing a return to the initial time condition and to inhibit gate 107. The reset signal from the logic 96 and the start signal are also applied to a mark inhibit circuit 100 which in turn acts as a buffer for the blanking controls of the display system 22. Accordingly the display 22 will be blank until the start signal is applied to the controller 98 and after a reset signal is applied thereto.

A velocity compensator 102, shown also in FIG. 4A, responds to the time varying X and Y signals applied to the display 22 and provides an output signal representative of the deviation from a reference of the square-root of the sum of the squares of the time derivative of the X and Y signals or approximations thereto as indicated in our above-referenced copending application and in FIG. 4A. This signal is applied to the time controller 98 at gate 107 which provides equal positive and negative representations of the input to control the rate of the triangle wave signal generated therein and adjust the velocity of the sine and cosine function signals as well as the X and Y signals. The result tends to regulate them to a predetermined vector velocity such that the display intensity 22 is maintained constant. More sophisticated velocity control systems for use with tool controllers will be indicated below with reference to specific designs for that purpose. A switch 109 alternatively is activated to connect a reference 111 to gate 107 for a more rapid writing rate explained below.

It is to be understood that either analog or digital implementation of the circuitry of FIG. 4 may be employed. If the J, K, L and M signals from the generator 14 are in digital form the multipliers 80-86 may typically be multiplying digital-to-analog converters wherein the analog reference input is provided from the generators 90 and 92. In such a case digital-to-analog conversion must be applied on the X0, J, L and Y0 signals for application to the summers 88 and 90 which would in that case normally be an analog summing network. An alternative all digital implementation for the function generator of FIG. 4 will be indicated in greater detail below.

Additional schematic diagrams for the implementation of the data converter 14 for cases II, III, IV and V are indicated in FIGS. 5-8, the same conventions being employed there as in FIG. 3. With reference to FIG. 5, the J, K, M and L outputs are provided as respective outputs of a summer 102, divider 104, multiplier 106 and summer 108, the X0 and Y0 signals being fed directly through. The summer 102 receives on an inverting input the output of a summer 110 and on a noninverting input the output of divider 104; the multiplier 106 receives respective multiplier and multiplicand inputs from divider 104 and the S0 signal. The divider 104 receives a numerator input from a summer 112 and a denominator input from a summer 114. The summer 114 receives on noninverting inputs the output of a square-root circuit 116 a minus one reference signal 118 and the output of a divider 120. The square-root circuit 116 receives the output from a summer 122 which in turn receives on respective inverting and noninverting inputs the output of a squaring circuit 124 and the output of a one value reference 126. The squaring circuit 124 receives the output of the divider 120 as does the multiplicand input of a multiplier 128. Multiplier 128 receives on its multiplier input the output of summer 110. Multiplier 128 provides its output to summer 112 on a noninverting input while an inverting input of summer 112 is applied from the output of a summer 130. The divider 120 receives respective denominator and numerator inputs from summers 132 and 134. Summer 132 receives on respective noninverting and inverting inputs the output of a multiplier 136 and the output of a summer 138. The summer 134 also receives on respective noninverting and inverting inputs the output of a multiplier 140 and the output of a summer 142. Multipliers 136 and 140 respectively form products of the outputs of summer 110 and summer 130 with the S0 signal. Summers 110, 138, 130 and 142 respectively receive on inverting inputs the X0, Y0, X3 and Y3 signals and receive respectively on noninverting inputs the X1, Y1, X1, and Y1, signals. As indicated above, digital or analog implementations of these systems may be employed as desired.

The circuitry of FIG. 6 is similar to that of FIG. 5 in many details with the following differences being noted. The summers 130 and 142 are replaced respectively with summers 144 and 146 which receive on respective inverting inputs the X0 and Y0 signals and on respective noninverting inputs the X3 and Y3 signals. The S1 signal is provided in FIG. 6 in place of the S0 signal to multipliers 136 and 140 which are provided as before as are summers 132 and 134, divider 120, squaring circuit 124, summing circuit 122, square rooting circuit 116 and summing circuit 114 along with reference circuits 118 and 126. From here the differences which occur are indicated. A summing circuit 148 receives on a noninverting input the output of summer 144 and on an inverting input the output of summer 110. A multiplying circuit 150 receives on respective multiplier and multiplicand inputs the output of summer 110 and the output of square root circuit 116. The outputs of summer 148 and multiplier 150 are provided to noninverting inputs of a summer 152 which in turn provides a sum output to a numerator input of a divider 154. The denominator input of divider 154 is provided from the output of summer 114 and the divider output is provided to a noninverting input of a summer 156. An inverting input of summer 156 is provided from the output of summer 110 and the output of summer 156 provides the J signal output for the inverter. The K signal output is provided from the divider 154. Multiplier 158 receives the output of summer 156 and the S1 signal as inputs and provides as its product output the L signal which is also applied to a summer 160 along with the output of summer 138 to provide the M output signal.

Referring now to FIG. 7 the system operative in accordance with the equations of case IV is indicated and comprises a set of summing amplifiers 162, 164, 166, 168, 170 and 172 which on respective inverting inputs receive the X0, Y0, X0, Y0, X1, and Y1 signals and on noninverting inputs receive respectively the X1, Y1, X3, Y3, X3, and Y3 signals. The output of summer 166 is applied to a multiplicand input of a multiplier 174 and the output of summer 170 is applied to a multiplicand input of a multiplier 176. Multiplier inputs of multipliers 174 and 176 are provided from the S3 signal and their respective outputs are provided to noninverting inputs of summers 178 and 180. Inverting inputs of the summers 178 and 180 are provided respectively from the outputs of summers 168 and 172. Outputs of summers 178 and 180 are provided respectively as numerator and denominator inputs of a divider 182. The output of divider 182 is applied to multiplicand inputs of multipliers 184 and 186 and to the input of a squaring circuit 188. Multiplier 184 receives a multiplier input from a two value reference 190 and provides its output to a square root circuit 192 which in turn provides its output to a noninverting input of a summer 194. Summer 194 has an inverting input from a one value reference source 196. The output of summer 194 is applied to the multiplier input of multiplier 186 whose product output is applied to a noninverting input of a summer 198 along with a one value signal from a reference 200. The output of the squaring circuit 188 is applied to a summing circuit 202 along with a one value reference from a source 204. The output of summer 202 and the output of summer 198 are applied respectively to denominator and numerator inputs of a divider 206 with the output thereof applied to a squaring circuit 208 and a noninverting input of a summer 210. Squaring circuit 208 provides an output to an inverting input of a summer 212 which receives on a noninverting input a one value reference from a source 214. The output of summer 212 is applied to a square root circuit 216 whose output is applied to a noninverting input of summer 210 along with a minus one reference signal from a source 218. The output of square root circuit 216 is also applied to multiplicand input of multipliers 220 and 222. Multiplier inputs thereof are provided respectively from the output of summer 162 and the output of summer 164. Product outputs of the respective multipliers are applied to inverting inputs of respective summers 224 and 226 with noninverting inputs received respectively from the outputs of summers 166 and 168. The outputs of summers 224 and 226 are applied to numerator and denominator inputs of respective dividers 228 and 230. The denominator and numerator inputs for the dividers 228 and 230 are provided from the output of summer 210. The quotient output of divider 228 provides the J output signal and is applied to a noninverting input of a summer 232 while the quotient output of the divider 230 provides the L output signal and is applied to a noninverting input of a summer 234. Summers 232 and 234 receive on further noninverting inputs the outputs respectively of summers 162 and 164 and in turn provide the K and M output signals.

With reference now to FIG. 8, the case V implementation for the data converter 14 is indicated. Summers 236, 238, 240 and 242 receive respectively on inverting inputs the X0, X0, Y0, YO signals and on noninverting inputs respectively the X2, X1, Y1 and Y2 signals. The output of summers 238 and 240 are applied respectively to multiplicand inputs of multipliers 244 and 246. Multiplier inputs thereto are provided from a reference source 248 containing the value 1/.sqroot.2. The outputs of multiplier 244 and 246 are applied to inverting inputs of respective summers 248 and 250, their respective noninverting inputs being supplied from the outputs of summers 236 and 242. The outputs of summers 248 and 250 are applied to multiplicand inputs of multipliers 252 and 254 which have their multiplier inputs provided from a source 256 of the value 1/(.sqroot.2 -1). The outputs of multipliers 252 and 254 provide respectively the J and L output signals and are further applied to noninverting inputs of summers 258 and 260. Additional noninverting inputs to the summers 258 and 260 are applied respectively from the outputs of summers 238 and 240 and the outputs of these summers 258 and 260 provide the K and M output signals.

It is to be understood that the data converter 14 may contain hard or soft wired versions in analog or digital form for all five cases and additional cases as may be desired. The particular transformation employed may be set by operator selection of one of the five cases or by automatic determination of the type of data supplied to the converter.

Referring now to FIG. 9, a digital implementation for the function generator 16 is indicated in detail. The respective J, K, M and L signals are provided in a digital form to respective binary rate multiplier circuits 262, 264, 268, and 270. The binary rate multipliers 262 and 270 receive digital pulses from a cosine function generator 272 the output thereof being a pulse stream with the pulse rate representative of the sine function. The binary rate multipliers 264 and 268 receive similar digital representations of the sine function from a sine function generator 274. Clocking explained below prevents simultaneous pulses from both generators 272 and 274. The binary rate multipliers 262-270 may be of any standard readily available design and operate to adjust the rate applied to them from the generators 272 and 274 in accordance with the magnitudes of the J, K, M and L signals applied to them on further inputs. The resulting outputs from the multipliers 262-270 are pulse rates representative of the product of the sinusoidal functions and the appropriate parameter from the data converter 14.

The outputs of binary rate multipliers 262 and 264 are applied to a pulse interleaving or summing network 290 (coincident inputs being prevented by the typical timing of the binary rate multipliers) and the outputs of multipliers 268 and 270 are applied to a similar summing network 292. The respective outputs of pulse summing networks 290 and 292 are applied to respective pulse switches 294 and 296. Switch control for the pulse switch 294 is received from a direction control circuit 298 which receives inputs from polarity detecting circuits 300 and 302 and quadrant information from the time control circuit 278. The polarity circuit 300 responds to the J signal for pulses from generator 272 to indicate whether it is positive or negative and the circuit 302 responds to the K input signal for pulses from generator 274 to indicate whether its polarity is positive or negative. The direction control circuit 298 operates in accordance with the following truth table:

COUNT UP CONTROL

Quadrant Sign J(L) or Sign K(M) 1 - + 2 - - 3 + - 4 + +

count down control results from the opposite signs for J and K parameters. Only one parameter is sampled at a given instant since a pulse from only one or the other of the generators 272 and 274, not both, is possible during each clock interval by coordinating separate clock signal level shifts with the output pulses of generators 272 and 274. These same separate shifts also control circuit 298 to test the appropriate coefficient for the generator activated.

The resulting count up or count down control output of the direction control circuit 298 causes the switch 294 to correspondingly direct the pulses from the summing networks 290 to a count up output line 304 or a count down output line 306.

The pulse switch 296 similarly receives pulse switching control from a direction controller 308 which in turn receives polarity signals from polarity detectors 310 and 312 and quadrant information from the time controller 278. Circuits 310 and 312 respond respectively to detect the polarity of the M and L input parameters for pulses from generators 274 and 272. The above truth table indicates the response of the direction control circuit 308 for the L and M coefficients. The pulse switch 296 in response to the direction control signals directs the innerleaved pulses from summing circuit 292 to corresponding count up or count down lines 314 and 316.

First and second reversible counters 318 and 320 respond respectively to the signals on lines 304 and 306 from circuit 294 and 314 and 316 from circuit 296. A preset input from the X0 and Y0 signals are applied to counter 318 and 320 to produce initial digital values. The digital contents of the counters are applied to respective digital-to-analog converters 322 and 324 which in turn produce analog X(t) and Y(t) signals for application to a display cathode-ray-tube 326. Alternatively the digital contents of the counters 318 and 320 may be applied directly to devices using digital control signals.

In the case of many digitally controlled positioning devices, stepping motors are employed to produce the desired motion strokes. In that case, incremental devices 328 are ideally adapted to receive the signals supplied by the lines 304, 306, 314 and 316 to provide incremental control over the stepping motors or similar devices employed therein.

Referring now to FIG. 10 the system is indicated for use with a tool controller to provide both momentum and velocity control adapted to prevent the physical tool element being controlled from departing from the desired strokes due to excessive acceleration from too high a stroke velocity.

In FIG. 10, the details of the sine and cosine function generators 272 and 274 and time controller 278 as well as the tool motion velocity controller are indicated in detail. In particular, the pulse rates representative of sine and cosine functions are provided by respective binary rate multipliers 325 and 327, multiplier 327 having an output delayed 1/2 clock cycle to prevent simultaneous output. The multipliers 325 and 327 receive a pulse input from a clock 329 which may be held on at each pulse output by a hold input. Pulse scaling signals are received from respective switches 330 and 331 controlled by a decoder 332 to connect the output of respective sine and cosine pulse rate tables 333 and 334 to multipliers 325 and 327 in different combinations depending upon the quadrant of the generator. The tables 333 and 334 are standard addressable memories which receive address signals from a counter 335 and provide respective output values which reflect the differences in the sine and cosine values for the point in the first quadrant represented by the address of counter 335. To permit several clock pulses to be generated for each address change from counter 335 a further counter 336 drives counter 335 from its overflow in response to clock pulse input. The total number of pulses from clock 329 for each address change from counter 335 is defined by system resolution requirements while the important parameter in the outputs from the multipliers 325 and 327 is the difference in pulses for each address since the sine and cosine functions will ultimately react through the X and Y signals independently of time.

Tables 333 and 334 contain only quarter cycle values and their outputs are switched between multipliers 325 and 327 by switches 330 and 331 each quadrant signals from decoder 332 which receives the quadrant state from a 2 bit counter 337 which, in turn, is stepped by the overflow output of counter 335.

The pulse outputs of multipliers 325 and 327 are applied as indicated in FIG. 9 to result in incremental pulse output signals on lines 304, 306, 314 and 316 for application to incrementally controlled unit 328, for example to X and Y stepping motors 328a and 328b of a tool 328c. The lines 304, 306, 314 and 316 are also applied to a digital differential analyzer 338 of standard design to provide an output to a digital difference circuit 339 representing vector acceleration. Circuit 339 compares the acceleration to a reference 340 and provides a difference indication to delay circuits 341 and 342 to increase or decrease the delay if the acceleration is respectively above or below the reference. Delay circuits respond to the trailing edges of both up and down pulses for respective X and Y signals to initiate delay intervals for application to respective AND gates 343 and 344. Gates 343 and 344 respond to X and Y leading edge pulses as well to provide outputs through OR gate 345 to hold clock 329 in a pulse on state until the delay interval has run between pulses from multipliers 325 and 329. The delays effect control of the pulse rates and control ultimate tool motion to prevent excessive accelerations.

Alternatively, a counter 346 advances on both up and down X and Y pulses to register tool trajectory position and address a presettable memory 347 to read out a predetermined control signal for delay circuits 341 and 342. The memory 347 may be empirically present during a trial run of the tool to achieve maximum velocity without loss of trajectory accuracy.

A flip-flop 348 responds to a start signal to cause clock 329 to provide pulses, and a switch 349 responds to quadrant signals from decoder 332 to reset flip-flop 348 and stop clock 329 after one or more quarter cycles.

Turning now to FIG. 11 a further system block diagram is indicated and presents additional major components to provide transformations of the four intermediate parameters and further to accept coding for the display of predetermined symbols and characters. Accordingly data converter 350, substantially of the type indicated in FIG. 1, is provided to receive the five respective sets of point and slope input specifications which are applied to corresponding data converters 352, 354, 356, 358 and 360 as indicated in the figures above. A switch 362 responds to an external control 364 to select the appropriate conversion module and apply the resulting output to a transformation processor. The parameters are applied through a switching system 368 for direct application to a function generator 370 or for processing by a plurality of transformation system 372, 374, 376, 378 and 380 which respectively provide quarter turn rotations or reflections, generalized rotation, scaling, or offset. The switch system 368 responds to an external control 382 for appropriate selection of the desired transformation. The resulting transformed parameters applied to the generator 370 may also be directed to a clipping circuit 384 or directly applied to a display by a switch mechanism 386 operating in response to a further external control 388. The clipping circuit 384 responds to four preset inputs from sources 390, 392, 394, and 396 which respectively represent X control signal minimum and maximum values and Y control minimum and maximum values.

A character and symbol processor 400 in FIG. 11 receives predetermined digital input codes representing characters to be displayed along with positioning commands for the characters. The processor 400 contains a random access memory 402 and a read only memory 404 which are programmable to contain instruction sets for a plurality of predetermined characters that are accessed by the codes received by the processor 400. The control system 406 provides additional control for the character generations. The processor 400 provides direct application of the position and stroke parameters to the transformation processor 366, and ultimately for application to the generator 370. The plurality of sets of parameters called from the instructions in memory provide execution by the generator of the corresponding character as will be more fully described below. Details of processor 400 are indicated below.

Referring now to FIG. 12 a detailed schematic is indicated for a transformation system to provide general rotation of strokes by any angle through direct operation on the J, K, L and M parameters without recalculation of data from the original input information, and without distortions. Angle information is entered from a control 410 to respective cosine and sine converters 412 and 414 which may, for example, be either diode approximator circuits in the case of analog inputs from the source 410 or a look up table system in the case of digital inputs. The output of the cosine converter 412 is applied to multiplicand inputs of multipliers 416, 418, 420 and 422 while the sine output from the converter 414 is applied to multiplicand inputs of multipliers 424, 426, 428, 430. The J input is applied to the other inputs of multipliers 416 and 428, the L input is applied to the other inputs of multipliers 424 and 420, the K input is applied to the other inputs of multipliers 418 and 430 and the M input is applied to the other inputs of the multipliers 426 and 422. A summer circuit 332 receives on respective noninverting and inverting inputs the outputs of multipliers 416 and 424, a summer 334 receives on respective noninverting and inverting inputs the output of multipliers 418 and 426, a summer 336 receives on noninverting inputs the output of multipliers 428 and 420 and the summer 338 receives on noninverting inputs the outputs of multipliers 330 and 322. The outputs of the summers 332, 334, 336 and 338 provide the transformed J, K, L and M parameters respectively. The operation of the circuitry of FIG. 12 is indicated in mathematical form by associated FIG. 12A. It can be seen there that because of the particular character of the parameters generated for elliptical curve sections a very few operations are required on these intermediate parameters to provide any specified angle of rotation about the initial point X0, Y0. For linked strokes each successive initial point is taken from the terminal point of the preceding section. The rotation is without distortion and is thus invariant to initial stroke position.

Referring now to FIG. 13, predetermined quarter turn rotations and reflections are possible with the simplified system presented there. Each of the original J, L, K and M parameters are applied to predetermined switches in a switch matrix 440 and are further applied through logical negating circuits 442, 444, 446 and 448 which provide outputs that are the mathematical negative of the input magnitude. Each of the negating circuits 442-448 also provide this output to predetermined switches in the matrix 440 as indicated in FIG. 13. The switches in the matrix 440 are controlled by eight input controllers 450, 452, 454, 456, 458, 460, 462 and 464. The table of FIG. 13A indicates the various rotations and reflections upon the character P when each of the eight control inputs operative to produce a rotation are activated to close the switches which they control. The eighth control 364 provides direct pass-through without transformation.

In FIG. 14 an operation for producing an increase or decrease in the size of the generated stroke is provided by a scaling transformation wherein a predetermined scale factor 471 is applied to inputs of multipliers 470, 472, 474 and 476. The other inputs of these multipliers are supplied with the J, K, L, M intermediate parameters and the outputs respectively provide the transformed parameters. FIG. 14A represents the mathematical operations involved.

Referring to FIG. 15 an offsetting transformation is indicated for operation on the X0 and Y0 initial point coordinates supplied from the data converter. The X0 and Y0 coordinates are applied to noninverting inputs of respective summing circuits 480 and 486. An X offset source 488 provides an offset signal to noninverting input of summing circuit 480, and a Y offset source 490 provides a Y offset signal to noninverting inputs of summing circuit 486. The summing sircuits 480 and 486 provide respectively the transformed X0 and Y0 coordinate signals as indicated in FIG. 15 for positioning the curve and all subsequent curves to a different location.

Referring now to FIG. 16 a clipping circuit for use in the function generator of FIG. 11 is indicated for the purpose of inhibiting the generation of displays except between predetermined X and Y limits. The sources 390, 392, 396, and 394 for the respective X minimum, X maximum, Y maximum and Y minimum signals, as selected by associated controls, are directed respectively to comparator circuits 492, 494, 496 and 498 on reference inputs. The X(t) control signal is applied to comparison inputs of the comparators 492 and 494 and the Y(t) control signal is applied to comparison inputs of the comparators 496 and 498. The comparators 492-498 indicate when the corresponding X and Y signals exceed the maximum and minimum limits and produce a signal indicative of that condition. The outputs are combined and applied to the mark inhibit circuit 100 to produce blanking by the display whenever the signal exceeds those limits. The combined comparator outputs are also applied to the switch 109 of the function generator velocity control circuit 102 to cause full velocity operation of the sine and cosine function generators until the X and Y signals are again within the preselected bounds thereby minimizing the amount of time employed for the generation of curves which are not displayed.

Referring now to FIG. 17 the operation of the display system for producing displays of preselected symbols and characters is indicated. A digital code representative of the character or symbol to be displayed is applied in a memory 449 to a pointer table 500 which responds to the code to call a pointer to a predetermined address in memory 502. The memory 502 responds to the pointer as an address for stored instruction sets which govern the strokes used to display each character. The typical instruction set indicated in memory 502 includes a control word (C) followed by J, K, L, M or X and Y parameters. The control word can indicate a curve, a positioning move, or an exit followed respectively by J, K, L and M parameters, X and Y positions, or the end of the set. The contents of the first five instruction words are applied in processor 503 to a multiplexer 504 where the control word is applied to a decoder 505 to indicate which possible motion is required. If a curve is to be generated the decoder signals a gate 506 to apply the succeeding 4 words in memory to J, K, L and M registers 507 for application to the curve generator, and advances a counter 508 five steps to cause multiplexer 504 to receive the next five instructions. If the control is a position signal, gate 506 directs the next two words to X0 and Y0 registers 509 and 510 to set new initial positions. The counter 508 in this case is advanced only three steps. An exit control signal causes the counter 508 to be reset. Decoder 505 also provides a start signal to the generator 512 for curve generation control. Standard clocking control is applied to processor 503 from generator 512 stop signals to sequence each stroke. The J, K, L and M parameters for the generator 506 are provided through a scaling circuit 514 such as that indicated in FIG. 14. A predetermined reduction factor is provided by the scaling circuit 514 to cause a transformation reducing the scale size of the generated characters. This enables the characters to be generated on a greater scale for which a greater number of digital numbers are available for the J, K, L and M parameters to provide a greater flexibility to the strokes which can be used to compile the individual characters. The X and Y parameters may also be directed through scaling circuit 514 prior to registers 509 and 510 if they are stored in memory 502 on an expanded scale. Initial position X0 and Y0 signals are received by registers 509 and 510 which respond to the stop signal from the generator 512 to store the value of the X(t) and Y(t) signals from the function generator 512 when curves are generated so that the end point of each curve becomes the initial point for the next curve. The decoder 505 provides an output start signal for the time controller of the function generator to initiate the subsequent stroke after the multiplexer 510 has been indexed to the next set of stored parameters and they have been stored in the appropriate registers.

With the structure of FIG. 17 highly complex characters including complex ideographs can be generated on the basis of stored instructions called up by simple code words. The power of the generator in providing characters from successive strokes of elliptic sections is increased in flexibility by initially generating the control parameters for the characters on a scale larger than intended for display. This flexibility permits very subtle style changes as may be desired by the user.

The above described systems for producing display or tool control strokes have been generally related to the use of a hard wired system of digital logic or analog circuits. It is of course apparent to those skilled in the art that the display user will want to employ stored program control over the display or tool control functions in order to have the greater flexibility of changing the stored instruction sets at will. Accordingly, in FIG. 18 a block diagram of the computerized system according to the invention is indicated. An input keyboard 550 is provided which may typically be one of the commonly employed tele-typewriter keyboard-printer combinations frequently employed to provide data to a mini-computer 552. Computer 552 may typically be the model PDP-11 of the Digital Equipment Corporation in Maynard, Massachusetts. The keyboard 550 is used to provide the point and slope input information to the computer 552 which in turn provides the data conversion indicated for the cases I-V presented above or provides additional control functions as may be desired. The computer 552 may also incorporate the mathematical equations which provide for rotation, scaling or offsetting as indicated for the transformation processor in FIG. 11. Alternatively the transformations may be accomplished in a processor 554 which receives the J, K, L and M parameter outputs of the computer 552 as well as the X0 and Y0 initial points where appropriate. Typically, the processor 554 will have a plurality of registers 556, 558, 560, 562, 564 and 566 which are loaded respectively with the J, K, L and M parameters and the X0 and Y0 parameters provided on the output data buses from the mini-computer 552. These registers then provide storage for the four parameters plus initial points applied to a function generator 568 which may be any of the designs indicated above. The computer output data bus is also tied into the generator 568 for start and stop information as well. The X and Y time varying output signals from the generator 568 are applied to a display system 570 as desired.

While a complete set of program listings in the FORTRAN language for use with computers accepting that language are presented in Appendix A it is instructive to discuss here in detail the programming operation for case II in a situation where a sequence of linked strokes are to be displayed with continuity and smoothness between the strokes provided by matching the beginning and ending slopes for adjacent strokes as can be done using the case II conversions. In this case FIG. 19 provides a detailed flow chart governing the operation of the computer 552 for this mode of operation. In particular, in FIG. 19 the computer 552 is programmed to operate from an initiallization operation 580. A subsequent operation 582 responds to input data indicative of the initial slope S0 for point P0 as may be entered from the keyboard 550 or other data sources such as on line processors or disk and tape readers 584 in FIG. 18. Operation 582 also reads in the X and Y coordinates for the beginning and ending points of the intermediate point for the case II conditions. A subsequent operation 584 computes the A, B, C, D, and E intermediate variables according to case II. A decision 586 follows which tests the value of E and if E is determined to be between zero and one in value a subsequent operation 588 is entered in which the variable F and the ultimate J, K. L and M output parameters are computed. A subsequent operation 590 provides the formatting as is appropriate for application to registers for purposes of display using known formatting techniques. A subsequent operation 592 sends that set of display parameters to the processor 554 for application to the appropriate registers and a subsidiary operation 594 results in the display of data by the generator 568 and display 570. Subsequent to operation 592 an operation 596 computes the slope of the end points for that quarter cycle stroke as the ratio of the M and K parameters. That slope is then identified as S0, the initial slope for the next section. Operation 598 accepts two new points and, a subsequent decision 600 determines whether zero, one or two points have been received by the computer. If both points have been received processing returns to operation 584, if no points have been received, there is an indication of the end of the sequence of strokes and decision 600 leads to end status 602. If only one point is provided an operation 604 is entered based on the assumption that the next section will be specified according to case I. An operation 604 reads in the slope for the terminal point of that section as S1. The one point received is redefined as the terminal point and operation 606 is entered in which the A, B, J, K, L and M parameters are calculated according to case I conversion. Subsequent to operation 606, operation 590 is entered to provide for the formatting of the calculated parameters for purposes of display.

If, in decision 586, the intermediate variable E was outside the range of zero to one, indicating bad data, an operation 610 is entered to cancel the last two points and to inform the operator that an additional two points must be supplied in order to satisfy the constraints of the particular mathematics being employed. Processing returns to operation 598.

Referring now to FIG. 20 a three dimensional rotation display processor is indicated and may be employed with a three dimensional tool controller or display having a Z axis input. The J, K, L and M signals are applied to a multiplexer 612 through a presettable decoder 616. Multiplexer 512 also receives N and P signals representing deflection coefficients which are initially set to zero. During the initial state of counter 614, multiplexer 612 connects these inputs to a set of registers 618 for application to a plurality of gates 620, 622, and 624 for respective rotation about X, Y and Z axes. Gate 620 receives L, M, N and P signals and is controlled through decoder 616 to apply these inputs to a rotation transformation circuit 626 for rotation about the X axis by an angle .sigma. from source 628. J and K signals are applied directly to a network 638 by gate 620. Gate 622 receives J, K, N and P signals for controlled application to a rotation transformation circuit 630 for rotation about the Y axis by an angle .phi. from source 632. Gate 622 receives the L and M signals for direct application to network 638. Similarly gate 624 receives J, K, L and M signals for controlled application during a selected state of counter 614 to a Z axis rotation transformation circuit 634 which produces Z axis rotation by an angle .theta. from source 636. Gate 624 applies the N and P signals directly to network 638. Circuits 626, 630 and 634 may use the identical components as the circuit of FIG. 12, the interconnections being arranged to produce the following transformed outputs.

Circuit 626 L'=Lh-Ng g=sin.sigma. M'=Mh-Dg h=cos.sigma. N'=Nh+Lg P'=Ph+Mg Circuit 630 J'=Jf-Ne e=sin.phi. K'=Kf-Pe f=cos.phi. N'=Nf+Je P'=Pf+Ke Circuit 634 J'=Jd-Lc c=sin .theta. K'=Kd-Mc d=cos.theta. L'=Ld+Jc M'=Md+Kc

The transformed J, K, L, M, N and P parameter signals are applied to OR network 638 where signals of the same letter designation are applied to an OR gate to produce a single output for each parameter. These combined outputs are applied to multiplexer 612 where, during the states of counter 614 subsequent to the first, they are applied to registers 618 for recycling of the signals through a different rotation circuit to produce further rotation about an orthogonal angle. Since the order of rotation about the three angles is significant, decoder 616 is settable to alter which angle of rotation is performed first and which is performed second. The decoder then responds to the first three states of counter 614 to direct the parameter signals to the appropriate rotation circuit during each cycle.

The transformed parameters J, K, L and M from network 636 are applied to an X, Y generator 640 of the type indicated above while the N and P parameters are applied to a generator 642, essentially a single channel of the above shown generators to produce a Z(t) signal according to the function:

Z(t)=N[cos(t)-1]+Psin(t)+ZO

The resulting X, Y, and Z signals are applied to respective inputs of a display or tool controller.

The three dimension case of FIG. 20 can be generalized to any number of dimensions where desired for specific applications.

Having described above specific implementations of a preferred embodiment for the present invention it will occur to those skilled in the art that modifications and alterations can be made to the disclosed structure without departing from the spirit of the invention. It is accordingly intended to limit the scope of the invention only as indicated in the following claims.

APPENDIX A

FORTRAN LISTINGS FOR COMPUTE 552

100 subroutine crv22 (xend,yend,sbeg,send)

110 common xbeg,ybeg

120 if (sbeg.eq.send) go to 10

130 a=xend-xbeg

140 b=yend-ybeg

150 aj=(a*sbeg-b)/(send-sbeg)

160 ak=a+aj

170 al=send*aj

180 am=b+al

190 itype=1

200 call typcrv (aj,ak,al,am,itype)

210 return

220 10 print, "error: sbeg=send"

230 return

240 end

400 subroutine crv3b (xinter,yinter,xend,yend,sbeg)

410 common xbeg,ybeg

420 a=xend-xbeg

430 b=yend-ybeg

440 c=xend-xinter

450 d=yend-yinter

460 e=((sbeg*c-d)/(sbeg*a-b))**2

470 if (e.gt.1. ) go to 10

480 f=sqrt (1.-e)

490 ak=(a*e-c)/(e+f-1. )

500 aj=ak-a

510 am=sbeg*ak

520 al=am-b

530 itype=1

540 call typcrv (aj,ak,al,am,itype)

550 return

560 10 print, "error: pt of inflection btwn beg+inter pt"

570 return

580 end

700 subroutine crv3i (xinter,yinter,xend,yend,sinter)

710 common xbeg,ybeg

720 a=xend-xbeg

730 b=yend-ybeg

740 c=xinter-xbeg

750 d=yinter-ybeg

770 ap=yend-sinter*xend

780 bp=yinter-sinter*xinter

790 cp=ybeg-sinter*xbeg

800 dp=(cp-bp)/(ap-bp)

810 if (dp.lt.0.) go to 10

820 e=(1.-dp+dp*sqrt(2.*dp))/(dp**2+1.)

830 f=sqrt (1.-e**2)

840 aj=(c-a*f)/(e+f-1.)

850 al=(d-b*f)/(e+f-1.)

860 ak=aj+a

870 am=al+b

880 itype=1

890 call typcrv (aj,ak,al,am,itype)

900 return

910 10 print, "error: routine crv3i"

920 return

930 end

1100 subroutine crv3e (xinter,yinter,xend,yend,send)

1110 common xbeg,ybeg

1120 a=xend-xbeg

1130 b=yend-ybeg

1140 c=xinter-xbeg

1150 d=yinter-ybeg

1160 e=((send*c-d)/(send*a-b))**2

1170 if (e.gt.1.) go to 10

1180 f=sqrt(1.-e)

1190 ak=(a*f-(xend-xinter))/(e+f-1.)

1200 aj=ak-a

1210 al=send*aj

1220 am=al+b

1230 itype=1

1240 call typcrv (aj,ak,al,am,itype)

1250 return

1260 10 print, "error: pt. of inflection btwn inter and end pt."

1270 return

1280 end

1400 subroutine crvmax (xmax,ymax,xend,yend)

1410 common xbeg,ybeg

1420 sinter=(yend-ybeg)/(xend-xbeg)

1430 call crv3i (xmax,ymax,xend,yend,sinter)

1440 return

1450 end

1600 subroutine circle (xctr,yctr,radius)

1620 x=xctr-radius

1630 call curset (x,yctr)

1640 aj=-radius

1650 ak=0

1660 al=0

1670 am=radius

1680 itype=4

1690 call typcrv (aj,ak,al,am,itype)

1700 return

1710 end

1900 subroutine semi (xend,yend,idirec)

1910 common xbeg,ybeg

1920 a=(xend-xbeg)/2.

1930 b=(yend-ybeg)/2.

1940 if (idirec.eq.1) go to 10

1950 aj=a

1960 ak=b

1970 al=b

1980 am=-a

1990 go to 20

2000 10 aj=a

2010 ak=-b

2020 al=b

2030 am=a

2040 20 itype=2

2050 call typcrv (aj,ak,al,am,itype)

2060 return

2070 end

2200 subroutine ellpsa (xctr,yctr,angle,amajor,aminor)

2210 r=(3.14159*angle)/180.

2220 aj=amajor*cos(r)

2230 ak=aminor*sin(r)

2240 al=amajor*sin(r)

2250 am=aminor*cos(r)

2260 itype=4

2270 x=aj+xctr

2280 y=al+yctr

2290 call curset (x,y)

2300 call typcrv (aj,ak,al,am,itype)

2310 return

2320 end

2500 subroutine ellpse (xctr,yctr,axend,ayend,algth)

2510 call curset (axend,ayend)

2520 a=ayend-yctr

2530 b=axend-xctr

2540 c=sqrt(a**2+b**2)

2550 al=a

2560 aj=b

2570 am=algth*(b/c)

2580 ak=-algth*(a/c)

2590 itype=4

2600 call typcrv (aj,ak,al,am,itype)

2610 return

2620 end

2800 subroutine vector (x,y)

2810 common xbeg,ybeg

2820 a=x-xbeg

2830 b=y-ybeg

2840 nodraw=0

2850 call vect (a,b,nodraw)

2860 return

2870 end

3000 subroutine curset (x,y)

3010 common xbeg,ybeg

3020 a=x-xbeg

3030 b=y-ybeg

3040 nodraw=128

3050 call vect (a,b,nodraw)

3060 return

3070 end

3200 subroutine vect (x,y,nodraw)

3210 common xbeg,ybeg,jptr,nbfsiz

3220 if ((nbfsiz-jptr).lt.2) call output

3230 call shtfmt (x,0)

3240 call shtfmt (y,nodraw)

3250 n=8

3260 10 call rndoff (x,y,n)

3270 xbeg=x

3280 ybeg=y

3290 return

3300 end

3500 subroutine finish

3510 common xbeg,ybeg,jptr,nbfsiz,nbuff(1000)

3515 data i1, i2,i3/0300,0222,0214/

3520 if ((nbfsiz-jptr).lt.3) call output

3530 nbuff(jptr)=i1

3540 nbuff (jptr+1)=i2

3550 nbuff(jptr+2)=i3

3560 call output

3570 return

3580 end

3700 subroutine disply

3710 common xbeg,ybeg,jptr,nbfsiz,nbuff(1000)

3715 data i1,i2,i3/0300,0301,0203/

3720 if ((nbfsiz-jptr).lt.3) call output

3730 nbuff(jptr)=i1

3740 nbuff(jptr+1)=i2

3750 nbuff(jptr+2)= i3

3760 call output

3770 return

3780 end 3900 subroutine point (x,y)

3910 call curset(x,y)

3920 call vector (x,y)

3930 return

3940 end

4100 subroutine rotate (nrotfl,n,xrot,yrot,angle)

4110 common xbeg,ybeg

4120 dimension nrotfl(n)

4130 data mask/0200/

4140 phi=(3.14159*angle)/180.

4150 sinphi=sin(phi)

4160 cosphi=cos(phi)

4170c find new starting point

4180 a=xbeg-xrot

4190 b=ybeg-yrot

4200 x=a*cosphi-b*sinphi

4210 y=b*cosphi+a*sinphi

4220 nodraw=128

4230 call vect (x,y,nodraw)

4240 i=1

4250 10 if (i.gt.n) return

4260 20 j=and(nrotfl(i),mask)

4270 if (j.ne.0) go to 50

4280c vector

4290 nodraw=and(nrotfl(i=1),mask)

4300 call xtract (nrotfl(i),a)

4310 call xtract (nrotfl(i+1),b)

4320 deltax=a*cosphi-b*sinphi

4330 deltay=b*cosphi+a*sinphi

4340 call vect (deltax,deltay,nodraw)

4350 i=i=2

4360 go to 10

4370c curve

4380 50 l=and(nrotfl(i=2),mask)

4390 m=and(nrotfl(i=3),mask)

4400 itype=l/128+m/128+1

4410 call xtract(nrotfl(i),a)

4420 call xtract (nrotfl(i=1),b)

4430 call xtract (nrotfl(i=2),c)

4440 call xtract (nrotfl(i=3),d)

4450 aj=a*cosphi-c*sinphi

4460 ak=b*cosphi-d*sinphi

4470 al=a*sinphi+c*cosphi

4480 am=b*sinphi+d*cosphi

4490 call typcrv (aj,ak,al,am,itype)

4500 i=i=4

4510 go to 10

4520 end

4700 subroutine xtract (i,a)

4710 data mask1,mask2/0100,077/

4720 j=and(mask1,i)

4730 k=and(mask2,i)

4740 b=k

4750 if (j.ne.0) b=-(64-k)

4760 a=b/8.

4770 return

4780 end

5000 subroutine init (iscale)

5010 common xbeg,ybeg,jptr,nbfsiz,nbuff(1000)

5020 dimension i(18)

5030 data (i(k),k=1,9)/0202,0233,0300,0300,0301,0230,0301,0266,0000/

5040 data (i(k),k=10,18)/ 0,0300,0234,00,0,0,0,0300,0236/

5050 do 20 k=1,18

5060 20 nbuff (k)=i(k)

5070 nbuff(10)=iscale*8

5080 jptr=19

5090 xbeg=0.

5100 ybeg=0.

5110 return

5120 end

10000 subroutine shtfmt (a,n)

10010 common xbeg,ybeg,jptr,nbfsiz,nbuff(1000)

10020 data mask /0177/

10030 l=a*8.

10040 i=and(mask,l)

10050 nbuff(jptr)=i+n

10060 jptr=jptr+1

10070 10 return

10080 end 10200 subroutine rndoff (a,b,n)

10210 i=a*n

10220 j=b*n

10230 c=n

10240 a=i/c

10250 b=j/c

10260 10 return

10270 end

10400 subroutine typcrv (aj,ak,al,am,itype)

10410 common xbeg,ybeg,jptr,nbfsiz

10420 if ((nbfsiz-jptr).lt.4) call output

10430 j=128

10440 k=0

10450 n=8

10460 go to (31,32,33,34),itype

10470 31 l=0

10480 m=0

10490 go to 40

10500 32 l=0

10510 m=128

10520 go to 40

10530 33 l=128

10540 m=0

10550 go to 40

10560 34 l=128

10570 m=128

10580 40 call shtfmt (aj,j)

10590 call shtfmt (ak,k)

10600 call shtfm (al,l)

10610 call shtfmt (am,m)

10620 50 call rndoff (aj,ak,n)

10630 call rndoff (al,am,n)

10640 go to (61, 62, 63, 64), itype

10650 61 xbeg=xbeg-aj+ak

10660 ybeg=ybeg-al+am

10670 return

10680 62 xbeg=xbeg- 2.*aj

10690 ybeg=ybeg-2.*al

10700 return

10710 63 xbeg=xbeg-aj-ak

10720 ybeg=ybeg-al-am

10730 64 return

10740 end

* * * * *


uspto.report is an independent third-party trademark research tool that is not affiliated, endorsed, or sponsored by the United States Patent and Trademark Office (USPTO) or any other governmental organization. The information provided by uspto.report is based on publicly available data at the time of writing and is intended for informational purposes only.

While we strive to provide accurate and up-to-date information, we do not guarantee the accuracy, completeness, reliability, or suitability of the information displayed on this site. The use of this site is at your own risk. Any reliance you place on such information is therefore strictly at your own risk.

All official trademark data, including owner information, should be verified by visiting the official USPTO website at www.uspto.gov. This site is not intended to replace professional legal advice and should not be used as a substitute for consulting with a legal professional who is knowledgeable about trademark law.

© 2024 USPTO.report | Privacy Policy | Resources | RSS Feed of Trademarks | Trademark Filings Twitter Feed