Title:

United States Patent 3723803

Abstract:

A system for automatically generating, displaying and animating two-dimensional figures comprising straight line segments, animations of the figures including gross size, gross position, shape and rotational animation sequences. Means are also provided for maintaining the figure closed through any animation sequence and establishing boundary conditions for the figure.

Inventors:

Harrison III, Lee (Englewood, CO)

Wells, Frank David (Denver, CO)

Honey, Francis J. (Denver, CO)

Wells, Frank David (Denver, CO)

Honey, Francis J. (Denver, CO)

Application Number:

05/052389

Publication Date:

03/27/1973

Filing Date:

07/06/1970

Export Citation:

Assignee:

COMPUTER IMAGE CORP,US

Primary Class:

Other Classes:

345/656

International Classes:

Field of Search:

315/18,22,26,27 340

View Patent Images:

US Patent References:

3594756 | CRT CURVED CHARACTER GENERATOR | 1971-07-20 | Granberg | |

3555538 | N/A | 1971-01-12 | Henderson et al. | |

3539860 | VECTOR GENERATOR | 1970-11-10 | Max et al. | |

3364382 | Automatic generation and display of animated figures | 1968-01-16 | Harrison |

Primary Examiner:

Quarforth, Carl D.

Assistant Examiner:

Potenza J. M.

Claims:

What is claimed is

1. A system for generation, display and animation of two-dimensional figures comprising a display device for displaying the animated figure in response to coordinate inputs to the display device, means for generating first and second coordinate voltages for each line segment of the figure to be displayed, means for sequentially applying the first and second coordinate voltages to the coordinate inputs to the display device for sequential generation of the line segments of the figure, and means for animating the figure which last-named means comprises manually variable input means for defining the first and second coordinate voltages for each line segment of the figure to be displayed, whereby manual operation of selected ones of the manually variable input means over a given interval of time produces corresponding changes in the coordinate voltages being generated and hence the form of the figure being displayed over that same interval of time.

2. The system of claim 1 including a timing gate generator for generating a sequence of pulses to define a complete generation cycle, the number of the pulses being at least as great as the number of line segments in the figure to be displayed, means for establishing coordinate voltages for each line segment of the figure, means for gating the coordinate voltages in response to the sequential pulses of the timing gate generator for sequential generation of the line segments of the figure.

3. The system of claim 1 including means for regulating the intensity of each line segment.

4. The system of claim 2 including means for regulating the beam intensity of the display device for each of the line segments, the intensity means including means for establishing voltage inputs defining the intensity of each of the line segments, and means for gating the intensity voltages in response to the sequential pulses of the time gate generator for controlling the intensity of each line segment as it is generated.

5. The system of claim 1 including means for varying the gross position of the figure on the display device, which last-named means includes means for generating gross position voltage functions, and means for selectively adding the gross position voltage functions to the first and second coordinate voltages

6. A system for generation, display and animation of two-dimensional figures comprising a display device for displaying the animated figure in response to coordinate inputs to the display device, means for generating first and second coordinate voltages for each line segment of the figure to be displayed, means for sequentially applying the first and second coordinate voltages to the coordinate input to the display device for sequential generation of the line segments of the figure, means for selectively varying one or more of the first and second coordinate voltage over time thereby changing the form of the figure and producing animation, and means for automatically closing the figure as one or more first and second coordinate voltages are varied.

7. The system of claim 6 wherein the closing means includes means for automatically generating the last line segment of the figure to join the end of the second to last line segment to the end of a selected one of the previously generated line segments.

8. The system of claim 7 wherein the closing means further includes means for tracking the first and second coordinate waveforms of the selected one line segment and the second to last line segment of the figure, and for holding the voltage values corresponding to the ends of the selected one line segment and the second to last line segment, and means for generating a signal equal to the algebraic difference between the voltage values corresponding to the selected one line segment and the second to last line segment for use in generating the last line segment of the figure.

9. The system of claim 5 including means for rotating the figure about its point or origin, whereby the displayed figure can be made to roll across the screen of the display device.

10. The system of claim 9 wherein the rotating means includes means for transforming the first and second coordinate voltages to a second coordinate system rotated through a prescribed angle with respect to the original coordinate system, and means responsive to a voltage input function for defining the angle of rotation, whereby a variation in the voltage input produces a corresponding change in the angle of rotation.

11. A system for generation, display and animation of two-dimensional figures comprising a display device for displaying the animated figure in response to coordinate inputs to the display device, means for generating first and second coordinate voltages for each line segment of the figure to be displayed, means for sequentially applying the first and second coordinate voltages to the coordinate inputs of the display device for sequential generation of the line segments of the figure, means for selectively varying one or more of the first and second coordinate voltages thereby changing the form, size or position of the figure being displayed, and means for establishing boundary conditions that the figure cannot exceed as it is being animated.

12. The system of claim 11 wherein the boundary means includes means for generating signals defining the boundary conditions, means for detecting the coordinate voltages corresponding to the maximum degree the figure exceeds the boundary conditions, means for generating offset voltages equal to the difference between the detected voltages and the boundary condition voltages, and means for adding the offset voltages to the coordinate voltages as the figure exceeds the boundary conditions.

13. The system of claim 12 wherein the detecting means includes peck detectors for detecting and holding the voltages corresponding to the maximum degree the figure exceeds the boundary condition during one generation cycle.

14. The system of claim 13 wherein the boundary means includes dual networks for generating the offset voltages on alternate generation cycles.

15. A method of generating, displaying and animating two-dimensional figures comprising the steps of generating first and second coordinate voltages defining each line segment of the figure to be displayed, each of which coordinate voltages is established by manually variable input means, sequentially applying the first and second coordinate voltages to coordinate inputs of a display device for sequential generation of the line segments of the figure, and manually varying selected ones of the manually variable input means over a given time interval to animate the figure by producing corresponding changes in the coordinate voltages over the same time interval.

16. The method of claim 15 including the step of automatically closing the figure as one or more first and second coordinate voltages are varied.

17. The method of claim 16 wherein the closing step includes the step of automatically generating the last line segment of the figure to join the end of the second to last line segment to the end of a selected one of the previously generated line segments.

18. The method of claim 17 wherein the closing step further includes tracking the first and second coordinate waveforms of the selected one line segment and the second to last line segment of the figure, holding the voltage values corresponding to the ends of the selected one line segment and the second to last line segment, generating a signal equal to the algebraic difference between the voltage values corresponding to the selected one line segment and the second to last line segment, and generating the last line segment as defined by the algebraic difference signal for automatically closing the figure.

19. The method of claim 15 including the step of establishing boundary conditions that the figure cannot exceed as it is animated.

20. The method of claim 19 wherein the establishing step includes the steps of generating signals defining the boundary conditions, detecting the coordinate voltages corresponding to the maximum degree the figure exceeds the boundary conditions, generating offset voltages equal to the difference between the detected voltages and the boundary condition voltages, and adding the offset voltages to the coordinate voltages as the figure exceeds the boundary conditions.

21. The method of claim 20 wherein the establishing means further includes the step of generating offset voltages for each generation cycle.

22. A method of generating, displaying and animating two-dimensional figures comprising the steps of generating first and second coordinate voltages defining each line segment of the figure to be displayed, sequentially applying the first and second coordinate voltages to coordinate inputs of a display device for sequential generation of the line segments of the figure, and automatically generating the last line segment of the figure to join the end of the second-to-last line segment to the end of a selected one of the previously generated line segments which last step further comprises tracking the first and second coordinate waveforms of the selected one line segment and the second-to-last line segment of the figure, holding the voltage values corresponding to the ends of the selected one line segment and the second-to-last line segment, generating a signal equal to the algebraic difference between the voltage values corresponding to the selected one line segment and the second-to-last line segment, and generating the last line segment as defined by the algebraic difference signal for automatically closing the figure.

23. A system for generation, display and animation of two-dimensional figures comprising a display device for displaying the animated figure in response to coordinate inputs to the display device, means for generating first and second coordinate voltages for each line segment of the figure to be displayed, means for sequentially applying the first and second coordinate voltages to the coordinate inputs to the display device for sequential generation of the line segments of the figure, means for varying selected ones of the coordinate voltages to animate the display by changing over time its shape, size or position, and means for defining the first and second coordinate voltages for at least one line segment of the figure in response to the first and second coordinate voltages of one or more of the other line segments of the figure regardless of the variations of the selected ones of the coordinate voltages, whereby at least one line segment is automatically generated in relation to one or more of the other line segments as the figure is animated.

1. A system for generation, display and animation of two-dimensional figures comprising a display device for displaying the animated figure in response to coordinate inputs to the display device, means for generating first and second coordinate voltages for each line segment of the figure to be displayed, means for sequentially applying the first and second coordinate voltages to the coordinate inputs to the display device for sequential generation of the line segments of the figure, and means for animating the figure which last-named means comprises manually variable input means for defining the first and second coordinate voltages for each line segment of the figure to be displayed, whereby manual operation of selected ones of the manually variable input means over a given interval of time produces corresponding changes in the coordinate voltages being generated and hence the form of the figure being displayed over that same interval of time.

2. The system of claim 1 including a timing gate generator for generating a sequence of pulses to define a complete generation cycle, the number of the pulses being at least as great as the number of line segments in the figure to be displayed, means for establishing coordinate voltages for each line segment of the figure, means for gating the coordinate voltages in response to the sequential pulses of the timing gate generator for sequential generation of the line segments of the figure.

3. The system of claim 1 including means for regulating the intensity of each line segment.

4. The system of claim 2 including means for regulating the beam intensity of the display device for each of the line segments, the intensity means including means for establishing voltage inputs defining the intensity of each of the line segments, and means for gating the intensity voltages in response to the sequential pulses of the time gate generator for controlling the intensity of each line segment as it is generated.

5. The system of claim 1 including means for varying the gross position of the figure on the display device, which last-named means includes means for generating gross position voltage functions, and means for selectively adding the gross position voltage functions to the first and second coordinate voltages

6. A system for generation, display and animation of two-dimensional figures comprising a display device for displaying the animated figure in response to coordinate inputs to the display device, means for generating first and second coordinate voltages for each line segment of the figure to be displayed, means for sequentially applying the first and second coordinate voltages to the coordinate input to the display device for sequential generation of the line segments of the figure, means for selectively varying one or more of the first and second coordinate voltage over time thereby changing the form of the figure and producing animation, and means for automatically closing the figure as one or more first and second coordinate voltages are varied.

7. The system of claim 6 wherein the closing means includes means for automatically generating the last line segment of the figure to join the end of the second to last line segment to the end of a selected one of the previously generated line segments.

8. The system of claim 7 wherein the closing means further includes means for tracking the first and second coordinate waveforms of the selected one line segment and the second to last line segment of the figure, and for holding the voltage values corresponding to the ends of the selected one line segment and the second to last line segment, and means for generating a signal equal to the algebraic difference between the voltage values corresponding to the selected one line segment and the second to last line segment for use in generating the last line segment of the figure.

9. The system of claim 5 including means for rotating the figure about its point or origin, whereby the displayed figure can be made to roll across the screen of the display device.

10. The system of claim 9 wherein the rotating means includes means for transforming the first and second coordinate voltages to a second coordinate system rotated through a prescribed angle with respect to the original coordinate system, and means responsive to a voltage input function for defining the angle of rotation, whereby a variation in the voltage input produces a corresponding change in the angle of rotation.

11. A system for generation, display and animation of two-dimensional figures comprising a display device for displaying the animated figure in response to coordinate inputs to the display device, means for generating first and second coordinate voltages for each line segment of the figure to be displayed, means for sequentially applying the first and second coordinate voltages to the coordinate inputs of the display device for sequential generation of the line segments of the figure, means for selectively varying one or more of the first and second coordinate voltages thereby changing the form, size or position of the figure being displayed, and means for establishing boundary conditions that the figure cannot exceed as it is being animated.

12. The system of claim 11 wherein the boundary means includes means for generating signals defining the boundary conditions, means for detecting the coordinate voltages corresponding to the maximum degree the figure exceeds the boundary conditions, means for generating offset voltages equal to the difference between the detected voltages and the boundary condition voltages, and means for adding the offset voltages to the coordinate voltages as the figure exceeds the boundary conditions.

13. The system of claim 12 wherein the detecting means includes peck detectors for detecting and holding the voltages corresponding to the maximum degree the figure exceeds the boundary condition during one generation cycle.

14. The system of claim 13 wherein the boundary means includes dual networks for generating the offset voltages on alternate generation cycles.

