Patent Publication Number: US-6911981-B2

Title: Method, apparatus, and article of manufacture for displaying a line at an angle relative to an existing entity

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
   This application is a continuation of application Ser. No. 09/256,664, filed Feb. 24, 1999,now U.S. Pat. No. 6,346,943, entitled ‘METHOD, APPARATUS, AND ARTICLE OF MANUFACTURE FOR DEFINING A RELATIVE POLAR ANGLE SNAP CAD TOOL’, which application is incorporated herein by reference. 
   Application Ser. No. 09/256,896, entitled “ACQUIRING AND UNACQUIRING ALIGNMENT AND EXTENSION POINTS,” filed on the same date herewith, by Alexander Thoemmes and Brett K. Bloomquist, attorney&#39;s docket number 30566.60US01; and 
   Application Ser. No. 09/256,661, entitled “AUTOMATIC TRACKING OF TEMPORARY POINTS,” filed on the same date herewith, by Brett K. Bloomquist and Alexander Thoemmes, attorney&#39;s docket number 30566.61US01. 

   BACKGROUND OF THE INVENTION 
   1. Field of the Invention 
   The present invention relates to computer-implemented systems and methods for drawing images, and in particular to a computer-aided drafting tool for drawing lines at pre-settable angles from an existing linear entity and at pre-settable distances from pick points on the existing linear entity. 
   2. Description of the Related Art 
   Computer Aided Design (CAD) and other drawing programs allow the preparation and editing of machine drawings, schematic drawings, and artwork. Typically, the user creates these drawings with the use of a library of objects and a number of drawing tools. These drawing tools allow the user to define and edit lines, polygons, ovoids, and other shapes. 
   One useful feature in such drawing programs is the ability to snap lines, and shapes to certain global coordinate frames. An example of such a system is the polar coordinate snap tool disclosed in U.S. Pat. No. 5,793,377, issued to Moore on Aug. 11, 1998, which is hereby incorporated by reference herein. This snap tool allows the user to specify a polar coordinate snap angle and length to which all future lines will be constrained. 
   However, in prior systems, the polar coordinate snap angle and length is referenced to a fixed (x,y) Cartesian coordinate frame, and hence only permit the drawings to snap to a coordinate frame that is globally applied to an entire drawing. No provision is made to constrain a new line to a specified geometrical relationship (such as a relative angle) with an existing line. This deficiency limits the usefulness of the conventional polar snap tools. What is needed is a tool that allows the user to draw new lines with specific, pre-defined geometrical relationships with existing lines. The present invention satisfies that need. 
   SUMMARY OF THE INVENTION 
   To address the requirements described above, the present invention discloses a method, apparatus, article of manufacture for defining a line at a relative angle from a linear entity. 
   The method comprises the steps of accepting a command having a first pick point on the linear entity, computing an extension line extending from the first pick at a pre-settable relative angle from the linear entity when indicated by a position of a cursor, and displaying the extension line. In one embodiment, the extension line is snapped to a pre-set line based upon the distance between the cursor and the pre-set line. In another embodiment, the extension line is snapped to a pre-set line based upon its angular proximity to one of the pre-set snap lines. In yet another embodiment, the extension line is snapped to the pre-set line using either of the above methods, depending upon the distance between the cursor and the first pick point. Provision is made to snap the length of the extension line to a pre-settable linear distance from the linear entity. 
   The apparatus comprises a means for accepting a command having a first pick point on the linear entity, means for computing an extension line extending from the first pick point at a pre-settable relative angle from the linear entity when indicated by a position of the first cursor, and a means for displaying the extension line. In one embodiment of the present invention, the means for performing these operations are implemented in a computer operatively coupled to a display device. The article of manufacture comprises a data storage device tangibly embodying instructions to perform the method steps described above. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Referring now to the drawings in which like reference numbers represent corresponding parts throughout: 
       FIG. 1  is a block diagram showing an exemplary hardware environment for practicing the present invention; 
       FIGS. 2A-2C  are flow charts presenting illustrative examples of process steps used to implement the relative polar snap tool; 
       FIG. 3  is a diagram showing the operation of one embodiment of the relative polar snap tool, in which the distance between the cursor and the snap line is defined by the first pick point at a pre-settable relative angle; and 
       FIG. 4  is a diagram showing the operation of a second embodiment of the relative polar angle snap tool in which the angle between the first pick point and the cursor is used to determine the extension line. 
   

   DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
   In the following description, reference is made to the accompanying drawings which form a part hereof, and which is shown, by way of illustration, several embodiments of the present invention. It is understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present invention. 
   Hardware Environment 
     FIG. 1  illustrates an exemplary computer system  100  that could be used to implement the present invention. The computer  102  comprises a processor  104  and a memory, such as random access memory (RAM)  106 . The computer  102  is operatively coupled to a display  122 , which presents images such as windows to the user on a graphical user interface  118 B. The computer  102  may be coupled to other devices, such as a keyboard  114 , a mouse device  116 , a printer  128 , etc. Of course, those skilled in the art will recognize that any combination of the above components, or any number of different components, peripherals, and other devices, may be used with the computer  102 . 
   Generally, the computer  102  operates under control of an operating system  108  stored in the memory  106 , and interfaces with the user to accept inputs and commands and to present results through a graphical user interface (GUI) module  118 A. Although the GUI module  118 A is depicted as a separate module, the instructions performing the GUI functions can be resident or distributed in the operating system  108 , the application program  110 , or implemented with special purpose memory and processors. The computer  102  also implements a compiler  112  which allows an application program  110  written in a programming language such as COBOL, C++, FORTRAN, or other language to be translated into processor  104  readable code. After completion, the application  110  accesses and manipulates data stored in the memory  106  of the computer  102  using the relationships and logic that was generated using the compiler  112 . 
   In one embodiment, instructions implementing the operating system  108 , the computer program  110 , and the compiler  112  are tangibly embodied in a computer-readable medium, e.g., data storage device  120 , which could include one or more fixed or removable data storage devices, such as a zip drive, floppy disc drive  124 , hard drive, CD-ROM drive, tape drive, etc. Further, the operating system  108  and the computer program  110  are comprised of instructions which, when read and executed by the computer  102 , causes the computer  102  to perform the steps necessary to implement and/or use the present invention. Computer program  110  and/or operating instructions may also be tangibly embodied in memory  106  and/or data communications devices, thereby making a computer program product or article of manufacture according to the invention. As such, the terms “article of manufacture” and “computer program product” as used herein are intended to encompass a computer program accessible from any computer readable device or media. 
   Those skilled in the art will recognize many modifications may be made to this configuration without departing from the scope of the present invention. For example, those skilled in the art will recognize that any combination of the above components, or any number of different components, peripherals, and other devices, may be used with the present invention. 
     FIGS. 2A-2C  are flow charts showing exemplary operations used to practice the present invention.  FIGS. 2A-2C  are discussed in conjunction with  FIGS. 3 and 4 , which present illustrative examples of the relative polar angle snap tool. 
     FIG. 2A  is a flow chart showing the operations used to practice one embodiment of the present invention. First, a first pick point  308  on a linear entity such as existing line  302  is defined, as shown in block  202 . This can be implemented by a command having the first pick point  308 . Typically, the first pick point  308  is selected by positioning a cursor over the point with a mouse  116  or other pointing device, and depressing a mouse button. The first pick point  308  can be selected by other methods as well. For example, in cases where the first pick point  308  is the end point of the existing line  302 , the instructions used to draw the existing line  308  can automatically select the end point of the existing line  308  as the first pick point  308 , or the user may elect to do so by a menu selection using the GUI  118 B. Further, the first pick point can be any point along the existing line  302 , including an end point or a center point of the existing line  302 . 
   In the illustrated embodiment, the linear entity is a line  302 , but this need not be the case. The linear entity can also be a linearly representable attribute of a wide variety of objects. For example, the linear entity could be the major or minor axis of an elliptically-shaped object. Similarly, the linear entity can be a tangent of an arc or a circle at a selected point (for example, the mid-point of an arc), or one of the sides of a multi-sided polygon. 
   The existing line  302  is typically drawn at an angle θ  304  to the horizontal global reference or x-axis  306 . However, the existing line can be drawn such that the existing line is parallel to the x-axis (θ=0) as well. 
   Next, an extension line  324  is computed when indicated by the position of the cursor  310 , as shown in block  204 . The extension line  324  extends from the first pick point  308  at a pre-settable relative angle from the linear entity  302 . This operation is depicted in block  204  of FIG.  2 A. The extension line  324  is then displayed  206 . In the illustrated embodiment, the extension line  324  is a rubber-banded line. 
   In one embodiment of the present invention, the relative snap tool also allows the user to snap to one of a plurality of pre-settable extension line lengths. This is accomplished by defining a second cursor  322  on the extension line  324 , and displaying the second cursor  322  on the display  122 . The user may then select a button on the mouse  116  to define the length of the extension line  324 . In one embodiment, the length of the extension line  324  is determined by determining a reference point  316  on the extension or snap line  314  that is nearest the position of the first cursor  310 . Then, a determination is made as to when the reference point  316  is within an extension line snap distance  320  from one of a plurality of pre-settable distances  318  from the first pick point  308 . In the embodiment illustrated in  FIG. 3 , the reference point  316  is within an extension line snap distance  320  from the third pre-settable distance from the first pick point. Accordingly, the second cursor  322  is placed in this position along the extension line  324 . 
   In another embodiment of the present invention, the relative snap tool also optionally provides a pop-up  326  that displays textual information about the relative polar snap parameters. In the embodiment illustrated in  FIG. 3 , the pop-up  326  shows that the relative polar snap tool is active, and that the extension line snap length and angle are set to three units and 45 degrees, respectively. If desired, the user may use the mouse to select the pop-up window, and change the relative polar snap tool parameters. As shown in blocks  212  and  214  of  FIG. 2A , the pop-up function can be bypassed if desired. 
     FIG. 2B  is a flow chart illustrating one embodiment of the computation of the extension line  324  in one embodiment of the present invention.  FIG. 3  is a diagram showing an application of the process steps shown in FIG.  2 B. In this embodiment, the extension line  324  is computed from a distance  312  from a first cursor  310  and snap line  314  defined by the first pick point  308  and at a pre-settable angle γ  328  from the existing line  302 , as shown in block  216 . If the distance  312  between the first cursor  310  and the snap line  314  is less than a snap distance, an extension line  324  is defined from the snap line  314 , as shown in blocks  218  and  222 . If the distance  312  between the first cursor  310  and the snap line  314  is more than the snap distance, the extension line  324  is not defined or displayed, and further cursor input is accepted, as shown in blocks  218  and  220 . 
     FIG. 2C  is a flow chart illustrating another embodiment of the computation of the extension line  324 .  FIG. 4  is a diagram showing application of the process steps shown in FIG.  2 C. In this embodiment, the extension line  324  is determined by computing a relative angle δ  408  between the existing line  302  and a cursor line  410  line defined by the first pick point  308  and the first cursor  310  position, as shown in block  222  of FIG.  2 C. If the relative angle δ  408  is not within a snap distance (here, an angular distance β  404 ) to a pre-settable relative angle γ  328 , the snap line  314  is not drawn, and further cursor input is accepted. This is depicted in blocks  224  and  226  of FIG.  2 C. If, as illustrated in  FIG. 4 , die relative angle δ  408  is within the angular snap distance β  404  to a pre-settable relative angle δ  408 , the snap line  314  is drawn, and the extension line  324  is defined from the first pick point  308  and extending at the pre-settable relative angle δ  408  from the existing line  302 . 
   The foregoing discloses two methods for computing the extension line  324 . The first method compares the angle formed between the existing line  302  and the line defined by the first pick point  308  and the cursor  310  with the pre-settable angles, and defines an extension line  324  when the angle is within a first snap distance or snap angle. The second method uses the distance from the cursor position to the nearest of the lines emanating from the first pick point  308  at the pre-settable angles relative to the existing line  302 . In one embodiment of the present invention, the method of computing the extension line is selected from these two methods depending upon a user-settable mode distance from the first pick point  308  to the cursor  310  position. For example, as the cursor  310  approaches the first pick point  308 , the extension line  324  may be determined by the second method, whereas when the cursor is farther away from the first pick point  308 , the extension line may be determined by the second method. 
   CONCLUSION 
   This concludes the description of the preferred embodiments of the present invention. In summary, the present invention describes a method, apparatus, and article of manufacture for defining a relative polar snap tool. 
   The method comprises the steps of accepting a command having a first pick point on the linear entity, computing an extension line extending from the first pick at a pre-settable relative angle from the linear entity when indicated by a position of a cursor, and displaying the extension line. In one embodiment, the extension line is snapped to a pre-set line based upon the distance between the cursor and the pre-set line. In another embodiment, the extension line is snapped to a pre-set line based upon its angular proximity to one of the pre-set snap lines. In yet another embodiment, the extension line is snapped to the pre-set line using either of the above methods, depending upon the distance between the cursor and the first pick point. Provision is made to snap the length of the extension line to a pre-settable linear distance from the linear entity. 
   The apparatus comprises a means for accepting a command having a first pick point on the linear entity, means for computing an extension line extending from the first pick point at a pre-settable relative angle from the linear entity when indicated by a position of the first cursor, and a means for displaying the extension line. In one embodiment of the present invention, the means for performing these operations are implemented in a computer operatively coupled to a display device. The article of manufacture comprises a data storage device tangibly embodying instructions to perform the method steps described above. 
   The foregoing description of the preferred embodiment of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. For example, in the foregoing illustrative examples, the first pick point was selected as an end point or a center point of the linear entity. However, the first pick point can be any point on the linear entity, allowing present invention to be used to define a line extending from any point on the linear entity at the desired relative angle. 
   It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto. The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.