Geometrical display generator

A user-friendly procedure for the generation and display of geometric figures on a graphics screen uses a cursor placement device such as a joy stick to both define the initial position and size of the geometrical figure. Two specific examples are described: the generation of a circle and the generation of a square or rectangle. In the first example, the cursor is first positioned to point to the center of the circle at which point a small circle is drawn. The circle is expanded in response to the pressing of a designated key by the user until the desired size is attained. In the second example, the pointing by the cursor is to the upper left corner of the square or rectangle, and the square or rectangle is then expanded in response to the user deflecting the joy stick down and to the right.

RELATED APPLICATION 
This application describes a geometrical figure generator that is used to 
define an alarm window in the invention described in application Ser. No. 
06/531,774 entitled "Display System for Monitoring and Alarm System" filed 
concurrently herewith by Lawrence Keith Stephens now U.S. Pat. No. 
4,588,987. The invention described in this application may also be used to 
advantage in the schematic display generator that is the subject of 
application Ser. No. 06/499,458 filed by Lawrence Keith Stephens on May 
31, 1983, entitled "Schematic Building Cursor Charactor". All of these 
applications are assigned to a common assignee. 
FIELD OF THE INVENTION 
The subject invention is generally directed to the generation and display 
of geometric figures on a graphics screen, and more particularly, the 
invention is a user-friendly procedure that uses a cursor placement device 
such as a joy stick to both define the initial position and size of the 
geometrical figure. By geometrical figure, I mean a predefined figure of 
generally symmetrical shape such as a circle, square, rectangle or other 
rhombic figure, triangle, trapezoid, or other polygon. 
BACKGROUND OF THE INVENTION 
There are many situations in the operation of computer generated graphics 
displays where the user desires to generate, for example, a circle. 
Typically, this is done by invoking a circle generating program which 
requires the user to input first the center of the circle on the graphics 
display and then to input the radius of the circle. The program then 
generates a circle with that center and radius on the graphics display. 
This procedure works well for many applications but presumes prior 
knowledge of the user as to where and what size the circle should be. In 
the case of free hand drawings and schematics, the user may not in fact 
have such prior knowledge and therefore must resort to a tedious trial and 
error process of graphics generation. Moreover, since the program is 
specifically written to generate circles, the user has no choice in the 
generation and display of other geometric figures unless programs are 
written that are specifically tailored for the desired figures. These 
problems can be overcome by the use of a digitizer pad as an input to the 
computer. A digitizer pad would permit the user to generate any size or 
shape of geometrical figure at any location on the graphics screen, but 
commercially available digitizer pads are very expensive and are therefore 
generally used in correspondingly expensive computer aided design (CAD) 
systems. 
SUMMARY OF THE INVENTION 
It is therefore an object of the present invention to provide a 
user-friendly method of drawing geometric figures on a graphics screen. 
It is a further object of the invention to provide a procedure for drawing 
geometric figures on a graphics screen which is both easy to use and is 
practiced with relatively inexpensive hardware. 
The foregoing and other objects of the invention are accomplished by using 
an inexpensive cursor positioning device such as a joy stick, track ball 
or "mouse". The preferred embodiment of the invention is described in 
terms of a joy stick being the cursor positioning element, but it will be 
understood by those skilled in the art that other well known devices such 
as track balls and "mice" which are used as cursor positioning elements 
can be used just as effectively as the joy stick. In addition to the joy 
stick, an ENTER key is required for the practice of the invention, but 
many cursor positioning devices are equipped with one or more buttons, one 
of which can be used to provide the function of the ENTER key. In the 
practice of the invention, the type of geometric figure is chosen, 
typically from a menu displayed for that purpose, and then the user is 
prompted to point to the desired location of the figure. The user 
accomplishes this by moving the cursor to the desired location and 
pressing the ENTER key. At this point, the cursor is XORed to remove it 
from the screen, and an initial small sized geometrical figure of the type 
chosen is drawn on the screen. The user then uses the joy stick to cause 
the figure to increase in size. When the desired size has been attained, 
the user indicates this by pressing the ENTER key. At this point, size and 
position of the geometrical figure is stored and the cursor is 
redisplayed. 
The location of the cursor for the original pointing of location may 
conveniently be the center of the geometric figure. In the preferred 
embodiment of the invention, the center is in fact chosen for the 
generation of circles, but the center is not the only location that may be 
used for the pointing of location of the geometric figure. In my copending 
application Ser. No. 06/531,774 entitled "Display for Monitoring and Alarm 
System" now U.S. Pat. No. 4,588,987, I generate boxes which are used as 
alarm windows on schematic displays. The convention I have chosen in that 
application is to require the user to point to the upper left corner of 
the box. The box increases in size to the right horizontally and 
vertically downwardly from this point as the user moves the joy stick down 
and to the right. Obviously other conventions will suggest themselves to 
those of ordinary skill in the art based on the following detailed 
description of the invention.