15. A method of generating, displaying and animating two-dimensional figures comprising the steps of generating first and second coordinate voltages defining each line segment of the figure to be displayed, each of which coordinate voltages is established by manually variable input means, sequentially applying the first and second coordinate voltages to coordinate inputs of a display device for sequential generation of the line segments of the figure, and manually varying selected ones of the manually variable input means over a given time interval to animate the figure by producing corresponding changes in the coordinate voltages over the same time interval.

16. The method of claim 15 including the step of automatically closing the figure as one or more first and second coordinate voltages are varied.

17. The method of claim 16 wherein the closing step includes the step of automatically generating the last line segment of the figure to join the end of the second to last line segment to the end of a selected one of the previously generated line segments.

18. The method of claim 17 wherein the closing step further includes tracking the first and second coordinate waveforms of the selected one line segment and the second to last line segment of the figure, holding the voltage values corresponding to the ends of the selected one line segment and the second to last line segment, generating a signal equal to the algebraic difference between the voltage values corresponding to the selected one line segment and the second to last line segment, and generating the last line segment as defined by the algebraic difference signal for automatically closing the figure.

19. The method of claim 15 including the step of establishing boundary conditions that the figure cannot exceed as it is animated.

20. The method of claim 19 wherein the establishing step includes the steps of generating signals defining the boundary conditions, detecting the coordinate voltages corresponding to the maximum degree the figure exceeds the boundary conditions, generating offset voltages equal to the difference between the detected voltages and the boundary condition voltages, and adding the offset voltages to the coordinate voltages as the figure exceeds the boundary conditions.

21. The method of claim 20 wherein the establishing means further includes the step of generating offset voltages for each generation cycle.

22. A method of generating, displaying and animating two-dimensional figures comprising the steps of generating first and second coordinate voltages defining each line segment of the figure to be displayed, sequentially applying the first and second coordinate voltages to coordinate inputs of a display device for sequential generation of the line segments of the figure, and automatically generating the last line segment of the figure to join the end of the second-to-last line segment to the end of a selected one of the previously generated line segments which last step further comprises tracking the first and second coordinate waveforms of the selected one line segment and the second-to-last line segment of the figure, holding the voltage values corresponding to the ends of the selected one line segment and the second-to-last line segment, generating a signal equal to the algebraic difference between the voltage values corresponding to the selected one line segment and the second-to-last line segment, and generating the last line segment as defined by the algebraic difference signal for automatically closing the figure.

23. A system for generation, display and animation of two-dimensional figures comprising a display device for displaying the animated figure in response to coordinate inputs to the display device, means for generating first and second coordinate voltages for each line segment of the figure to be displayed, means for sequentially applying the first and second coordinate voltages to the coordinate inputs to the display device for sequential generation of the line segments of the figure, means for varying selected ones of the coordinate voltages to animate the display by changing over time its shape, size or position, and means for defining the first and second coordinate voltages for at least one line segment of the figure in response to the first and second coordinate voltages of one or more of the other line segments of the figure regardless of the variations of the selected ones of the coordinate voltages, whereby at least one line segment is automatically generated in relation to one or more of the other line segments as the figure is animated.

Description:

BRIEF DESCRIPTION OF THE INVENTION

In general the system for generating, displaying and animating two-dimensional figures includes a cathode ray tube on which the figures are displayed. The cathode ray tube has inputs corresponding to the X, Y, and intensity parameter signals for each segment of the figure. Also included is a two-dimensional figure generator that sequentially generates signals defining each of the line segments of the figure, a timing gate generator which sequentially gates the signals generated by the two-dimensional figure generator, a closure circuit that automatically maintains the figure closed through any animation sequence, a rotation network that transposes the vectors corresponding to each of the line segments generated from one set of coordinants to a second set of coordinants, the second set being rotated at a prescribed angle with respect to the first set, thereby effectively imparting rotation to the figure, a boundary simulation network that establishes boundary conditions in the X and/or Y position to give the figure, in an animation sequence, the appearance of moving in a gravity field, a size-control network which can be used to change the total size of the figure in either the X direction or Y direction and a gross position network for changing the gross position of the figure on the CRT.

With the horizontal sweep of the cathode ray tube beam being thought of as movement in the X direction, and vertical movement of the beam thought of as a movement in the Y direction, the two-dimensional figure generator establishes signals for conventional horizontal and vertical movements of the cathode ray tube beam for generation of each line segment of the figure sequentially. Simultaneous with the generation of each line segment the two-dimensional figure generator generates a signal which is fed to the intensity input of the CRT for defining the intensity of each line segment. The sequential generation of each line segment is accomplished by programming the time gate generator to sequentially generate a series of pulses corresponding to the number of line segments in the figure. These pulses are used to gate commutators having X, Y, and intensity input voltages for generation of each line segment. As these voltages are gated through the commutators, they are integrated and applied to the X, Y, and intensity inputs of the CRT, thus generating the basic two-dimensional figure.

Rotation is imparted to the figure by feeding the X and Y signals for each of the line segments from the two-dimensional figure generator into a rotation network which modifies these signals by transforming them to a new coordinant system rotated through a prescribed angle to the coordinant system of the two-dimensional figure generator. This angle of rotation is defined by a voltage input to the rotation network. As the voltage input is varied, the angle of rotation is varied, and the figure is caused to rotate. Any means for varying this voltage can be used, including a time varying means.

The shape of the figure is changed by varying the X and Y voltage inputs to the commutators of the two-dimensional figure generator. A change in one or more of these voltages will impart a change in the angle and/or length of one or more line segments of the figure, thereby changing the shape of the figure. To maintain the figure closed during an animation that changes the shape of the figure, a closure circuit is provided that detects the final value of the first line segment generated and the final value of the second to last line segment generated and automatically generates X and Y signals for generation of the last line segment to automatically close the figure. This feature is particularly important where the animation sequence requires a continuing change in the shape of the figure.

The figure can be further animated by use of the size control network. By this network the X and Y signals for each of the line segments are multiplied by size control voltages from either a potentiometer input or a time varying input such as a ramp function. By appropriate selection of the size control voltage the gross size of the figure can be changed in a variety of animation sequences. For example, if a ramp function is used, the gain of the multiplier may be varied from 0 to a maximum producing a corresponding change in the size of the figure. Animation adds a three-dimensional effect, giving the appearance that the figure is moving away from the viewer as it becomes smaller and toward the viewer as it becomes larger.

Gross position animation is accomplished by adding a voltage at the X and Y inputs of the CRT to the X and Y signals from the figure generation network. These position voltages will simply move the origin of the figure causing movement of the figure on the viewing screen. Here again, a time varying function such as a ramp function can be used, in which case the figure can be made to move across the screen from a predetermined initial position to a predetermined final position. This feature can be very useful in an animation sequence such as for example, in combination with the rotation network to cause the figure to roll across the screen.

Included in this invention is a network for establishing simulated boundary conditions for the figure during an animation sequence. Examples are a floor or wall to give the figure the appearance of moving in a gravity field. If, for example, a square is made to roll across a floor the corners of the square must not drop below the level of the floor. Therefore, to simulate the floor condition an offset voltage is generated by the boundary simulator network of a value sufficient to lift the figure the exact amount necessary so that the corners of the square strike the floor as the square rotates. The boundary network includes peak detectors for detecting the negative peak voltage of the figure for each cycle of the figure generated, and means for generating an offset voltage equal to the difference between the peak detector voltage and a voltage defining the boundary condition. This offset voltage is then added to the appropriate coordinant voltage which in this case would be the Y coordinant voltage for application to the CRT.

As can be seen, any two-dimensional straight line figure can be generated by this technique, and, by appropriate combinations of the various animations techniques included in this invention, a great variety of animation sequences can be produced. By this invention, figures such as triangles, squares, parallelograms, and many others can be made to literally dance on the screen, taking on human characteristics. Much of the animation can be produced automatically by use of generators producing time-varying functions. However, animation can also be produced manually such as by the use of potentiometer inputs to provide the operator with great flexibility of artistic creation.

DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of the system of this invention;

FIG. 2 is a schematic diagram of the figure generator;

FIG. 3 is an example of the type of figure that can be generated, displayed and animated by the system of this invention and is used as an example to explain the operation of a portion of the system;

FIG. 4 are waveforms generated by the network of FIG. 2 in generating the square of FIG. 3;

FIG. 5 is a schematic diagram of the size control network;

FIG. 6 is a diagram used for describing a coordinate transformation;

FIG. 7 is a schematic diagram of the coordinate transformation network;

FIG. 8 is a schematic diagram of the boundary simulation network;

FIG. 9 is a square used in explaining the operation of the boundary simulation network of FIG. 8;

FIG. 10 are the waveforms generated by the network of FIG. 8 in producing the boundary conditions of FIG. 9;

FIG. 11 is a schematic diagram of the closure network; and

FIG. 12 is a drawing of a triangle used in explaining the operation of the closure network of FIG. 11.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

In FIG. 1 there is shown a general block diagram of the system of this invention. There is shown a timing gate generator 10 which, as will be described, operates as a master control for the operation of the system. Control signals from the output a of the timing gate generator 10 are fed through a cable 12 to a two-dimensional figure generator 14. It is the two-dimensional figure generator 14 that generates X coordinate, Y coordinate, and intensity signals for ultimate generation of the basic figure. The intensity signals for each line segment of the figure are fed through a conductor 16 to the intensity input E_{i} of a cathode ray tube (CRT) 18, the X coordinate signals are fed through a conductor 20, and the Y coordinate signals are fed through a conductor 22. The conductors 20 and 22 could be connected directly to the E_{x} and E_{y} inputs, respectively, of the CRT 18 to produce a display of a two-dimensional figure on the CRT; however, certain modifications are made to these signals before they are fed into the CRT 18, to provide a variety of animation modes. Hence, the X deflection signal on the conductor 20 is fed through a conductor 24 to the input a of a rotation network 30. Likewise, the Y output signal of the conductor 22 is fed through a conductor 32 to the input b of the rotation network 30. The rotation network 30 is a network that transforms the signals referenced by the original XY coordinate system to a new X'Y' coordinate system. As will be described, it is the rotation network 30 that imparts rotational animation to the figure.

The X' output signal from the rotational network 30 is fed through a conductor 34 and a conductor 35 to the input a of the summation amplifier 36. The summation amplifier 36 has an input b which receives a signal set by a potentiometer (not shown) through a conductor 40 representing the final X position of the figure. The summation amplifier 36 also has an input c connected by a conductor 42 to an X boundary simulation network 50. The network 50 has an input a connected by a conductor 52 and a conductor 53 to an output b of the timing gate generator 10, and an input b connected by a conductor 54 to the conductor 34. The conductor 54 carries the X' signals from the rotation network 30 to the input b of the network 50. As will be described, it is the X boundary simulator network 50, upon receiving a trigger pulse from the timing gate generator 10 through the conductors 52 and 53, that establishes X coordinate boundaries for the figure.

The signals representing Y' are fed through a conductor 60 and a conductor 62 to the input a of a summation amplifier 64. The amplifier 64 has an input b that receives a signal through a conductor 66 representing the final Y position of the figure, and an input c connected by a conductor 68 to a Y boundary simulation network 70. The network 70 has an input a connected by a conductor 72 and the conductor 53 to the output b of the timing gate generator 10. The network 70 also has an input b connected by a conductor 74 and the conductor 60 to the Y' output of the rotation network 30. As will be described, it is the Y boundary simulator network 70, upon receiving a trigger pulse from the timing gate generator 10 through the conductors 53 and 72, that establishes Y coordinate boundaries for the figure.

The output signals from the summation amplifier 36, which represent a varying relationship among the rotation animation signals X', the X boundary limitation signal, and a final X position signal, are fed through a conductor 76 to the input a of a size control network 80. The size control network 80 also has an input b connected by a conductor 82 to the output of the summation amplifier 64. The conductor 82 carries the signals representing a varying relationship among rotational animation Y' with boundary limitations and final Y position. The size control network 80 also has an input c which receives size control signals through a conductor 84. It is the size control network 80 that provides animation of the total size of the figure, this size animation being a function of the signals to the input c of the network 80. Signals representing rotation animation signals X', the X coordinate of each line segment with boundary limitations, a final X position signal, and size animation are fed through a conductor 88, to the input a of a summation amplifier 90. The summation amplifier 90 also has an input b that receives signals through a conductor 92 defining the gross X position of the image on the CRT 18. The signal from the summation amplifier 90 is fed through a conductor 94 to the E_{x} input of the CRT 18. Signals representing the Y position of each line segment of the figure, rotation animation signals Y' with boundary limitations, a final Y position signal, and size animation are fed through a conductor 96 to the input a of a summation amplifier 98. The summation amplifier 98 has an input b that receives signals through a conductor 100 defining the gross Y position of the image on the CRT 18. The output signals from the summation amplifier 98 are fed through a conductor 102 to the E_{Y} input of the CRT 18.

