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
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
* * * * *