DETAILED DESCRIPTION OF THE INVENTION 
The invention will be described by way of specific examples adapted for use 
on the IBM Personal Computer. Obviously, the invention is not limited to 
this specific microcomputer system or even to microcomputer systems and 
may have useful application to minicomputer systems or even main frame 
computer systems. However, the invention is particularly useful in 
microcomputer systems because of the relative economies of such systems 
and the fact that the invention is itself correspondingly inexpensive. 
The first example is the drawing of a circle. The program, which is set 
forth in more detail hereinafter, presumes that the circle drawing process 
is used in conjunction with the schematic generator described in my 
earlier copending application Ser. No. 06/499,458 entitled "Schematic 
Building Cursor Character". In that application, the cursor symbol is 
chosen from among a plurality of symbols in a symbol table. These symbols 
are used in the actual construction of the schematic display by placing 
the symbols at desired locations on the graphics screen and then reading 
them into memory in response to an interrupt signal produced by the 
operator pressing a button on the joy stick control. Thus, the first steps 
in the specific example given of generating a circle involve the exclusive 
ORing of the old cursor symbol to remove it from the graphics screen and 
saving the old symbol height and width for later recall. Then, the new 
cursor symbol's height and width is initialized and the new cursor symbol 
is exclusive ORed onto the graphics screen. Typically, the new cursor 
symbol is a conventional small square or rectangle and may blink on and 
off. Clearly, if the circle generation technique according to the 
invention were to be used in an environment where the cursor symbol was 
not initially a schematic character symbol, then the process of exclusive 
ORing the old cursor symbol and saving its dimensions would not be 
required. 
The user enters the circle generation mode by making the appropriate 
selection from a menu. Once in the circle mode, the user is prompted to 
point to the location on the graphics screen where s/he would like the 
center of the circle. This is done by moving the joy stick, but as 
previously mentioned, other cursor positioning devices could be used. When 
the cursor is positioned to the desired location of the center of the 
circle, the user presses the button on the joy stick or the ENTER key to 
signify selection. The button pressing generates an interrupt which is 
trapped by the program and control is passed to a subroutine which sets a 
flag signifying the occurance. Control returns to the program's main loop 
which checks the flag at a designated point and gives control to the 
circle routine. The circle routine first exclusive ORs the cursor off the 
screen and then prompts the user with various circle options. These 
include change of color (by pressing function key F9), terminate circle 
expansion (by pressing function key F10 ), and expand the circle one pixel 
in radius (by pressing the joy stick button). The circle routine begins by 
drawing an initial three pixel circle at the initial pointing and starts 
looping until the function key F10 is pressed. Inside the loop, if 
function key F9 is pressed, the color variable is changed. Also, the old 
circle is continuously removed from the screen by exclusive ORing and the 
position and size data of the old circle are saved. If during this 
operation and joy stick button or the "+" key is pressed, the radius 
variable is increased by one pixel and compared to a maximum value of 30 . 
If it is greater than 30 , then it is set equal to 30 . The new circle is 
then drawn on the screen. After the function key F10 has been pressed 
signifying that the user wants the circle expansion to terminate, the 
circle position and size are saved and the user is prompted to select a 
fill color for the circle. The user makes a selection from a menu provided 
for that purpose, and the circle is then filed with the selected color. At 
this point in the routine, the routine returns to the point in the program 
at which the circle generation routine was entered. The FIG. 1 is a flow 
chart which illustrates the circle drawing process just described. 
Those skilled in the art will recognize that various modifications can be 
made from the basic procedure just described for circle generation. First, 
while the specific example is described in terms of a color graphics 
embodiment where both the circumference of the circle and the interior of 
the circle may be selected to have different colors, the procedure is 
equally well suited for monochrome graphics without these choices of 
color. The basic technique is the ability to point to the desired center 
of the circle with the cursor and then to expand the circle until the 
desired size has been reached. Second, while the specific example requires 
the user to press either the button on the joy stick or the "+" key to 
expand the circle by one pixel increments, some other key or control can 
be used to accomplish the same result. For example, the joy stick which 
was originally used to move the cursor to point to the center of the 
circle could, after the joy stick button or the ENTER key was pressed, 
then be used to expand the circle by pushing the joy stick in one 
direction until the desired size was reached. The use of the joy stick for 
this function would make possible user control in how fast the circle 
expanded in size, i.e. a slight deflection of the joy stick would produce 
a slow expansion and a greater deflection of the joy stick would produce a 
correspondingly greater expansion rate of the circle. Also, it would be 
possible to decrease the size of the circle by moving the joy stick in the 
opposite direction. A similar result could be achieved by pressing the "-" 
key. 
The next specific example is the drawing of a square or a rectangle. This 
example is used in my copending application Ser. No. 06/531,774 entitled 
"Display for Monitoring and Alarm System", now U.S. Pat. No. 4,588,987, 
and is used to define an alarm window. The chief differences between this 
example and the specific example of drawing a circle are that (1) the 
pointing with the cursor is not made to the center of the geometric figure 
and (2) expansion of the figure is accomplished by manipulating the joy 
stick. More specifically, the pointing is made to the upper left corner of 
the square or rectangle. Expansion of the square or rectangle is then 
accomplished by deflecting the joy stick down and to the right. FIG. 2 is 
a flow chart which illustrates the box or rectangle drawing process just 
described. 
From these specific examples, those skilled in the art will understand that 
the basic principles of the invention can be expanded to include many 
other geometric figures of generally symmetrical shape that are 
susceptible of being stored in a graphics character memory. These figures 
require some predefined symmetry upon which expansion in one pixel 
increments is based. For example, in the circle case, expansion is based 
on increasing the radius by one pixel increments. In the square or 
rectangle case, expansion is based on increasing the horizontal x and 
vertical y dimensions in one pixel increments or some ratio of x to y 
dimensions. 
The following is a listing of the applicant's schematic generator program 
which includes the complete programs for the two specific examples 
described hereinabove, which program was written using the IBM Personal 
Computer BASIC Compiler, version 1.00: 
##SPC1##