The timing gate generator 10 also has an output c connected by a cable 110 to the gate input of a closure circuit 112. It is the closure circuit 112 that automatically generates signals to close the figure as the shape of the figure is changed. The X coordinate signals on the conductor 20 are also fed through a conductor 114 to the closure circuit 112, and the Y coordinate signals on the conductor 22 are also fed through a conductor 116 to the closure circuit 112. The circuit 112 sends X and Y coordinate signals for automatic generation of the last line segment of the figure through the conductors 118 and 120, respectively, to the two-dimensional figure generator 14.

The technique of generating two-dimensional figures and animating these figures in a variety of animation modes has been generally described. A more detailed description of each of the major components of the system follows.

TWO-DIMENSIONAL FIGURE GENERATION

The circuit for the two-dimensional figure generator 14 is shown in more detail in FIG. 2. By this circuit, the line segments of the figure to be produced are generated in sequence by commutating voltages representing each line segment. Hence, there are shown three commutators, 150, 152, and 154. Each commutator has a plurality of potentiometer inputs. There are as many potentiometer inputs as there are line segments in the figure to be generated. In the commutator 150, a potentiometer input 156 sets the X voltage for the first line segment, a potentiometer input 158 sets the X voltage for the second line segment, a potentiometer input 160 sets the X voltage for the third line segment, and so on, to a potentiometer input 162 which sets the X voltage for the nth line segment of the figure. The commutator 150 also has a gate input for each of the potentiometer inputs 156-162. Hence, the potentiometer input 156 has associated with it a gate input 164, the potentiometer input 158 has associated with it a gate input 166, the potentiometer input 160 has associated with it a gate input 168, and the potentiometer input 162 has associated with it a gate input 170. When a gate pulse of a given width is fed into the gate input 164, the commutator 150 generates a voltage at an output conductor 172 equal to the potentiometer input voltage 156 for the duration of the gate pulse. When a gate pulse of a given width is fed into the input 166, the potentiometer input voltage 158 appears at the output conductor 172, and so on for each potentiometer input and its corresponding gate input. The sequence X signals generated by the commutator 150 is fed through the conductor 172 to an integrator 174. The integratated output from integrator 174 is fed through the conductor 20 which can be connected directly to the E_{x} input of the CRT 18, or to the input of an animation network such as the rotation network 30 or size control network 80.

A commutator 152 operates in exactly the same manner as the commutator 150, except it is used to commutate Y voltages. Hence, a potentiometer input 192 sets the Y voltage for the first line segment, a potentiometer input 194 sets the Y voltage for the second line segments, a potentiometer input 196 sets the Y voltage for the third line segment, and a potentiometer input 198 sets the Y voltage for the nth line segment of the figure. Associated with each of the potentiometer inputs 192 - 198, is a gate input. The potentiometer input 192 has associated with it a gate input 200, the potentiometer input 194 has associated with it a gate input 202, the potentiometer input 196 has associated with it a gate input 204, and the potentiometer input 198 has associated with it a gate input 206. Just as with the commutator 150 when a gate pulse is fed sequentially to each of the gate inputs 200 - 206, the corresponding potentiometer input signal is fed through the commutator 152 and an output conductor 208 to an integrator 210. The integrated output from the integrator 210 is fed through the conductor 22. Like the output from the integrator 174, the output from the integrator 210 can be fed directly to the E_{y} input of the CRT 18, or to the input of an animation network such as the rotational network 30 or size control network 80.

A commutator 154 operates in exactly the same manner as the commutators 150 and 152 except it is used to commutate intensity voltages. Hence, a potentiometer input 230 sets the intensity voltage for the first line segment, a potentiometer input 232 sets the intensity voltage for the second line segment, a potentiometer input 234 sets the intensity voltage for the third line segment, and a potentiometer input 236 sets the intensity voltage for the nth line segment. Associated with each of the potentiometer inputs 230 - 236 is a gate input. Hence, the potentiometer input 230 has associated with it a gate input 240, the potentiometer input 232 has associated with it a gate input 242, the potentiometer input 236 has associated with it a gate input 246. Just as with the commutators 150 and 152, when gate pulses of fixed width are sequentially fed into the gate inputs 240 - 246 of the commutator 154, the commutator 154 generates at its output the corresponding potentiometer input voltage. Because it is usually desirable to have a constant intensity level for each line segment on the CRT 18 and because a constant intensity is determined by a DC voltage, the sequential DC output voltages from the commutator 154 are fed through the conductor 16 directly to the E_{i} input of the CRT 18.

The appropriate voltage levels are now set for generation of each of the line segments of the figure; however, it is necessary to establish a time sequence for generating each of the line segments. This is accomplished by the timing gate generator 10. The timing gate generator 10 is a sequential pulse generator having a plurality of outputs 260, 262, 264, 266, and 268. There could be any number of outputs, the output 268 corresponding to the nth output. The generator 10 can be programmed to generate pulses of given widths in sequence at its outputs. The first pulse generated by the generator 10 will appear at the output 260 and be fed through a conductor 270 and a conductor 272 to the reset input of the integrator 174. The pulse on the conductor 270 is also fed through a conductor 274 to the reset input of the integrator 210. Hence, the pulse at the output 260 resets each of the integrators 174 and 210 to zero. The next pulse generated by the generator 10 appears at the output 262 and is fed through a conductor 276 and a conductor 277 to the gate input 164 of the commutator 150. The pulse on the conductor 276 is also fed through a conductor 278 to the gate input 200 of the commutator 152. The pulse on the conductor 276 is also fed through a conductor 280 to the gate input 240 of the commutator 154. Hence, the pulse at the output 262 of the generator 10 simultaneously gates each of the commutators 150, 152, and 154 to produce X, Y, and intensity signals for the generation of the first line segment. The next pulse generated by the generator 10 appears at the output 264 and is fed through a conductor 282 and a conductor 284 to the gate input 166 of the commutator 150. The pulse on the conductor 282 is also fed through a conductor 286 to the gate input 202 of the commutator 152. The pulse on the conductor 282 is also fed through a conductor 288 to the gate input 242 of the commutator 154. Hence, the pulse at the output 264 of the generator 10 simultaneously gates each of the commutators 150,152, and 154 to generate signals for generation of the second line segment. The third pulse generated by the generator 10 appears at the output 266 and is fed through a conductor 290 and a conductor 292 to the gate input 168 of the commutator 150. The pulse on the conductor 290 is also fed through a conductor 294 to the gate input 204 of the commutator 152. The pulse on the conductor 290 is also fed through a conductor 296 to the gate input 244 of the commutator 154. It is the pulse at the output 266 of the generator 10 that simultaneously gates the commutators 150, 152 and 154 to generate signals for generation of the third line segment. There may be any number of additional pulses from the generator 10 but the last or nth, pulse generated at the output 268 is fed through a conductor 298 and a conductor 300 to the gate input 170 of the commutator 150. The pulse on the conductor 298 is also fed through a conductor 302 to the gate input 206 of the commutator 152. The pulse on the conductor 298 is also fed through a conductor 304 to the gate input 246 of the commutator 154. It is the pulse at the output 268 of the generator 10 that simultaneously gates each of the commutators 150, 152 and 154 to generate signals for generation of the nth line segment. After the nth pulse is generated, the pulse sequence is repeated with the next pulse generated at the output 260 for resetting the integrators 174 and 210 to zero.

By way of example, the operation of the circuit of FIG. 2 will be explained for the generation and display of the square of FIG. 3 on the CRT 18. In FIG. 3, there is shown a square 305 with a center 306 and comprised of line segments 307, 308, 309, 310, and 311. The segment 307 is used to position the square so that the origin is at the center 306. Therefore, the center of the square is at the coordinate x = 0, y = 0, on the xy coordinates shown. The end of the first line segment 306 is a corner 314 of the figure, having coordinates x_{1} y_{1}. The end of the line segment 308 is a corner 316 having coordinates x_{2} y_{2}. The end of the line segment 309 is a corner 318 having coordinates x_{3} y_{3}. The end of the line segment 310 is a corner 320 having coordinates x_{4} y_{4}. Finally, the end of the line segment 311 is the corner 314 having coordinates x_{5} y_{5}. Because the FIG. 306 is a closed figure, the coordinates x_{5} y_{5} are the same as the coordinates x_{1} y_{1}. Because there are five line segments (307-311) that must be generated, each of the commutators 150,152 and 154 must have five potentiometer inputs and five gate inputs. Also, the timing gate generator 10 must have a total of six outputs, one for resetting the integrators 174 and 210, and five for gating the five potentiometer inputs to each of the commutators. The X voltages for generation of each of the line segments 307 - 311 are set on the potentiometer inputs to the commutator 150, the Y voltages are set on the potentiometer inputs to the commutator 152, and the intensity voltages are set on the potentiometer inputs to the commutator 154. The timing gate generator 10 is programmed to sequentially generate six pulses of equal width per cycle at its output.

The generation of the square of FIG. 3 can now be explained with reference to the wave forms of FIG. 4. The wave forms 322, 323, 324, 325, 326 and 327 are the sequential pulses generated at the six outputs of the timing gate generator 10. The first of these pulses as shown by the wave form 322, is the reset pulse for the integrators 174 and 210. The remaining pulses, as shown by wave forms 323 - 327, sequentially gate each of the commutators 150, 152 and 154. The output of the X commutator 150 for the entire cycle of the timing gate is shown by the wave form 328. During the reset pulse, as shown by the wave form 322, the signal of the wave form 328 is zero, since no line segments are generated when the integrators 174 and 210 are reset. The remainder of the wave form 328 represents the voltages set by the potentiometer inputs for the commutator 150, for generating the X signals for each of the line segments. The wave form 328 is integrated by the integrator 174 with the integrated output on the conductor 20 shown by the wave form 329. The reference level of the wave form 329 can be varied as will be hereinafter described to move the gross position of the square of FIG. 3 along the X axis.

For now, assume the origin of the square of FIG. 3 is zero, with respect to both the X and Y axis so that the reference level of the wave form 329 is zero.

The output of the Y commutator 152 for generating the square of FIG. 3 is shown by the wave form 330. Just as with the wave form 328, the wave form 330 is zero during the resetting of the integrators 174 and 210. The remainder of the wave form 330 represents the voltages set by the potentiometer inputs to the commutator 152 for generating the Y signals for each of the line segments. The wave form 330 as integrated by the integrator 210 is shown by the wave form 331. Again, assuming the origin of the square of FIG. 3 is zero, with respect to both the X and Y axis, the reference level of the wave form 331 is also zero.

Finally, the output from the commutator 154, representing the intensity of each of the line segments, is shown by the wave form 332. It can be seen from the wave form 332 that during a single generation cycle only the line segments 308 - 311 are intensified. The line segment 307 is not intensified, as it is used only to position the square with its origin at the center. In this example, the intensity level of all the sides of the square is held constant by the constant level of the wave form 332. If desired, of course, the potentiometers 230 - 236 could be adjusted to vary these intensities.

The wave forms 329, 331, and 332 can be applied directly to the E_{x}, E_{y} and E_{i} inputs, respectively, of the CRT 18 to produce the square of FIG. 3. Using this basic technique, any straight line, two-dimensional figure can be generated and displayed.

This invention also provides a means for animating the figure by varying one or more of the potentiometer inputs to the commutators 150 and 152. Obviously, variations in one or more of these inputs will change the shape of either or both of the X and Y coordinate waveforms, thereby causing a change of form in the figure. By manipulating these inputs as the timing gate generator 10 cycles, the operator of the system can animate the figure in a great variety of sequences that include variations in size, orientation, position and shape.

GROSS POSITION ANIMATION

Referring to FIG. 1 the summation amplifiers 36 and 64 and their corresponding inputs make up the circuit for adjusting the gross position of the image on the CRT 18. Each of the summation amplifiers 36 and 64 have inputs a, b, and c. The input a of the summation amplifier 36 is shown connected by the conductor 35 to the X' output from the rotation network 30. However, if the rotation network 30 is not used, the input a could be connected directly by the conductor 20 to the X output from the two-dimensional figure generator 14. The input b of the summation amplifier 36 is connected by the conductor 40 to an X gross position voltage function. The voltage function can be a constant voltage set by a potentiometer or a time varying function such as a ramp function. As previously stated, the input c of the summation amplifier 36 is connected to the output of the boundary simulation network 50 which will be hereinafter described in detail. Likewise, the input a of the summation amplifier 64 is shown connected by the conductor 62 to the Y' output of the rotation network 30. However, the input a could also be connected by the conductor 22 directly to the Y output of the two-dimensional figure generator 14. The input b of the summation amplifier 64 is connected by a conductor 66 to a Y gross position voltage function. This voltage function, like the X position voltage function, can be either constant or time varying. The input c to the summation amplifier 64 is connected by the conductor 68 to the boundary simulation network 70, which will be hereinafter described in detail. For now, the c inputs to the summation amplifiers 36 and 64 can be ignored. Although the outputs of the summation amplifiers 36 and 64 are shown connected by the conductors 76 and 82, respectively, to the size control network 80, these outputs could be connected directly to the E_{x} and E_{y} inputs, respectively, of the CRT 18. With the system so connected, the gross position of the total figure generated by the two-dimensional figure generator 14 can be varied in the X direction by varying the voltage at the input b of the summation amplifier 36, this voltage being added to the X coordinate waveform voltages from the generator 14, or the Y direction by varying the voltage at the input b of the summation amplifier 64, this voltage being added to the Y coordinate waveform voltages from the generator 14. By using various combinations of voltages at the b inputs of the summation amplifiers, a variety of gross position animation sequences is obtained. For example, if potentiometer inputs are used, these potentiometers can be varied to position the figure anywhere on the CRT 18. If ramp functions are used, the figure can be made to move across the screen between a predetermined starting position to a predetermined final position.

SIZE ANIMATION

The size of the figure can be varied by use of the size control network shown in more detail in FIG. 5. The size control network 80 includes analog multipliers 336 and 338 each having inputs a and b. The a inputs can receive signals from a variety of sources including the X and Y coordinate waveforms on the conductors 20 and 22 from the two-dimensional figure generator 14, or the output from the summation amplifiers 36 and 64, depending on the network configuration used. The input b of the multiplier 336 is connected by a conductor 340 and the conductor 84 to a size control voltage function 342. The input b of the multiplier 338 is connected by a conductor 341 and the conductor 84 to the size control voltage function 342. The signals at the output conductors 88 and 96 of the multipliers 336 and 338, respectively, are the product of the signals at the inputs a and b. Hence, the size control voltage function is fed through the conductors 84 and 340 to the input b of the multiplier 336 where it is multiplied by the signals at the input a of the multiplier 336 to produce the output signals on the conductor 88. The size control voltage is also fed through the conductors 84 and 341 to the input b of the analog multiplier 338 where it is multiplied by the signals at the input a of the multiplier 338 to produce the output signals on the conductor 96. A variation in the control voltage 342 produces a corresponding variation in the voltages on the output conductors 88 and 96. For example, if the control voltage 342 is set by a potentiometer the total size of the image can be set wherever desired, or varied by varying the potentiometer. By adjusting the control voltage 342 from full scale to 0, the size of the image on the CRT 18 can be reduced from a maximum down to a point located at the origin of the figure. If the control function 342 is a ramp function, a zooming effect is achieved with the figure zooming from a small size to a large size or vice versa, depending on whether a positive or negative ramp is used. If four-quadrant multipliers are used, the image on the CRT 18 can be invented by applying a negative control voltage to the multipliers. The use of ramp functions to give a zooming effect gives apparent depth or a third dimension to the image.

While FIG. 2 shows a single size control for controlling the gain of the multipliers 336 and 338 simultaneously, it would, of course, be possible to have separate size controls for each multiplier. In this way, the size of the image in the X and Y direction can be selectively controlled. For example, the square of FIG. 3 would become a rectangle by varying the gain of only one of the multipliers.

ROTATIONAL ANIMATION

Another form of animation provided by this system is rotational animation about the point of origin of the figure. If the figure is a square, such as the one shown in FIG. 3, the rotation would be about the point 306. Rotation is produced by means of a coordinate transformation. Referring to FIG. 6, the formulas for rotating the figure will be derived. There are shown XY coordinate axes and X'Y' coordinate axes. The X'Y' axes are rotated counter-clockwise through an angle α, the angle α being the angle of rotation. Let the vector component x equal A, and the vector component Y, equal B, so that A and B are the original vector components on the XY axes.

A_{x} ', B_{x} ', A_{y} ', and B_{y} ' are the components of A and

B projected on X' and Y'.

Then,

A' = A_{x} ' + B_{x} '

B' 132 B_{y} ' - A_{y} '

A_{x} ' = A cos α

A_{y} ' = A sin α

B_{x} ' = B sin α

B_{y} ' = B cos α

and A' = A cos α + B sin α

B' = B cos α - A sin α

therefore,

x' = x cos α + y sinα

y' = y cos α - x sinα

If clockwise rotation is assumed, the equations become

x' = x cosα - y sinα and

y' = y cosα + x sinα

The network of FIG. 7 produces the rotational animation. There is shown a sine--cosine generator 350 with a potentiometer input 352. The setting of the potentiometer input 352 determines the angle α. A detailed description of a suitable sine cosine generator 350 is shown in FIG. 3 of and described in U. S. Pat. No. 3,364,382. For the purposes of this disclosure, it is sufficient to know that the generator 350 generates at an output a the cosine of α and at an output b the sine of α. The cosine α function at the output a is fed through a conductor 354 and a conductor 360 to the input a of a multiplier 362. The function x representing the x coordinate voltages of the line segments of the figure, and which corresponds to the signal on the conductor 20 of FIGS. 1 and 2, is fed through the conductor 24 and a conductor 364 to the input b of the multiplier 362. The output from the multiplier 362 which represents x cos α is fed through a conductor 365 to the input a of a summation amplifier 366. The signal on the conductor 24 is also fed through a conductor 368 to the input b of a multiplier 370. The signal at the output b of the sin -- cos generator 350 representing sin α is fed through a conductor 372 and a conductor 374 to an inverter 376. The output from the inverter 376 representing - sin α is fed through a conductor 378 to the input a of the multiplier 370. The output from the multiplier 370 representing - x sin α is fed through a conductor 380 to the input a of a summation amplifier 382. The signal on the conductor 372 representing sin α is also fed through a conductor 384 to the input a of a multiplier 386. The function y representing the y coordinate voltages of the line segments of the figure and which corresponds to the signal on the conductor 22 of FIGS. 1 and 2 is fed through the conductor 32 and a conductor 388 to the input b of a multiplier 390. The signal on the conductor 32 is also fed through a conductor 392 to the input b of the multiplier 386. The output from the multiplier 386 representing y sin α is fed through a conductor 394 to the input b of the summation amplifier 366. The output from the summation amplifier 366 represents x cos α + y sin α which is equal to x'. The signal on the conductor 354 representing cos α is also fed through a conductor 396 to the input a of the multiplier 390. The output from the multiplier 390 representing y cos α is fed through a conductor 398 to the input b of the summation amplifier 382. The output from the summation amplifier 382 represents y cos α- x sin α which is equal to y'. The x' and y' output signals can be fed directly into the E_{x} and E_{y} input of the CRT 18 or first into the size control network 80, or summation amplifiers 36 and 64. The network of FIG. 7 could be easily modified in accordance with the above equations to produce clockwise rotation.

Therefore, the image on the CRT 18 can be made to rotate about its origin by varying α through use of the potentiometer input 352. Obviously, if α is varied continuously through 360°, the figure can be made to rotate continuously. If the gross position network is used simultaneously with the rotation network, the figure can be made to roll across the screen in any direction.

BOUNDARY LIMITATIONS

Figures animated by the techniques described thus far, for example rotational animation, often have the appearance of floating in space because their motion is not constrained by a boundary such as a floor or a wall. They give the illusion of moving around under conditions of zero gravity. It may be desirable to simulate the effects of certain boundary conditions such as a floor or wall in a gravity field. To accomplish this, the circuit shown in FIG. 8 is used. Suppose for example, a floor is to be simulated so that the corners of the square of FIG. 9 appear to contact the floor as the figure rotates much as a square block would roll on a flat surface. As the square rotates about its origin the corners of the square must just contact the surface of the floor. Therefore, as each corner approaches, the entire square must be raised a distance that equals the distance the corners would otherwise extend beneath the floor. This is accomplished by the boundary simulation networks 50 and 70. As these networks are identical, it is necessary to describe only one in detail.

In FIG. 8, there is shown the network 70 having a flip-flop 412. The input of the flip-flop 412 is connected by the conductors 53 and 72 to the output b of the timing gate generator 10. At the beginning of each cycle of pulses generated by the generator 10, a trigger pulse is generated at the output b of the generator 10 in synchronization with the generation of the reset signal on the conductor 270. This pulse is fed through the conductors 53 and 72 to trigger the flip-flop 412. The flip-flop 412 has outputs a and b. Each time the flip-flop 412 receives a trigger pulse it changes state with signal levels alternately appearing at its a and b outputs. The trigger pulse at the beginning of the first cycle triggers the flip-flop 412 to produce a signal at its output a which is fed through a conductor 414, a conductor 416, and a conductor 418 to a reset circuit 420. The output of the reset circuit 420 is connected by a conductor 422 to the input a of a peak detector 424. The peak detector 424 also has inputs b and c and is a device that tracks a waveform introduced at its input c and stores the peak voltage of the waveform. The input b of the detector 424 is connected by a conductor 426 to an adjustable reference voltage 428 which is set to represent the boundary condition. The reference voltage 428 is fed through the conductor 426 to the input b of the peak detector 424. When the peak detector 424 is reset by the signal on the conductor 422, it will discharge to a voltage level equal to the reference voltage 428 and will hold this voltage until it detects a greater voltage on the waveform it is tracking. If a greater voltage is detected, it will store that voltage. The waveform representing the y or y' coordinate voltages for each of the line segments is fed through the conductor 74 and a conductor 430 to an analog switch 432. The signal on the conductor 416 is also fed through a conductor 434 to the analog switch 432, closing the analog switch at the same time the peak detector 424 is reset to the reference voltage level 428. When the analog switch 432 closes, the y or y' waveform on the conductor 430 is fed through a conductor 436 to the tracking input c of the peak detector 424, enabling the peak detector 424 to track the y or y' waveform and store the peak voltage on that waveform, providing it is greater than the reference voltage 428. The peak respectively voltage is fed through a conductor 440 to an analog switch 444. Another analog switch 446 is connected by a conductor 450 to a potentiometer input 452. The potentiometer input 452 is adjusted to a voltage equal and opposite to the reference voltage 428. The peak voltage from the peak detector 424 and the voltage from the potentiometer input 452 are applied to the analog switches 444 and 446, respectively.

At the beginning of the next cycle (after each element of the figure has been generated one time) another trigger pulse will be generated by the timing gate generator 10 which is fed through the conductors 53 and 72 to trigger the flip-flop 412, causing the flip-flop 412 to change state so that there is a signal at its output b and no signal at its output a. Because there is no signal at the output a, there is no signal on the conductor 434 and the analog switch 432 opens. With the analog switch 432 open, the peak detector 424 will stop tracking and will hold the peak voltage detected before the analog switch 432 opens. The signal at the output b of the flip-flop 412 is fed through a conductor 456, a conductor 460 and a conductor 462 to close the analog switch 444. The signal on the conductor 460 is also fed through a conductor 464 to close the analog switch 446. With the analog switches 444 and 446 closed, the peak voltage from the peak detector 424 is fed by the conductor 440 through the analog switch 444 and a conductor 466 to the input a of a summing amplifier 468, and the potentiometer voltage 452 is fed through the conductor 450, the analog switch 446, and a conductor 470 to the input b of the summing amplifier 468. The output of the summing amplifier 468 is equal to the algebraic sum of the peak voltage from the detector 424 and the potentiometer voltage 452. This algebraic sum is the offset voltage.

Another circuit identical to the one just described generates the offset voltage for the next cycle. Two circuits are necessary, each operating on alternate cycles because each peak detector must sample the waveform for an entire cycle before generating the offset voltage for the next cycle. Hence, the signal on the conductor 456 is also fed through a conductor 472, and a conductor 474 to a reset circuit 476. The reset circuit 476 is identical to the reset circuit 420. The output of the reset circuit 476 is fed through a conductor 478 to the input a of a peak detector 480. The peak detector 480 is identical to the peak detector 424 and operates in exactly the same manner. The peak detector 480 has another input b connected by a conductor 482 to a reference voltage 484. Just as with the reference voltage 428, the voltage 484 is set to represent the boundary condition. When the peak detector 480 receives the signal at the input a, it is reset to a value equal to the voltage 484. The Y' waveform on the conductor 74 is also fed through a conductor 486 to an analog switch 488. The signal on the conductor 472 is also fed through a conductor 490 to close the analog switch 488. With the analog switch 488 closed, the Y' waveform is fed through a conductor 492 to the input c of the peak detector 480. Just as with the peak detector 424, the peak detector 480 tracks the Y' waveform for one complete cycle and stores the peak voltage providing it is greater than the reference voltage 484. This peak voltage is fed through a conductor 494 to an analog switch 498. Another analog switch 500 is connected by a conductor 504 to a potentiometer input 506. The potentiometer input 506 is set to a value equal and opposite to the reference voltage 484. The peak voltage on the conductor 494 and the voltage from the potentiometer input 506 are applied to the analog switches 498 and 500, respectively. At the beginning of the third cycle of pulses from the timing gate generator 10, another trigger pulse is generated to again trigger the flip-flop 412, causing the flip-flop 412 to change state so that there is a signal at its output a and no signal at its output b. With no signal at the output b, the analog switch 488 opens and the peak detector 480 stops tracking. The signal at the output a of the flip-flop 412 is fed through the conductor 414, a conductor 510, and a conductor 512 to close the analog switch 498. The signal on the conductor 510 is also fed through a conductor 514 to close the analog switch 500. With the analog switches 498 and 500 closed, the peak voltage from the peak detector 480 is fed through a conductor 516 to the input d of the summing amplifier 468, and the voltage from the potentiometer input 506 is fed through the conductor 504, the analog switch 500 and a conductor 518, to the input c of the summing amplifier 468. Therefore, the output of the summing amplifier 468 at the beginning of the third cycle is also equal to the algebraic sum of the peak voltage from the detector 480 and the potentiometer voltage 506, which is the offset voltage. The signal on the conductor 414 which closes the analog switches 498 and 500 is also fed through the conductor 416 to reset the peak detector 424 and close the analog switch 432 to track the Y' waveform for the next cycle. This tracking by each peak detector of alternate cycles continues to generate an offset voltage for each cycle. Referring again to FIG. 1, this offset voltage is fed through the conductor 68 to the summation amplifier 64 where it is added to the Y' voltages.

While the boundary simulation network 70 just described operates on the Y or Y' coordinate waveform, this same circuit is used in the simulation network 50 to simulate X coordinate boundary conditions by tracking the X or X' waveform.

By way of example, the operation of the boundary network 70 will be explained with reference to the square 520 oriented as in FIG. 9 and the waveforms of FIG. 10. Assume that the conditions to be simulated are the rolling of the square 520 across a floor 522. The floor 522 being the boundary condition. As the square 520 rotates about its origin 524 each of its corners, such as the corner 526, must contact the surface of the floor 422 and not extend beneath it. Therefore, as the square 520 rotates, the entire square must be raised a sufficient amount so that each of the corners just contact the floor 522. For this condition, the square 520 assumes the position of the square 520' shown by dotted lines in FIG. 9. The waveform 530 of FIG. 10 shows the trigger pulses generated at the beginning of each cycle by the timing gate generator 10. These pulses trigger the flip-flop 412. The waveform 532 is either the Y or Y' coordinate of the waveform for generating the square 520 of FIG. 9. In this waveform, the floor 522 is represented by a voltage level -E_{R} shown by a dotted line 534, and the negative peak voltage of the waveform is designated -E_{p}. The waveform 532 is tracked by the peak detectors 424 and 480 on alternate cycles as heretofore described with the detectors 424 and 480 holding the negative peak voltage -E_{p}. Each of the reference voltages 428 and 484 are set to equal the voltage representing the boundary condition -E_{R}. Each of the potentiometer inputs 452 and 506 are set to equal +E_{R} as heretofore described. The waveform 536 is the output waveform from the reset circuit 420 used to reset the peak detector 424. The waveform 536 is half the frequency of the waveform 530. The waveform 538 is the output waveform from the peak detector 424. It will be noted that upon detecting the negative peak voltage -E_{p} the detector 424 will hold that voltage for the remainder of the cycle and through the next cycle at which time the detector 424 is reset. The waveform 540 is the output waveform from the reset circuit 476 used to reset the peak detector 480. The waveform 540 is half the frequency of the waveform 530 and is 180° out of phase with the waveform 536 so that they operate on alternate cycles. The waveform 542 is the output waveform from the detector 480. The output from the detector 480, as noted by comparing the waveforms 538 and 542, is 180° out of phase with the output waveform from the detector 424. On alternate cycles, the summing amplifier 468 computes the algebraic difference between the waveform 542 and the potentiometer input voltage 506 and the waveform 538 and the potentiometer input voltage 452. These algebraic differences are equal to E_{p} - E_{R} as shown by the waveform 544 and are fed through the conductor 68 to the summation amplifier 64 to raise the square 520 to the position of the square 520'.

CLOSURE NETWORK

Another feature of this invention which provides great versatility in animating certain types of figures, is the automatic closure network. Using the commutating scheme of FIG. 2, a figure is generated by appropriate adjustment of the X,Y, and intensity potentiometers. Animation is produced by varying these potentiometers. However, in order for the figure to remain closed during an animation sequence, x_{n} must equal x_{1}, and y_{n} must equal y_{1}. If one or more of the potentiometers are varied without also varying the others, the point x_{1} y_{1} will not equal the point x_{n} y_{n}, and the figure will come apart. Without a means for automatically driving the last line segment back to the point x_{1} y_{1}, it would be very difficult to produce animation. The closure circuit 112 is such a means.

The closure circuit for the X coordinate signals is shown in FIG. 11. There is an identical closure circuit for the Y coordinate signals, so that it will suffice to describe only one. The network including the timing gate generator 10, the commutator 150, and the integrator 174 is identical to that shown in FIG. 2 but has been included in FIG. 11 for convenience. The commutator 150 has the potentiometer input 156 representing x_{1}, and the potentiometer input 158 representing x_{2}. There is also shown a potentiometer input 550 representing x_{n} _{-}_{1} and an input 551 representing x_{n}. The input 551 is not a potentiometer input. Just as shown in FIG. 2, the commutator 150 has inputs 164, 166, 168, and 170 that receive signals from the timing gate generator 10 for gating the inputs 156, 158, 550, and 551. As previously described, the first of the succession of pulses in a given cycle from the timing gate generator 10 is fed through the conductors 270 and 272 to reset the integrator 174. The second in the succession of pulses is fed through the conductors 276 and 277 to the input 164 of the commutator 150 gating the potentiometer input 156 through the conductor 172 to the integrator 174. The integrated signal is fed through the conductors 20 and 114 and a conductor 552 to the input a of a track and hold network 553. The track and hold network 553 also has an input b connected by a conductor 554 from an enable circuit 556. The signal on the conductor 276 is also fed through a conductor 558 to the input of the enable circuit 556. With a signal on the conductor 558, the enable circuit 556 generates a signal which is fed through the conductor 554 to enable the track and hold network 553. This will cause the network 553 to track the integrated output from the integrator 174 which, for the signal in the conductor 276, corresponds to drawing the placement segment 307 (FIG. 3) for a square. When the next of the sequence of pulses is generated by the timing gate generator 10, the signal on the conductors 276 and 558 drop to zero, disabling the circuit 556 and causing the track and hold network 553 to hold its value. This value will be the final value of the placement segment, such as the segment 307. This final value is fed through a conductor 559 to the minus input of a differential amplifier 560. The next pulse generated by the timing gate generator 10 is fed through the conductors 282 and 284 to the input 166 of the commutator 150, gating the potentiometer input 158 through the conductor 172 to the integrator 174. The integrated output is then fed through the conductors 20 and 24 as heretofore described. This integrated output will not affect the track and hold network, 553 because it is no longer enabled. Each of the segments will be generated as heretofore described until the second to last segment is generated. The pulse from the timing gate generator 10 that corresponds to the n-1 segment is fed through the conductors 290 and 292 to the input 168 of the commutator 150, gating the potentiometer input 550, which is the X voltage for the n-1 segment, through the conductor 172 on the integrator 174. The integrated output is fed through the conductors 20 and 114 and a conductor 561 to the input a of a track and hold network 562. The track and hold network 562 also has an input b connected by a conductor 564 to an enable circuit 566. The pulse on the conductor 290 is also fed through a conductor 568 to the input of the enable circuit 566. When the enable circuit 566 receives an input signal, an enable pulse is generated at its output which is fed through the conductor 564 to trigger the track and hold network 562. This causes the network 562 to track the integrated output from the integrator 174 corresponding to the n-1 segment. When the last of the sequence of pulses is generated by the timing gate generator 10, the signal on the conductors 290 and 568 goes to zero, disabling the circuit 566 causing the track and hold network 562 to hold its value. This value is equal to the final value of the n-1 segment. The value held by the track and hold network 562 is fed through a conductor 570 to the plus input of the differential amplifier 560. The output of the differential amplifier 560, which is equal to the difference between the final value of the second to last (n-1) line segment and the final value of the first line segment is fed through the conductors 118 and 551 to the input of the commutator 150 corresponding to the X signal for the nth line segment. The next and last of the sequence of pulses in the cycle generated by the time gate generator 10 is fed through the conductors 298 and 300 to the input 170 of the commutator 150 gating the feedback signal from the amplifier 560 through the conductor 172 to the integrator 174. The integrated signal which is fed through the conductors 20 and 24 is the exact signal necessary to automatically close the figure.

The operation of the closure network can be explained with reference to the triangle of FIG. 12. A triangle is a good figure to use as an example since its shape can be greatly varied while maintaining its basic configuration. The triangle of FIG. 12 has four line segments, 571, 572, 574, and 576. This figure can be easily animated by varying the length and/or direction of segments 571, 572 and 574 with the segment 576 always being such that it will automatically close the figure. To generate this triangle, the timing gate generator 10 is programmed to generate a series of five pulses per cycle. Using only the X voltages for the purpose of this example, the X voltage for the segment 571 is set by the potentiometer input 156 to the commutator 150, the X voltage corresponding to the line segment 572 is set by the potentiometer input 158, and the X voltage for the line segment 574 is set by the potentiometer 550. The first gate pulse from the generator 10 resets the integrator 174. The second gate pulse from the generator 10 gates the potentiometer input voltage 156 for the line segment 571 through the commutator 150 and the conductor 172 to the integrator 174. The second pulse also gates the enable circuit 556 which enables the track and hold circuit 553, causing the circuit 553 to track the integrated waveform for the line segment 571 and to hold the final X coordinate value of the line segment 571. The third pulse from the generator 10 gates the potentiometer input 158 for the line segment 572 through the commutator 150 and the conductor 172 to the integrator 174. The integrated waveform for this line segment is fed through the conductors 20 and 24 as heretofore described. The fourth pulse from the generator 10 gates the potentiometer input 550 for the line segment 574, which is the n-1 line segment, through the commutator 150 and the conductor 172 to the integrator 174. The fourth pulse also gates the enable circuit 566 which enables the track and hold circuit 562, causing the circuit 562 to track the integrated waveform for the line segment 574 and to hold the final X coordinate value of the line segment 574. The final value of the line segment 571 and the final value of the line segment 574 are fed into the differential amplifier 560 which generates at its output the algebraic difference between these two final values. This algebraic difference is fed back to the input 551 of the commutator 150. When the fifth and final pulse of the series is generated by the generator 10, the feedback signal at the input 551 is gated through the commutator 150 and conductor 172 to the integrator 174. This integrated output is the exact waveform necessary to generate the final line segment 576 to close the figure. This waveform is fed through the conductors 20 and 24 as heretofore described.

As previously explained, the automatic closure circuit for the Y coordinate voltages is identical to that just described. Therefore, by varying the potentiometer inputs 156, 158, and 550, as well as the corresponding potentiometer inputs for the Y coordinate voltages animation can be imparted to the triangle of FIG. 12 resulting in great variations in its shape with the triangle always remaining closed.

A system has thus been described for generating and displaying two-dimensional figures and animating these figures in a variety of sequences. While the system has been generally described with reference to FIG. 1, it is to be understood that not all of the features need be used at once. The network can easily be rearranged for use of only a portion of the system shown in FIG. 1 depending on the animation requirements.

Various changes and modifications may be made within the invention as will be readily apparent to those skilled in the art. Such changes and modifications are within the scope and teaching of this invention as defined by the claims appended hereto.

In general the system for generating, displaying and animating two-dimensional figures includes a cathode ray tube on which the figures are displayed. The cathode ray tube has inputs corresponding to the X, Y, and intensity parameter signals for each segment of the figure. Also included is a two-dimensional figure generator that sequentially generates signals defining each of the line segments of the figure, a timing gate generator which sequentially gates the signals generated by the two-dimensional figure generator, a closure circuit that automatically maintains the figure closed through any animation sequence, a rotation network that transposes the vectors corresponding to each of the line segments generated from one set of coordinants to a second set of coordinants, the second set being rotated at a prescribed angle with respect to the first set, thereby effectively imparting rotation to the figure, a boundary simulation network that establishes boundary conditions in the X and/or Y position to give the figure, in an animation sequence, the appearance of moving in a gravity field, a size-control network which can be used to change the total size of the figure in either the X direction or Y direction and a gross position network for changing the gross position of the figure on the CRT.

With the horizontal sweep of the cathode ray tube beam being thought of as movement in the X direction, and vertical movement of the beam thought of as a movement in the Y direction, the two-dimensional figure generator establishes signals for conventional horizontal and vertical movements of the cathode ray tube beam for generation of each line segment of the figure sequentially. Simultaneous with the generation of each line segment the two-dimensional figure generator generates a signal which is fed to the intensity input of the CRT for defining the intensity of each line segment. The sequential generation of each line segment is accomplished by programming the time gate generator to sequentially generate a series of pulses corresponding to the number of line segments in the figure. These pulses are used to gate commutators having X, Y, and intensity input voltages for generation of each line segment. As these voltages are gated through the commutators, they are integrated and applied to the X, Y, and intensity inputs of the CRT, thus generating the basic two-dimensional figure.

Rotation is imparted to the figure by feeding the X and Y signals for each of the line segments from the two-dimensional figure generator into a rotation network which modifies these signals by transforming them to a new coordinant system rotated through a prescribed angle to the coordinant system of the two-dimensional figure generator. This angle of rotation is defined by a voltage input to the rotation network. As the voltage input is varied, the angle of rotation is varied, and the figure is caused to rotate. Any means for varying this voltage can be used, including a time varying means.

The shape of the figure is changed by varying the X and Y voltage inputs to the commutators of the two-dimensional figure generator. A change in one or more of these voltages will impart a change in the angle and/or length of one or more line segments of the figure, thereby changing the shape of the figure. To maintain the figure closed during an animation that changes the shape of the figure, a closure circuit is provided that detects the final value of the first line segment generated and the final value of the second to last line segment generated and automatically generates X and Y signals for generation of the last line segment to automatically close the figure. This feature is particularly important where the animation sequence requires a continuing change in the shape of the figure.

The figure can be further animated by use of the size control network. By this network the X and Y signals for each of the line segments are multiplied by size control voltages from either a potentiometer input or a time varying input such as a ramp function. By appropriate selection of the size control voltage the gross size of the figure can be changed in a variety of animation sequences. For example, if a ramp function is used, the gain of the multiplier may be varied from 0 to a maximum producing a corresponding change in the size of the figure. Animation adds a three-dimensional effect, giving the appearance that the figure is moving away from the viewer as it becomes smaller and toward the viewer as it becomes larger.

Gross position animation is accomplished by adding a voltage at the X and Y inputs of the CRT to the X and Y signals from the figure generation network. These position voltages will simply move the origin of the figure causing movement of the figure on the viewing screen. Here again, a time varying function such as a ramp function can be used, in which case the figure can be made to move across the screen from a predetermined initial position to a predetermined final position. This feature can be very useful in an animation sequence such as for example, in combination with the rotation network to cause the figure to roll across the screen.

Included in this invention is a network for establishing simulated boundary conditions for the figure during an animation sequence. Examples are a floor or wall to give the figure the appearance of moving in a gravity field. If, for example, a square is made to roll across a floor the corners of the square must not drop below the level of the floor. Therefore, to simulate the floor condition an offset voltage is generated by the boundary simulator network of a value sufficient to lift the figure the exact amount necessary so that the corners of the square strike the floor as the square rotates. The boundary network includes peak detectors for detecting the negative peak voltage of the figure for each cycle of the figure generated, and means for generating an offset voltage equal to the difference between the peak detector voltage and a voltage defining the boundary condition. This offset voltage is then added to the appropriate coordinant voltage which in this case would be the Y coordinant voltage for application to the CRT.

As can be seen, any two-dimensional straight line figure can be generated by this technique, and, by appropriate combinations of the various animations techniques included in this invention, a great variety of animation sequences can be produced. By this invention, figures such as triangles, squares, parallelograms, and many others can be made to literally dance on the screen, taking on human characteristics. Much of the animation can be produced automatically by use of generators producing time-varying functions. However, animation can also be produced manually such as by the use of potentiometer inputs to provide the operator with great flexibility of artistic creation.

DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of the system of this invention;

FIG. 2 is a schematic diagram of the figure generator;

FIG. 3 is an example of the type of figure that can be generated, displayed and animated by the system of this invention and is used as an example to explain the operation of a portion of the system;

FIG. 4 are waveforms generated by the network of FIG. 2 in generating the square of FIG. 3;

FIG. 5 is a schematic diagram of the size control network;

FIG. 6 is a diagram used for describing a coordinate transformation;

FIG. 7 is a schematic diagram of the coordinate transformation network;

FIG. 8 is a schematic diagram of the boundary simulation network;

FIG. 9 is a square used in explaining the operation of the boundary simulation network of FIG. 8;

FIG. 10 are the waveforms generated by the network of FIG. 8 in producing the boundary conditions of FIG. 9;

FIG. 11 is a schematic diagram of the closure network; and

FIG. 12 is a drawing of a triangle used in explaining the operation of the closure network of FIG. 11.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

In FIG. 1 there is shown a general block diagram of the system of this invention. There is shown a timing gate generator 10 which, as will be described, operates as a master control for the operation of the system. Control signals from the output a of the timing gate generator 10 are fed through a cable 12 to a two-dimensional figure generator 14. It is the two-dimensional figure generator 14 that generates X coordinate, Y coordinate, and intensity signals for ultimate generation of the basic figure. The intensity signals for each line segment of the figure are fed through a conductor 16 to the intensity input E

The X' output signal from the rotational network 30 is fed through a conductor 34 and a conductor 35 to the input a of the summation amplifier 36. The summation amplifier 36 has an input b which receives a signal set by a potentiometer (not shown) through a conductor 40 representing the final X position of the figure. The summation amplifier 36 also has an input c connected by a conductor 42 to an X boundary simulation network 50. The network 50 has an input a connected by a conductor 52 and a conductor 53 to an output b of the timing gate generator 10, and an input b connected by a conductor 54 to the conductor 34. The conductor 54 carries the X' signals from the rotation network 30 to the input b of the network 50. As will be described, it is the X boundary simulator network 50, upon receiving a trigger pulse from the timing gate generator 10 through the conductors 52 and 53, that establishes X coordinate boundaries for the figure.

The signals representing Y' are fed through a conductor 60 and a conductor 62 to the input a of a summation amplifier 64. The amplifier 64 has an input b that receives a signal through a conductor 66 representing the final Y position of the figure, and an input c connected by a conductor 68 to a Y boundary simulation network 70. The network 70 has an input a connected by a conductor 72 and the conductor 53 to the output b of the timing gate generator 10. The network 70 also has an input b connected by a conductor 74 and the conductor 60 to the Y' output of the rotation network 30. As will be described, it is the Y boundary simulator network 70, upon receiving a trigger pulse from the timing gate generator 10 through the conductors 53 and 72, that establishes Y coordinate boundaries for the figure.

The output signals from the summation amplifier 36, which represent a varying relationship among the rotation animation signals X', the X boundary limitation signal, and a final X position signal, are fed through a conductor 76 to the input a of a size control network 80. The size control network 80 also has an input b connected by a conductor 82 to the output of the summation amplifier 64. The conductor 82 carries the signals representing a varying relationship among rotational animation Y' with boundary limitations and final Y position. The size control network 80 also has an input c which receives size control signals through a conductor 84. It is the size control network 80 that provides animation of the total size of the figure, this size animation being a function of the signals to the input c of the network 80. Signals representing rotation animation signals X', the X coordinate of each line segment with boundary limitations, a final X position signal, and size animation are fed through a conductor 88, to the input a of a summation amplifier 90. The summation amplifier 90 also has an input b that receives signals through a conductor 92 defining the gross X position of the image on the CRT 18. The signal from the summation amplifier 90 is fed through a conductor 94 to the E

The timing gate generator 10 also has an output c connected by a cable 110 to the gate input of a closure circuit 112. It is the closure circuit 112 that automatically generates signals to close the figure as the shape of the figure is changed. The X coordinate signals on the conductor 20 are also fed through a conductor 114 to the closure circuit 112, and the Y coordinate signals on the conductor 22 are also fed through a conductor 116 to the closure circuit 112. The circuit 112 sends X and Y coordinate signals for automatic generation of the last line segment of the figure through the conductors 118 and 120, respectively, to the two-dimensional figure generator 14.

The technique of generating two-dimensional figures and animating these figures in a variety of animation modes has been generally described. A more detailed description of each of the major components of the system follows.

TWO-DIMENSIONAL FIGURE GENERATION

The circuit for the two-dimensional figure generator 14 is shown in more detail in FIG. 2. By this circuit, the line segments of the figure to be produced are generated in sequence by commutating voltages representing each line segment. Hence, there are shown three commutators, 150, 152, and 154. Each commutator has a plurality of potentiometer inputs. There are as many potentiometer inputs as there are line segments in the figure to be generated. In the commutator 150, a potentiometer input 156 sets the X voltage for the first line segment, a potentiometer input 158 sets the X voltage for the second line segment, a potentiometer input 160 sets the X voltage for the third line segment, and so on, to a potentiometer input 162 which sets the X voltage for the nth line segment of the figure. The commutator 150 also has a gate input for each of the potentiometer inputs 156-162. Hence, the potentiometer input 156 has associated with it a gate input 164, the potentiometer input 158 has associated with it a gate input 166, the potentiometer input 160 has associated with it a gate input 168, and the potentiometer input 162 has associated with it a gate input 170. When a gate pulse of a given width is fed into the gate input 164, the commutator 150 generates a voltage at an output conductor 172 equal to the potentiometer input voltage 156 for the duration of the gate pulse. When a gate pulse of a given width is fed into the input 166, the potentiometer input voltage 158 appears at the output conductor 172, and so on for each potentiometer input and its corresponding gate input. The sequence X signals generated by the commutator 150 is fed through the conductor 172 to an integrator 174. The integratated output from integrator 174 is fed through the conductor 20 which can be connected directly to the E

A commutator 152 operates in exactly the same manner as the commutator 150, except it is used to commutate Y voltages. Hence, a potentiometer input 192 sets the Y voltage for the first line segment, a potentiometer input 194 sets the Y voltage for the second line segments, a potentiometer input 196 sets the Y voltage for the third line segment, and a potentiometer input 198 sets the Y voltage for the nth line segment of the figure. Associated with each of the potentiometer inputs 192 - 198, is a gate input. The potentiometer input 192 has associated with it a gate input 200, the potentiometer input 194 has associated with it a gate input 202, the potentiometer input 196 has associated with it a gate input 204, and the potentiometer input 198 has associated with it a gate input 206. Just as with the commutator 150 when a gate pulse is fed sequentially to each of the gate inputs 200 - 206, the corresponding potentiometer input signal is fed through the commutator 152 and an output conductor 208 to an integrator 210. The integrated output from the integrator 210 is fed through the conductor 22. Like the output from the integrator 174, the output from the integrator 210 can be fed directly to the E

A commutator 154 operates in exactly the same manner as the commutators 150 and 152 except it is used to commutate intensity voltages. Hence, a potentiometer input 230 sets the intensity voltage for the first line segment, a potentiometer input 232 sets the intensity voltage for the second line segment, a potentiometer input 234 sets the intensity voltage for the third line segment, and a potentiometer input 236 sets the intensity voltage for the nth line segment. Associated with each of the potentiometer inputs 230 - 236 is a gate input. Hence, the potentiometer input 230 has associated with it a gate input 240, the potentiometer input 232 has associated with it a gate input 242, the potentiometer input 236 has associated with it a gate input 246. Just as with the commutators 150 and 152, when gate pulses of fixed width are sequentially fed into the gate inputs 240 - 246 of the commutator 154, the commutator 154 generates at its output the corresponding potentiometer input voltage. Because it is usually desirable to have a constant intensity level for each line segment on the CRT 18 and because a constant intensity is determined by a DC voltage, the sequential DC output voltages from the commutator 154 are fed through the conductor 16 directly to the E

The appropriate voltage levels are now set for generation of each of the line segments of the figure; however, it is necessary to establish a time sequence for generating each of the line segments. This is accomplished by the timing gate generator 10. The timing gate generator 10 is a sequential pulse generator having a plurality of outputs 260, 262, 264, 266, and 268. There could be any number of outputs, the output 268 corresponding to the nth output. The generator 10 can be programmed to generate pulses of given widths in sequence at its outputs. The first pulse generated by the generator 10 will appear at the output 260 and be fed through a conductor 270 and a conductor 272 to the reset input of the integrator 174. The pulse on the conductor 270 is also fed through a conductor 274 to the reset input of the integrator 210. Hence, the pulse at the output 260 resets each of the integrators 174 and 210 to zero. The next pulse generated by the generator 10 appears at the output 262 and is fed through a conductor 276 and a conductor 277 to the gate input 164 of the commutator 150. The pulse on the conductor 276 is also fed through a conductor 278 to the gate input 200 of the commutator 152. The pulse on the conductor 276 is also fed through a conductor 280 to the gate input 240 of the commutator 154. Hence, the pulse at the output 262 of the generator 10 simultaneously gates each of the commutators 150, 152, and 154 to produce X, Y, and intensity signals for the generation of the first line segment. The next pulse generated by the generator 10 appears at the output 264 and is fed through a conductor 282 and a conductor 284 to the gate input 166 of the commutator 150. The pulse on the conductor 282 is also fed through a conductor 286 to the gate input 202 of the commutator 152. The pulse on the conductor 282 is also fed through a conductor 288 to the gate input 242 of the commutator 154. Hence, the pulse at the output 264 of the generator 10 simultaneously gates each of the commutators 150,152, and 154 to generate signals for generation of the second line segment. The third pulse generated by the generator 10 appears at the output 266 and is fed through a conductor 290 and a conductor 292 to the gate input 168 of the commutator 150. The pulse on the conductor 290 is also fed through a conductor 294 to the gate input 204 of the commutator 152. The pulse on the conductor 290 is also fed through a conductor 296 to the gate input 244 of the commutator 154. It is the pulse at the output 266 of the generator 10 that simultaneously gates the commutators 150, 152 and 154 to generate signals for generation of the third line segment. There may be any number of additional pulses from the generator 10 but the last or nth, pulse generated at the output 268 is fed through a conductor 298 and a conductor 300 to the gate input 170 of the commutator 150. The pulse on the conductor 298 is also fed through a conductor 302 to the gate input 206 of the commutator 152. The pulse on the conductor 298 is also fed through a conductor 304 to the gate input 246 of the commutator 154. It is the pulse at the output 268 of the generator 10 that simultaneously gates each of the commutators 150, 152 and 154 to generate signals for generation of the nth line segment. After the nth pulse is generated, the pulse sequence is repeated with the next pulse generated at the output 260 for resetting the integrators 174 and 210 to zero.

By way of example, the operation of the circuit of FIG. 2 will be explained for the generation and display of the square of FIG. 3 on the CRT 18. In FIG. 3, there is shown a square 305 with a center 306 and comprised of line segments 307, 308, 309, 310, and 311. The segment 307 is used to position the square so that the origin is at the center 306. Therefore, the center of the square is at the coordinate x = 0, y = 0, on the xy coordinates shown. The end of the first line segment 306 is a corner 314 of the figure, having coordinates x

The generation of the square of FIG. 3 can now be explained with reference to the wave forms of FIG. 4. The wave forms 322, 323, 324, 325, 326 and 327 are the sequential pulses generated at the six outputs of the timing gate generator 10. The first of these pulses as shown by the wave form 322, is the reset pulse for the integrators 174 and 210. The remaining pulses, as shown by wave forms 323 - 327, sequentially gate each of the commutators 150, 152 and 154. The output of the X commutator 150 for the entire cycle of the timing gate is shown by the wave form 328. During the reset pulse, as shown by the wave form 322, the signal of the wave form 328 is zero, since no line segments are generated when the integrators 174 and 210 are reset. The remainder of the wave form 328 represents the voltages set by the potentiometer inputs for the commutator 150, for generating the X signals for each of the line segments. The wave form 328 is integrated by the integrator 174 with the integrated output on the conductor 20 shown by the wave form 329. The reference level of the wave form 329 can be varied as will be hereinafter described to move the gross position of the square of FIG. 3 along the X axis.

For now, assume the origin of the square of FIG. 3 is zero, with respect to both the X and Y axis so that the reference level of the wave form 329 is zero.

The output of the Y commutator 152 for generating the square of FIG. 3 is shown by the wave form 330. Just as with the wave form 328, the wave form 330 is zero during the resetting of the integrators 174 and 210. The remainder of the wave form 330 represents the voltages set by the potentiometer inputs to the commutator 152 for generating the Y signals for each of the line segments. The wave form 330 as integrated by the integrator 210 is shown by the wave form 331. Again, assuming the origin of the square of FIG. 3 is zero, with respect to both the X and Y axis, the reference level of the wave form 331 is also zero.

Finally, the output from the commutator 154, representing the intensity of each of the line segments, is shown by the wave form 332. It can be seen from the wave form 332 that during a single generation cycle only the line segments 308 - 311 are intensified. The line segment 307 is not intensified, as it is used only to position the square with its origin at the center. In this example, the intensity level of all the sides of the square is held constant by the constant level of the wave form 332. If desired, of course, the potentiometers 230 - 236 could be adjusted to vary these intensities.

The wave forms 329, 331, and 332 can be applied directly to the E

This invention also provides a means for animating the figure by varying one or more of the potentiometer inputs to the commutators 150 and 152. Obviously, variations in one or more of these inputs will change the shape of either or both of the X and Y coordinate waveforms, thereby causing a change of form in the figure. By manipulating these inputs as the timing gate generator 10 cycles, the operator of the system can animate the figure in a great variety of sequences that include variations in size, orientation, position and shape.

GROSS POSITION ANIMATION

Referring to FIG. 1 the summation amplifiers 36 and 64 and their corresponding inputs make up the circuit for adjusting the gross position of the image on the CRT 18. Each of the summation amplifiers 36 and 64 have inputs a, b, and c. The input a of the summation amplifier 36 is shown connected by the conductor 35 to the X' output from the rotation network 30. However, if the rotation network 30 is not used, the input a could be connected directly by the conductor 20 to the X output from the two-dimensional figure generator 14. The input b of the summation amplifier 36 is connected by the conductor 40 to an X gross position voltage function. The voltage function can be a constant voltage set by a potentiometer or a time varying function such as a ramp function. As previously stated, the input c of the summation amplifier 36 is connected to the output of the boundary simulation network 50 which will be hereinafter described in detail. Likewise, the input a of the summation amplifier 64 is shown connected by the conductor 62 to the Y' output of the rotation network 30. However, the input a could also be connected by the conductor 22 directly to the Y output of the two-dimensional figure generator 14. The input b of the summation amplifier 64 is connected by a conductor 66 to a Y gross position voltage function. This voltage function, like the X position voltage function, can be either constant or time varying. The input c to the summation amplifier 64 is connected by the conductor 68 to the boundary simulation network 70, which will be hereinafter described in detail. For now, the c inputs to the summation amplifiers 36 and 64 can be ignored. Although the outputs of the summation amplifiers 36 and 64 are shown connected by the conductors 76 and 82, respectively, to the size control network 80, these outputs could be connected directly to the E

SIZE ANIMATION

The size of the figure can be varied by use of the size control network shown in more detail in FIG. 5. The size control network 80 includes analog multipliers 336 and 338 each having inputs a and b. The a inputs can receive signals from a variety of sources including the X and Y coordinate waveforms on the conductors 20 and 22 from the two-dimensional figure generator 14, or the output from the summation amplifiers 36 and 64, depending on the network configuration used. The input b of the multiplier 336 is connected by a conductor 340 and the conductor 84 to a size control voltage function 342. The input b of the multiplier 338 is connected by a conductor 341 and the conductor 84 to the size control voltage function 342. The signals at the output conductors 88 and 96 of the multipliers 336 and 338, respectively, are the product of the signals at the inputs a and b. Hence, the size control voltage function is fed through the conductors 84 and 340 to the input b of the multiplier 336 where it is multiplied by the signals at the input a of the multiplier 336 to produce the output signals on the conductor 88. The size control voltage is also fed through the conductors 84 and 341 to the input b of the analog multiplier 338 where it is multiplied by the signals at the input a of the multiplier 338 to produce the output signals on the conductor 96. A variation in the control voltage 342 produces a corresponding variation in the voltages on the output conductors 88 and 96. For example, if the control voltage 342 is set by a potentiometer the total size of the image can be set wherever desired, or varied by varying the potentiometer. By adjusting the control voltage 342 from full scale to 0, the size of the image on the CRT 18 can be reduced from a maximum down to a point located at the origin of the figure. If the control function 342 is a ramp function, a zooming effect is achieved with the figure zooming from a small size to a large size or vice versa, depending on whether a positive or negative ramp is used. If four-quadrant multipliers are used, the image on the CRT 18 can be invented by applying a negative control voltage to the multipliers. The use of ramp functions to give a zooming effect gives apparent depth or a third dimension to the image.

While FIG. 2 shows a single size control for controlling the gain of the multipliers 336 and 338 simultaneously, it would, of course, be possible to have separate size controls for each multiplier. In this way, the size of the image in the X and Y direction can be selectively controlled. For example, the square of FIG. 3 would become a rectangle by varying the gain of only one of the multipliers.

ROTATIONAL ANIMATION

Another form of animation provided by this system is rotational animation about the point of origin of the figure. If the figure is a square, such as the one shown in FIG. 3, the rotation would be about the point 306. Rotation is produced by means of a coordinate transformation. Referring to FIG. 6, the formulas for rotating the figure will be derived. There are shown XY coordinate axes and X'Y' coordinate axes. The X'Y' axes are rotated counter-clockwise through an angle α, the angle α being the angle of rotation. Let the vector component x equal A, and the vector component Y, equal B, so that A and B are the original vector components on the XY axes.

A

B projected on X' and Y'.

Then,

A' = A

B' 132 B

A

A

B

B

and A' = A cos α + B sin α

B' = B cos α - A sin α

therefore,

x' = x cos α + y sinα

y' = y cos α - x sinα

If clockwise rotation is assumed, the equations become

x' = x cosα - y sinα and

y' = y cosα + x sinα

The network of FIG. 7 produces the rotational animation. There is shown a sine--cosine generator 350 with a potentiometer input 352. The setting of the potentiometer input 352 determines the angle α. A detailed description of a suitable sine cosine generator 350 is shown in FIG. 3 of and described in U. S. Pat. No. 3,364,382. For the purposes of this disclosure, it is sufficient to know that the generator 350 generates at an output a the cosine of α and at an output b the sine of α. The cosine α function at the output a is fed through a conductor 354 and a conductor 360 to the input a of a multiplier 362. The function x representing the x coordinate voltages of the line segments of the figure, and which corresponds to the signal on the conductor 20 of FIGS. 1 and 2, is fed through the conductor 24 and a conductor 364 to the input b of the multiplier 362. The output from the multiplier 362 which represents x cos α is fed through a conductor 365 to the input a of a summation amplifier 366. The signal on the conductor 24 is also fed through a conductor 368 to the input b of a multiplier 370. The signal at the output b of the sin -- cos generator 350 representing sin α is fed through a conductor 372 and a conductor 374 to an inverter 376. The output from the inverter 376 representing - sin α is fed through a conductor 378 to the input a of the multiplier 370. The output from the multiplier 370 representing - x sin α is fed through a conductor 380 to the input a of a summation amplifier 382. The signal on the conductor 372 representing sin α is also fed through a conductor 384 to the input a of a multiplier 386. The function y representing the y coordinate voltages of the line segments of the figure and which corresponds to the signal on the conductor 22 of FIGS. 1 and 2 is fed through the conductor 32 and a conductor 388 to the input b of a multiplier 390. The signal on the conductor 32 is also fed through a conductor 392 to the input b of the multiplier 386. The output from the multiplier 386 representing y sin α is fed through a conductor 394 to the input b of the summation amplifier 366. The output from the summation amplifier 366 represents x cos α + y sin α which is equal to x'. The signal on the conductor 354 representing cos α is also fed through a conductor 396 to the input a of the multiplier 390. The output from the multiplier 390 representing y cos α is fed through a conductor 398 to the input b of the summation amplifier 382. The output from the summation amplifier 382 represents y cos α- x sin α which is equal to y'. The x' and y' output signals can be fed directly into the E

Therefore, the image on the CRT 18 can be made to rotate about its origin by varying α through use of the potentiometer input 352. Obviously, if α is varied continuously through 360°, the figure can be made to rotate continuously. If the gross position network is used simultaneously with the rotation network, the figure can be made to roll across the screen in any direction.

BOUNDARY LIMITATIONS

Figures animated by the techniques described thus far, for example rotational animation, often have the appearance of floating in space because their motion is not constrained by a boundary such as a floor or a wall. They give the illusion of moving around under conditions of zero gravity. It may be desirable to simulate the effects of certain boundary conditions such as a floor or wall in a gravity field. To accomplish this, the circuit shown in FIG. 8 is used. Suppose for example, a floor is to be simulated so that the corners of the square of FIG. 9 appear to contact the floor as the figure rotates much as a square block would roll on a flat surface. As the square rotates about its origin the corners of the square must just contact the surface of the floor. Therefore, as each corner approaches, the entire square must be raised a distance that equals the distance the corners would otherwise extend beneath the floor. This is accomplished by the boundary simulation networks 50 and 70. As these networks are identical, it is necessary to describe only one in detail.

In FIG. 8, there is shown the network 70 having a flip-flop 412. The input of the flip-flop 412 is connected by the conductors 53 and 72 to the output b of the timing gate generator 10. At the beginning of each cycle of pulses generated by the generator 10, a trigger pulse is generated at the output b of the generator 10 in synchronization with the generation of the reset signal on the conductor 270. This pulse is fed through the conductors 53 and 72 to trigger the flip-flop 412. The flip-flop 412 has outputs a and b. Each time the flip-flop 412 receives a trigger pulse it changes state with signal levels alternately appearing at its a and b outputs. The trigger pulse at the beginning of the first cycle triggers the flip-flop 412 to produce a signal at its output a which is fed through a conductor 414, a conductor 416, and a conductor 418 to a reset circuit 420. The output of the reset circuit 420 is connected by a conductor 422 to the input a of a peak detector 424. The peak detector 424 also has inputs b and c and is a device that tracks a waveform introduced at its input c and stores the peak voltage of the waveform. The input b of the detector 424 is connected by a conductor 426 to an adjustable reference voltage 428 which is set to represent the boundary condition. The reference voltage 428 is fed through the conductor 426 to the input b of the peak detector 424. When the peak detector 424 is reset by the signal on the conductor 422, it will discharge to a voltage level equal to the reference voltage 428 and will hold this voltage until it detects a greater voltage on the waveform it is tracking. If a greater voltage is detected, it will store that voltage. The waveform representing the y or y' coordinate voltages for each of the line segments is fed through the conductor 74 and a conductor 430 to an analog switch 432. The signal on the conductor 416 is also fed through a conductor 434 to the analog switch 432, closing the analog switch at the same time the peak detector 424 is reset to the reference voltage level 428. When the analog switch 432 closes, the y or y' waveform on the conductor 430 is fed through a conductor 436 to the tracking input c of the peak detector 424, enabling the peak detector 424 to track the y or y' waveform and store the peak voltage on that waveform, providing it is greater than the reference voltage 428. The peak respectively voltage is fed through a conductor 440 to an analog switch 444. Another analog switch 446 is connected by a conductor 450 to a potentiometer input 452. The potentiometer input 452 is adjusted to a voltage equal and opposite to the reference voltage 428. The peak voltage from the peak detector 424 and the voltage from the potentiometer input 452 are applied to the analog switches 444 and 446, respectively.

At the beginning of the next cycle (after each element of the figure has been generated one time) another trigger pulse will be generated by the timing gate generator 10 which is fed through the conductors 53 and 72 to trigger the flip-flop 412, causing the flip-flop 412 to change state so that there is a signal at its output b and no signal at its output a. Because there is no signal at the output a, there is no signal on the conductor 434 and the analog switch 432 opens. With the analog switch 432 open, the peak detector 424 will stop tracking and will hold the peak voltage detected before the analog switch 432 opens. The signal at the output b of the flip-flop 412 is fed through a conductor 456, a conductor 460 and a conductor 462 to close the analog switch 444. The signal on the conductor 460 is also fed through a conductor 464 to close the analog switch 446. With the analog switches 444 and 446 closed, the peak voltage from the peak detector 424 is fed by the conductor 440 through the analog switch 444 and a conductor 466 to the input a of a summing amplifier 468, and the potentiometer voltage 452 is fed through the conductor 450, the analog switch 446, and a conductor 470 to the input b of the summing amplifier 468. The output of the summing amplifier 468 is equal to the algebraic sum of the peak voltage from the detector 424 and the potentiometer voltage 452. This algebraic sum is the offset voltage.

Another circuit identical to the one just described generates the offset voltage for the next cycle. Two circuits are necessary, each operating on alternate cycles because each peak detector must sample the waveform for an entire cycle before generating the offset voltage for the next cycle. Hence, the signal on the conductor 456 is also fed through a conductor 472, and a conductor 474 to a reset circuit 476. The reset circuit 476 is identical to the reset circuit 420. The output of the reset circuit 476 is fed through a conductor 478 to the input a of a peak detector 480. The peak detector 480 is identical to the peak detector 424 and operates in exactly the same manner. The peak detector 480 has another input b connected by a conductor 482 to a reference voltage 484. Just as with the reference voltage 428, the voltage 484 is set to represent the boundary condition. When the peak detector 480 receives the signal at the input a, it is reset to a value equal to the voltage 484. The Y' waveform on the conductor 74 is also fed through a conductor 486 to an analog switch 488. The signal on the conductor 472 is also fed through a conductor 490 to close the analog switch 488. With the analog switch 488 closed, the Y' waveform is fed through a conductor 492 to the input c of the peak detector 480. Just as with the peak detector 424, the peak detector 480 tracks the Y' waveform for one complete cycle and stores the peak voltage providing it is greater than the reference voltage 484. This peak voltage is fed through a conductor 494 to an analog switch 498. Another analog switch 500 is connected by a conductor 504 to a potentiometer input 506. The potentiometer input 506 is set to a value equal and opposite to the reference voltage 484. The peak voltage on the conductor 494 and the voltage from the potentiometer input 506 are applied to the analog switches 498 and 500, respectively. At the beginning of the third cycle of pulses from the timing gate generator 10, another trigger pulse is generated to again trigger the flip-flop 412, causing the flip-flop 412 to change state so that there is a signal at its output a and no signal at its output b. With no signal at the output b, the analog switch 488 opens and the peak detector 480 stops tracking. The signal at the output a of the flip-flop 412 is fed through the conductor 414, a conductor 510, and a conductor 512 to close the analog switch 498. The signal on the conductor 510 is also fed through a conductor 514 to close the analog switch 500. With the analog switches 498 and 500 closed, the peak voltage from the peak detector 480 is fed through a conductor 516 to the input d of the summing amplifier 468, and the voltage from the potentiometer input 506 is fed through the conductor 504, the analog switch 500 and a conductor 518, to the input c of the summing amplifier 468. Therefore, the output of the summing amplifier 468 at the beginning of the third cycle is also equal to the algebraic sum of the peak voltage from the detector 480 and the potentiometer voltage 506, which is the offset voltage. The signal on the conductor 414 which closes the analog switches 498 and 500 is also fed through the conductor 416 to reset the peak detector 424 and close the analog switch 432 to track the Y' waveform for the next cycle. This tracking by each peak detector of alternate cycles continues to generate an offset voltage for each cycle. Referring again to FIG. 1, this offset voltage is fed through the conductor 68 to the summation amplifier 64 where it is added to the Y' voltages.

While the boundary simulation network 70 just described operates on the Y or Y' coordinate waveform, this same circuit is used in the simulation network 50 to simulate X coordinate boundary conditions by tracking the X or X' waveform.

By way of example, the operation of the boundary network 70 will be explained with reference to the square 520 oriented as in FIG. 9 and the waveforms of FIG. 10. Assume that the conditions to be simulated are the rolling of the square 520 across a floor 522. The floor 522 being the boundary condition. As the square 520 rotates about its origin 524 each of its corners, such as the corner 526, must contact the surface of the floor 422 and not extend beneath it. Therefore, as the square 520 rotates, the entire square must be raised a sufficient amount so that each of the corners just contact the floor 522. For this condition, the square 520 assumes the position of the square 520' shown by dotted lines in FIG. 9. The waveform 530 of FIG. 10 shows the trigger pulses generated at the beginning of each cycle by the timing gate generator 10. These pulses trigger the flip-flop 412. The waveform 532 is either the Y or Y' coordinate of the waveform for generating the square 520 of FIG. 9. In this waveform, the floor 522 is represented by a voltage level -E

CLOSURE NETWORK

Another feature of this invention which provides great versatility in animating certain types of figures, is the automatic closure network. Using the commutating scheme of FIG. 2, a figure is generated by appropriate adjustment of the X,Y, and intensity potentiometers. Animation is produced by varying these potentiometers. However, in order for the figure to remain closed during an animation sequence, x

The closure circuit for the X coordinate signals is shown in FIG. 11. There is an identical closure circuit for the Y coordinate signals, so that it will suffice to describe only one. The network including the timing gate generator 10, the commutator 150, and the integrator 174 is identical to that shown in FIG. 2 but has been included in FIG. 11 for convenience. The commutator 150 has the potentiometer input 156 representing x

The operation of the closure network can be explained with reference to the triangle of FIG. 12. A triangle is a good figure to use as an example since its shape can be greatly varied while maintaining its basic configuration. The triangle of FIG. 12 has four line segments, 571, 572, 574, and 576. This figure can be easily animated by varying the length and/or direction of segments 571, 572 and 574 with the segment 576 always being such that it will automatically close the figure. To generate this triangle, the timing gate generator 10 is programmed to generate a series of five pulses per cycle. Using only the X voltages for the purpose of this example, the X voltage for the segment 571 is set by the potentiometer input 156 to the commutator 150, the X voltage corresponding to the line segment 572 is set by the potentiometer input 158, and the X voltage for the line segment 574 is set by the potentiometer 550. The first gate pulse from the generator 10 resets the integrator 174. The second gate pulse from the generator 10 gates the potentiometer input voltage 156 for the line segment 571 through the commutator 150 and the conductor 172 to the integrator 174. The second pulse also gates the enable circuit 556 which enables the track and hold circuit 553, causing the circuit 553 to track the integrated waveform for the line segment 571 and to hold the final X coordinate value of the line segment 571. The third pulse from the generator 10 gates the potentiometer input 158 for the line segment 572 through the commutator 150 and the conductor 172 to the integrator 174. The integrated waveform for this line segment is fed through the conductors 20 and 24 as heretofore described. The fourth pulse from the generator 10 gates the potentiometer input 550 for the line segment 574, which is the n-1 line segment, through the commutator 150 and the conductor 172 to the integrator 174. The fourth pulse also gates the enable circuit 566 which enables the track and hold circuit 562, causing the circuit 562 to track the integrated waveform for the line segment 574 and to hold the final X coordinate value of the line segment 574. The final value of the line segment 571 and the final value of the line segment 574 are fed into the differential amplifier 560 which generates at its output the algebraic difference between these two final values. This algebraic difference is fed back to the input 551 of the commutator 150. When the fifth and final pulse of the series is generated by the generator 10, the feedback signal at the input 551 is gated through the commutator 150 and conductor 172 to the integrator 174. This integrated output is the exact waveform necessary to generate the final line segment 576 to close the figure. This waveform is fed through the conductors 20 and 24 as heretofore described.

As previously explained, the automatic closure circuit for the Y coordinate voltages is identical to that just described. Therefore, by varying the potentiometer inputs 156, 158, and 550, as well as the corresponding potentiometer inputs for the Y coordinate voltages animation can be imparted to the triangle of FIG. 12 resulting in great variations in its shape with the triangle always remaining closed.

A system has thus been described for generating and displaying two-dimensional figures and animating these figures in a variety of sequences. While the system has been generally described with reference to FIG. 1, it is to be understood that not all of the features need be used at once. The network can easily be rearranged for use of only a portion of the system shown in FIG. 1 depending on the animation requirements.

Various changes and modifications may be made within the invention as will be readily apparent to those skilled in the art. Such changes and modifications are within the scope and teaching of this invention as defined by the claims appended hereto.