Abstract:
An invented computer curve construction system is described that enables construction of conics more intuitively, predictably, and accurately. Also new constructions of particular cubic Bezier curves and their conic analogs are described.

Description:
RELATED APPLICATIONS  
       [0001]    Provisional Application, No. 60/424,097, filed Nov. 5, 2002, by Brigit Ananya for “Computer Curve Construction System II”. 
     
    
     
       BACKGROUND OF THE INVENTION  
         [0002]    1. Field of the Invention  
           [0003]    This invention relates generally to computer curve construction systems and methods. In particular, it describes additional embodiments of a “Computer Curve Construction System” described in U.S. Pat. No. 6,441,823, Ananya, where the chosen curves are conical sections.  
           [0004]    2. Description of Related Art  
           [0005]    A conic is a mathematically defined curve. For example, as shown in FIG. 1, typically a conic it is drawn (constructed) with a computer curve drawing program by setting a start point a 0 , an end point a 1 , and a control point a 2 , and then choosing any arbitrary point a 3  on the conic. The tangent directions of the conic are determined by the control point a 2 , and the shape of the conic is determined by the chosen arbitrary point a 3 . However, simply choosing an arbitrary point a 3  that will be somewhere on the conic does not allow a program operator to intuitively anticipate the shape of the conic that will be constructed by the computer.  
           [0006]    In contrast, U.S. Pat. No. 6,441,823, Ananya, B., describes a computer curve construction system for creating peak-point curves by selecting a star point, a start tangent direction, an end point spaced from the start point, an end tangent direction, and a peak point somewhere between the start and end points where the program calculates and draws a curve connecting the start and end points passing through the peak point where the tangent of the curve at the peak point is parallel to the chord between the start and end points. [See claims  13 ,  14 ,  15 , &amp;  16 , Col. 24 ll 7-54.] By defining a peak point, the curve construction system described in Ananya enables the operator to better anticipate, intuitively, the shape of the curve the program will construct responsive to operator input.  
           [0007]    Conical section or conics have the advantage of being generally more geometric than Bezier curves. This geometric feature allows for easier operator conceptualization of a contemplated curve before inputting defining parameters. Secondly, behavior of conics are computationally predictable with established relationships that exist or can be easily defined. Yet for formulations and accurate numeric approximations by a computer (CPU) constructing the conic, the defining signature constraints on the operator selected parameters must satisfy particular conditions before the computer program can allow construction of a desired curve.  
         SUMMARY OF THE INVENTION  
         [0008]    An invented computer curve construction system is described that enables construction of conics more intuitively, predictably, and accurately. Also new constructions of particular cubic Bezier curves and their conic analogs are described.  
           [0009]    As in Ananya (supra) the newly invented computer curve constructions allow curves that consist of several curve components connected either with G 0  continuity, i.e. continuity of points (geometric continuity of order 0), G 1  continuity, i.e. continuity of points and tangent directions, just the angles of the tangents, (geometric continuity of order 1), or G 2  continuity, i.e. continuity of points, tangent directions, and curvatures (geometric continuity of order 2).  
           [0010]    In a first embodiment, construction of a conic peak-point curve is described where the operator inputs are:  
           [0011]    (i) the start point, a 0 ;  
           [0012]    (ii) the end point, a 1 ;  
           [0013]    (iii) the start tangent direction, e 0 ;  
           [0014]    (iv) the end tangent directions, e 1 ; and  
           [0015]    (v) the distance of the peak point, p from the chord between the start and end points.  
           [0016]    The peak point is the point on the curve that is farthest away from the chord sometimes referred to as the shoulder point of the curve. For conics the peak point always lies on the centerline segment connecting the center of the chord with the intersection point t of the rays extending in the start and end tangent directions e 0 , e 1  respectively from the start and end points a 0 , a 1  [hereinafter referred to as start and end tangents].  
           [0017]    In a second embodiment, construction of a conic point-point curve is described where the operator inputs are:  
           [0018]    (i) the start point, a 0 ;  
           [0019]    (ii) the start tangent direction, e 0 ; and  
           [0020]    (iii) the peak point, p.  
           [0021]    From these inputs, the computer system displays a guide area locating possible end point loci. The guide area is defined by 2 rays intersecting at a point s that lies on a one of the 2 rays that extends from the start point a 0  in the direction of the peak point p at twice (2×) the distance of the peak point p from the start point a 0 . The other ray extends from s in the direction opposite to the start tangent direction e 0 .  
           [0022]    (iv) The operator then selects any point in the guide area as the end point a 1  of the curve.  
           [0023]    The computer, using any suitable mathematical formulae then constructs a curve passing through the start point, a 0 , peak point, p, and the end point a 1 . The end point tangent direction e 1  is derived from the known point of intersection of the start and end tangents coinciding with the intersection of start tangent and the line connecting the center of the chord between the start and end points a 0 , a 1 , and the peak point, p.  
           [0024]    In a third embodiment, construction of a conic point-tangent curve is described wherein the operator inputs are:  
           [0025]    (i) the start point, a 0 ;  
           [0026]    (ii) the start tangent direction, e 0 ;  
           [0027]    (iii) the end point, a 1 ;  
           [0028]    (iv) the end point tangent directions, e 1 ; and  
           [0029]    (v) a fixed weight, w, or fixed cos-weight, v, for the curve.  
           [0030]    The computer, using any suitable mathematical formulae, then constructs a curve passing through the start point, a 0 , and the end point a 1 . The input weight w is a parameter defined as the proportion between the distance of a peak point from the center point q of the chord between the start and end points a 0 , a 1  and the distance of the peak point from the intersection point t of the start and end tangents. Accordingly, the input weight w chosen for the curve locates the peak point on the centerline segment connecting q with t. In this construction system, a fixed cos-weight v is an arbitrarily defined positive parameter that utilizes a multiplication factor such as the trigonometric cosine relationship for computing a weight that limits the permitted range of the peak points of the possible curves. For example, when the angle α between the start and end tangent directions, e 0  , e 1 , is set by operator input near 180°, the height of a fixed weight curve (the locus of the peak point p) approaches infinity as α approaches 180°, whereas the height of a fixed cos-weight curve is limited as a approaches 180°, e.g., if the fixed cos-weight v utilizes a factor cos(α/2) for computing the weight w, which approaches zero as α→180°, the loci of the peak points for the possible curves approaches a limit.  
           [0031]    In a fourth embodiment, construction of a conic point curve is described wherein the operator inputs are:  
           [0032]    (i) the start point, a 0 ;  
           [0033]    (ii) the start tangent direction, e 0 ; and  
           [0034]    (iii) the end point, a 1 , and  
           [0035]    (iv) a fixed weight, w, or fixed cos-weight, v, for the curve  
           [0036]    The computer, using any suitable mathematical formulae, then constructs a curve passing through the start point, a 0 , and the end point a 1 , where the end tangent direction e 1  is automatically set, e.g. in a symmetric way such that the angle between a ray extending from the start point a 0  in the direction of the end point a 1 , and the end tangent direction, e 1 , equals the angle of between the start tangent direction, e 0  and that ray. As in the case of the conic point-tangent curve, the chosen weight w or cos-weight v locates the peak point, p on the centerline segment between the center point of the chord and the intersection point t of the start and end tangents.  
           [0037]    There are essentially infinite possible conic point-tangent curve constructions, and, as well, infinite possible conic point curve constructions because of the possible weights, w, or cos-weights, v, that can be selected by an operator. The invented concept of using a fixed weight w or a fixed cos-weight v is also applicable to cubic Bezier curves and many other curve classes. By choosing to place the peak point p on the centerline segment connecting the center of the chord between the start and end points with the intersection point of the start and end tangents, the selected weight w or cos-weight v determines the position of the peak point.  
           [0038]    In a fifth embodiment, construction of a conic curvature curve is described where the operator inputs are:  
           [0039]    (i) the start point, a 0 ;  
           [0040]    (ii) the start tangent direction, e 0 ; whereupon the computer displays a guideline perpendicular to the start tangent direction, e 0  for the center m 0  of the start curvature circle, r 0 ;  
           [0041]    (iii) the center m 0  of the start curvature circle r 0  on the displayed guideline; and  
           [0042]    (iv) the end point a 1 ; and  
           [0043]    (v) the end tangent direction, e 1 .  
           [0044]    For conic curvature curves, the start curvature determines the end curvature. The computer, using any suitable mathematical formulae, then establishes a center m 1  for the end curvature circle r 1  and draws a conic curve through the start and end points a 0 , a 1 , with respective start and end tangent directions of e 0 , e 1  with the center m 0  of the start curvature circle r 0 .  
           [0045]    In a sixth embodiment, a construction system for a new class of point curvature curves including those for cubic Bezier curves and conics is described where the operator inputs are:  
           [0046]    (i) the start point, a 0 ;  
           [0047]    (ii) the start tangent direction, e 0 ; whereupon the computer displays a guideline perpendicular to the start tangent direction, e 0  for the center m 0  of the start curvature circle r 0 ;  
           [0048]    (iii) the center m 0  of the start curvature circle r 0  on the displayed guideline; and  
           [0049]    (vi) the end point a 1 .  
           [0050]    The computer, using any suitable mathematical formulae, then constructs a curve passing through the start and end points a 0 , a 1 , with start tangent direction e 0  and center m 0  of the start curvature circle r 0 . In this embodiment, like the previously described conic point curve construction embodiment, the end tangent direction e 1  is automatically set, e.g. in a symmetric way such that the angle between a ray extending from the start point a 0  in the direction of the end point a 1 , and the end tangent direction, e 1 , equals the angle of between the start tangent direction, e 0  and that ray. For conics, the center m 1  of the end curvature circle r 1  is automatically determined as shown for conic curvature curves. Since the end tangent direction is chosen in a symmetric way, the end curvature of the resulting conic equals the start curvature. For cubic Bezier curves, the center m 1  of the end curvature circle r 1  must be chosen by the program, e.g., in such a way that the end curvature equals the start curvature.  
           [0051]    As described in Ananya (supra), it is possible to modify a curve by changing the position of a feature of any curve component while drawing it or after the drawing is completed. It is also possible to modify the type of continuity by which two curve components are connected, or to make two curves out of one curve, or one curve out of two curves, to delete and redraw any curve component, or to add or subtract curve components.  
           [0052]    Last but not least it is possible to change the curve type. In particular, it is possible to transform a conic into one or several cubic Bezier curves (which are very close) and to transform a cubic Bezier curve into one or several conics (which are fairly close, but are chosen in such a way that allows for shape improvement).  
           [0053]    This invented Computer Curve Construction System II enables the construction of conics more intuitively, predictably, and accurately, and it is also faster, more efficient and ergonomic for the operator. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0054]    [0054]FIG. 1 is all the steps in constructing a conic the old way  
         [0055]    [0055]FIG. 2 is two curves connected without curvature continuity  
         [0056]    [0056]FIG. 3 is two curves connected with curvature continuity  
         [0057]    [0057]FIG. 4 is a first step in constructing a conic peak-point curve.  
         [0058]    [0058]FIG. 5 is a second step in constructing a conic peak-point curve.  
         [0059]    [0059]FIG. 6 is a third step in constructing a conic peak-point curve.  
         [0060]    [0060]FIG. 7 is a first step in constructing a conic point-point curve.  
         [0061]    [0061]FIG. 8 is a second step in constructing a conic point-point curve.  
         [0062]    [0062]FIG. 9 is a third step in constructing a conic point-point curve.  
         [0063]    [0063]FIG. 10 is a first step in constructing a conic point-tangent curve.  
         [0064]    [0064]FIG. 11 is a second step in constructing a conic point-tangent curve.  
         [0065]    [0065]FIG. 12 is a first step in constructing a conic point curve.  
         [0066]    [0066]FIG. 13 is a second step in constructing a conic point curve.  
         [0067]    [0067]FIG. 14 is a first step in constructing a conic curvature curve.  
         [0068]    [0068]FIG. 15 is a second step in constructing a conic curvature curve.  
         [0069]    [0069]FIG. 16 is a third step in constructing a conic curvature curve.  
         [0070]    [0070]FIG. 17 is a first step in constructing a conic point-curvature curve.  
         [0071]    [0071]FIG. 18 is a second step in constructing a conic point-curvature curve.  
         [0072]    [0072]FIG. 19 is a third step in constructing a conic point-curvature curve. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0073]    Introduction  
         [0074]    The present computer curve construction system and method is preferably implemented as part of a computer drawing program for drawing curves, which is a practical application in the industrial art of computer drawing. In one embodiment, the system may be implemented in any suitable computer language for any operating system and any hardware platform. The system may be distributed through any medium, such as a disc, non-volatile memory, or being available for downloading on a network. In other embodiments the system may be implemented in any firmware or any hardware.  
         [0075]    In FIGS.  1 - 19 , all points are represented by small circles, and all tangent directions are represented by lines with arrows. A tangent direction only indicates the direction or angle of a tangent vector; it does not indicate the length of the tangent vector.  
         [0076]    The Computer Curve Construction System described in Ananya (supra) is incorporated by reference into this application to provide definition, context and meaning to the newly invented curve construction embodiments described below.  
         [0077]    FIGS.  4 - 6  Conic Peak-Point Curves  
         [0078]    As in Ananya (supra), in a first step shown in FIG. 4, a start point a 0  is set, and a start tangent direction e 0  is set. In a second step shown in FIG. 5, an end point a 1  is set and an end tangent direction e 1  is set. Then a guide for the peak point is shown (the point on the curve at the greatest distance from the chord). The guide for the peak point is the centerline segment which connects the center of the chord with the intersection point of the start and end tangents. For a conic the peak always lies on the centerline segment. In a third step shown in FIG. 6, the peak point p is set anywhere on this guide. Since it is difficult to place p exactly on the guide, the point that is set is projected onto the guide to the point on the guide at the same distance from the chord. A conic curve is automatically drawn by the computer through points a 0  and a 1 , with start and end tangent directions e 0  an e 1 , and with the peak point p, according to any suitable set of mathematical formulas.  
         [0079]    This conic curve is already drawn when the mouse button (input device) is pressed for the peak point. When the peak point is dragged by the input mechanism, (mouse) to a new location, and the conic curve is changed, the final shape of which is drawn when the input mechanism releases the peak point.  
         [0080]    Additional curve components of any type may be constructed connected to the original curve with G 2 , G 1 , or G 0  continuity.  
         [0081]    The conic peak-point curves are more intuitive, predictable, and accurate to construct than conics with typical computer drawing programs, because the peak point directly determines its path.  
         [0082]    An exemplar set of formulas for determining a conic peak-point curve is as follows:  
         [0083]    Let q=0.5(a 0 +a 1 ) be the center of the chord. The equation for the conic is  
           x        (   t   )       =             (     1   -   t     )     2          b   0       +     2        t        (     1   -   t     )            wb   1       +       t   2          b   2               (     1   -   t     )     2     +     2        t        (     1   -   t     )          w     +     t   2           ,                         
 
         [0084]    where b 0 , b 1 , b 2  are the control points and w is the weight. The control point b 0  is the start point a 0 , the control point b 1  is the intersection point of the start and end tangents, the control point b 2  is the end point a 1 , and the weight w is the proportion between the distance of the peak point from q and the distance of the peak point from b 1 .  
         [0085]    The following assumptions are made:  
         [0086]    Assume that sign(e 0 ×(a 1 −a 0 ))=sign(e 1 ×x(a 0 −a 1 ))=sign (e 0 ×e 1 ) (where “x” denotes the vector product between two 2-dimensional vectors) and that the peak point p lies on the guide described above.  
         [0087]    The following formulas are provided;  
           b   0   =a   0            b   1     =       a   0     +           (       a   1     -     a   0       )          xe   1           e   0          xe   1              e   0                               
  b   2   =a   1   
       w   =                p   1     -     q   1                     p   1     -     b   1              .                           
 
         [0088]    The parameter for the peak point of a conic is always 0.5, whereas for a cubic Bezier curve this parameter can have a different value.  
         [0089]    The concept of peak-point curve shows very clearly why the conics have a better shape than the cubic Bezier curves. The reason is that the conics are more centered, since the peak point always lies on the centerline, whereas for cubic Bezier curves the peak point can lie elsewhere than on the centerline.  
         [0090]    FIGS.  7 - 9 —Conic Point-Point Curves  
         [0091]    As in Ananya (supra), in a first step shown in FIG. 7, a start point a 0 , and a start tangent direction e 0  are set. In a second step shown in FIG. 8, a peak point p is set. Then a guide for the end point is shown. The guide uses the special point that lies on the ray starting at the start point in the direction of the peak point at twice the distance of the peak point from the start point. It is the area of the open convex polygon defined by the following two rays starting at this special point: the ray in the direction of the peak point from the start point and the ray in the opposite direction of the start tangent direction. In a third step shown in FIG. 9, the end point a 1  is set anywhere on this guide. A conic c is automatically drawn through points a 0  and a 1 , with start tangent direction e 0  and peak point p, according to any suitable set of mathematical formulas. As shown in FIG. 9, for the example of conics (unlike the example of cubic Bezier curves), the end tangent direction e 1  is automatically determined, since the intersection point of the start and end tangents is determined. It equals the intersection point of the start tangent and the line connecting the center of the chord with the peak point.  
         [0092]    This conic c is already drawn when the mouse button (input device) is pressed for the end point a 1 , and when the mouse is dragged, the end point a 1  is dragged to a new position, and the conic c is changed, the final shape of which is drawn when the mouse is released.  
         [0093]    Additional curve components of any type may be constructed to connect with G2, G1, or G0 continuity.  
         [0094]    The conic point-point curves are easy to construct, because the end tangent direction of each curve component is automatically determined.  
         [0095]    An exemplar set of formulas for determining a conic point-point curve is as follows:  
         [0096]    The following assumption is made:  
         [0097]    Assume that the end point a1 lies inside the guide described above.  
         [0098]    The following formulas are provided:  
         [0099]    Using the automatically determined end tangent direction e 1 , the formulas for a conic point-point curve are the same as the formulas for a conic peak-point curve.  
         [0100]    FIGS.  10 - 11 -Conic Point-Tangent Curves  
         [0101]    As in Ananya (supra), in a first step shown in FIG. 10, a start point a 0  and a start tangent direction e 0  are set. In a second step shown in FIG. 11, an end point a 1  and an end tangent direction e 1  are set. A conic c is automatically drawn through start and end points a 0  and a 1 , with start and end tangent directions e 0  and e 1 , according to any suitable set of mathematical formulas.  
         [0102]    The conic has a chosen weight w such as w=cos(α/2), where a is the angle between e 0  and e 1 . With this weight, if the angle between e 0  and the ray extending from the start point to the end point equals the angle between that ray and e 1 , the conic is a circular arc. However, the user is allowed to choose any fixed weight or any fixed cos-weight. The cos-weight is a new concept that has not been used anywhere. If the weight is (v)cos(α/2), we say that the cos-weight is v. The advantage of a fixed cos-weight is, that if the angle α goes toward 180 degrees, the height of the curve is still restrained, whereas for a fixed weight the height stretches toward infinity. If the weight is 1, the conic is a parabola, which means that the conic point-tangent curve is the same as the Bezier point-tangent curve described in Ananya. (supra) However, there are infinitely more possibilities for conic point-tangent curves (and also for conic point curves as described below), when choosing any weight or cos-weight.  
         [0103]    These infinitely more possibilities for point-tangent and point curves can also be allowed for the example of cubic Bezier curves by choosing the peak point to lie on the center line segment with a chosen weight or cos-weight and computing the Bezier peak-point curve.  
         [0104]    As shown in FIG. 11, the peak point p is automatically determined by the weight w. The proportion λ of the distance of the peak point from the center of the chord to the total length of the center line segment which is:  
       λ   =     w     w   +   1                             
 
         [0105]    This shows where on the center line the peak point lies.  
         [0106]    This conic c is already drawn when the mouse is dragged to the position of the end tangent direction e 1 , and when the mouse is dragged further, the end tangent direction e 1  is dragged to a new position, and the conic c is changed, the final shape of which is drawn when the mouse is released.  
         [0107]    Additional curve components of any type may be constructed to connect with G 2 , G 1 , or G 0  continuity.  
         [0108]    The conic point-tangent curves are easy to construct, because the peak point is automatically determined.  
         [0109]    An exemplar set of formulas for determining a conic peak-point curve is as follows:  
         [0110]    The following assumptions are made:  
         [0111]    Assume that sign(e 0 ×(a 1 −a 0 ))=sign(e 1 ×(a 0 −a 1 ))=sign(e 0 ×e 1 ).  
         [0112]    The following formulas are provided:  
         [0113]    The weight w is the chosen weight or (v)cos(α/2), where v is the chosen cos-weight, The proportion λ of the distance of the peak point from the center of the chord to the total length of the centerline segment is given by:  
       λ   =     w     w   +   1                             
 
         [0114]    Everything else is determined in the same way as for the conic peak-point curves.  
         [0115]    FIGS.  12 - 13 —Conic Point Curves  
         [0116]    As in Ananya (supra), in a first step shown in FIG. 12, a start point a 0  and a start tangent direction e 0  are set. In a second step shown in FIG. 13, an end point a 1  is set. A conic c is automatically drawn through start and end points a 0  and a 1  with start tangent direction e 0 , according to any suitable set of mathematical formulas. As shown in FIG. 13, an end tangent direction e 1  for end point a 1  is automatically set, for example, in a symmetric way such that the angle between the chord and the end tangent direction equals the angle between the start tangent direction and the chord.  
         [0117]    The conic has a chosen weight w (which can be determined by a chosen cos-weight v as described for conic point-tangent curves). As shown in FIG. 13, the peak point p is automatically determined by the weight w; this computation is done in the same way as for conic point-tangent curves.  
         [0118]    In this particular embodiment the whole curve component c is symmetric with respect to the axis that is perpendicular to the chord and goes through the center of the chord.  
         [0119]    This conic c is already drawn when the mouse button (input device) is pressed for the end point a 1 , and when the mouse is dragged, the end point a 1  is dragged to a new position, and the conic c is changed, the final shape of which is drawn when the mouse is released.  
         [0120]    Additional curve components of any type may be constructed to connect with G 2 , G 1 , or G 0  continuity.  
         [0121]    The conic point curves are easy to construct, because the end tangent direction and the peak point are automatically determined.  
         [0122]    An exemplar set of formulas for determining a conic point curve is as follows:  
         [0123]    The following assumption is made:  
         [0124]    Assume that the angle between e 0  and the ray extending from a 0  in the direction of a 1  is smaller than 90°:  
         [0125]    The following formulas are provided:  
         [0126]    After choosing the end tangent direction e 1  as described above, the formulas for the conic point curve are the same as the formulas for a the conic point-tangent curve.  
         [0127]    FIGS.  14 - 16 —Conic Curvature Curves  
         [0128]    As in Ananya (supra), in a first step shown in FIG. 14, a start point a 0  and a start tangent direction e 0  are set, and the guide for the center of the start curvature circle (the osculating circle of the start curvature) is shown. The guide is the line through a 0  perpendicular to e 0 . In a second step shown in FIG. 15, a center m 0  of the start curvature circle r 0  is set. Since it is difficult to place m 0  exactly on the guide, the point that is set is projected perpendicularly onto the guide. In a third step shown in FIG. 16, an end point a 1  and an end tangent direction e 1  are set. For a conic, once the start curvature is chosen, the end curvature is automatically determined. As shown in FIG. 16, a center m 1  of the end curvature circle r 1  is drawn automatically. A conic c is automatically drawn through start and end points a 0  and a 1  with start and end tangent directions e 0  and e 1  and center m 0  of the start curvature circle r 0  according to any suitable set of mathematical formulas.  
         [0129]    This conic c is drawn when the mouse button {input device] is dragged for the end tangent direction, and when the mouse is dragged further, the end tangent direction is dragged to a new location, and the conic c is changed, the final shape of which is drawn when the mouse is released.  
         [0130]    Additional curve components of any type may be constructed to connect with G 2 , G 1 , or G 0  continuity.  
         [0131]    The conic curvature curves are easy to construct, because the end curvature is automatically determined. So for all additional conic curvature curves that are connected with G 2  continuity, no curvature has to be drawn, whereas for Bezier curvature curves that are connected with G 2  continuity always the end curvature has to be drawn.  
         [0132]    An exemplar set of formulas for determining a conic curvature curve is as follows:  
         [0133]    The equation for the conic is  
           x        (   t   )       =             (     1   -   t     )     2          b   0       +     2        t        (     1   -   t     )            wb   1       +       t   2          b   2               (     1   -   t     )     2     +     2        t        (     1   -   t     )          w     +     t   2           ,                         
 
         [0134]    where b 0 , b 1 , b 2  are the control points and w is the weight. The formulas for the start curvature k 0  and end curvature k 1  are:  
               k   0     =       area        (       b   0     ,     b   1     ,     b   2       )           w   2                   b   1     -     b   0            3                       k   1     =       area        (       b   0     ,     b   1     ,     b   2       )           w   2                   b   2     -     b   1            3                                     
 
         [0135]    where area((b 0 , b 1 , b 2 ) is the area of the triangle formed by b 0 , b 1 , b 2 .  
         [0136]    The following assumption is made:  
         [0137]    Assume that sign(e 0 ×(a 1 −a 0 ))=sign(e 1 ×(a 0 −a 1 ))=sign(e 0 ×e 1 ) and that the end point lies on the same side of e 0  as the center of the start curvature circle.  
         [0138]    The following formulas are provided:  
           b   0   =a   0            b   1     =       a   0     +           (       a   1     -     a   0       )          xe   1           e   0          xe   1              e   0                               
  b   2   =a   1  
             w   =         area        (       b   0     ,     b   1     ,     b   2       )           k   0                   b   1     -     b   0            3                         k   1     =       area        (       b   0     ,     b   1     ,     b   2       )           w   2                   b   2     -     b   1            3                                     
 
         [0139]    FIGS.  17 - 19 —Point-Curvature Curves  
         [0140]    A sixth new embodiment of the Computer Curve Construction System II is for constructing point-curvature curves. In a first step shown in FIG. 17, a start point a 0  and a start tangent direction e 0  are set, and the guide for the center of the start curvature circle (the osculating circle of the start curvature) is shown. The guide is the line through a 0  perpendicular to e 0 . In a second step shown in FIG. 18, a center m 0  of the start curvature circle r 0  is set. Since it is difficult to place m 0  exactly on the guide, the point that is set is projected perpendicularly onto the guide. In a third step shown in FIG. 19, an end point a 1  is set. A curve c is automatically drawn through start and end points a 0  and a 1 , with start tangent direction e 0  and center m 0  of the start curvature circle r 0  according to any suitable set of mathematical formulas. As shown in FIG. 19, an end tangent direction e 1  for end point a 1  is automatically set, for example, in a symmetric way such that the angle between the ray extending from a 0  to a 1  and the end tangent direction equals the angle between the start tangent direction and that ray.  
         [0141]    For the example of conics, the center m 1  of the end curvature circle r 1  is automatically determined as shown for conic curvature curves. Since the end tangent direction is chosen in a symmetric way, the end curvature of the resulting conic equals the start curvature.  
         [0142]    For the example of cubic Bezier curves, the center m 1  of the end curvature circle r 1  is chosen in a particular way, for example in such a way that the end curvature equals the start curvature.  
         [0143]    This curve c is already drawn when the mouse button (input device) is pressed for the end point, and when the mouse is dragged, the end point is dragged to a new location, and the curve c is changed, the final shape of which is drawn when the mouse is released.  
         [0144]    Additional curve components of any type may be constructed to connect with G 2 , G 1 , or G 0  continuity.  
         [0145]    The point-curvature curves are easy to construct, because the end tangent and end curvature are automatically determined. So for all additional point-curvature curves that are connected with G 2  continuity, no curvature has to be drawn.  
         [0146]    An exemplar set of formulas for determining the point-curvature curve for conics is as follows:  
         [0147]    The following assumption is made:  
         [0148]    Assume that sign(e 0 ×(a 1 −a 0 ))=sign(e 1 ×(a 0 −a 1 ))=sign(e 0 ×e 1 ) and that the end point lies on the same side of e 0  as the center of the start curvature circle.  
         [0149]    After choosing the end tangent direction e 1  as described above, the formulas for the conic point-curvature curve are the same as the formulas for the conic curvature curve.  
         [0150]    An exemplar set of formulas for determining the point-curvature curve for cubic Bezier curves is as follows:  
         [0151]    The following assumption is made:  
         [0152]    Assume that sign(e 0 ×(a 1 −a 0 ))=sign(e 1 ×(a 0 −a 1 )) and that the end point lies on the same side of e 0  as the center of the start curvature circle.  
         [0153]    After choosing the end tangent direction e 1  and the center m 1  of the end curvature circle as described above, the formulas for the Bezier point-curvature curve are the same as the formulas for the Bezier curvature curve.  
         [0154]    Modifying Types of Curve Components  
         [0155]    Besides modifying different types as described in the Ananya (supra) it is also possible to change between cubic Bezier curves and conics.  
         [0156]    Change From a Cubic Bezier Curve to Conics:  
         [0157]    If the angle between the start and end tangents is smaller than 180 degrees, the resulting conic is the conic peak-point curve with the same start and end points and the same start and end tangent directions and the peak point on the center line at the same distance from the chord as the peak point of the cubic Bezier curve. If the angle between the start and end tangent is larger than or equal to 180 degrees, the cubic Bezier curve is first changed into two cubic Bezier curves which connect at the peak point of the original cubic Bezier curve. Then each Bezier curve is changed into a conic after finding its peak point, which is the point where the tangent is parallel to the chord, that can be found by using the section “Computing Points and Tangent Directions of a Cubic Bezier Curve” described in Ananya (supra).  
         [0158]    Change From a Conic to Cubic Bezier Curves:  
         [0159]    If the angle between the start and end tangents is smaller than 90 degrees, the resulting cubic Bezier curve is the Bezier peak-point curve with the same start and end points and the same start and end tangent directions and the same peak point. If the angle between the start and end tangents is larger than or equal to 90 degrees (it is still smaller than 180 degrees because of the assumptions for conics), the conic is first changed into two conics which connect at the peak point of the original conic. Then each conic is changed into a cubic Bezier curve after finding its peak point, which is the point where the tangent is parallel to the chord, that can be found by using the section “Computing Points and Tangent Directions of a Conic” described below.  
         [0160]    Computing Points and Tangent Directions of a Conic  
         [0161]    Let b 0 , b 1 , and b 2  be the control points and w the weight of a conic. For drawing a conic or for selecting a point on a conic the following algorithm is used, which is different from the deCasteljau algorithm. This algorithm is faster than making computations using the equation of the conic. It computes a number N of points and tangent directions, the number N being a power of 2 (such as N=1024). For drawing the conic, the polygonal line connecting these points is drawn. The points are not computed in the order they are drawn, but each point has an index and the points are drawn in the order of the indices. The points p[n], n=0, 1, 2, . . . , N, start at the start point p[0]=b 0  and end at the end point p[N]=b 2 . The tangent directions t[n], n=0, 1, 2, . . ., N, start at the start tangent direction t[0]=b 1 −b 0 , and end at the end tangent direction t[N]=b 2 −b 1 . The points p[n] and tangent directions t[n], n=1, 2, 3, . . . , N−1 are computed by a recursive function depending on an index n, a step s, control points c 0 , c 1 , and C 2 , and a weight v (for a conic which is a portion of the original conic). This recursive function also depends on the arrays p[ ] and t[ ], where it writes the results. The first time this function is called for the index N/2, the step N/2, the control points c 0 =b 0 , c 1 =b 1 , and C 2 =b 2 , and the weight v=w, and it computes the point p[N/2] and the tangent direction t[N/2]. When the function is called for the index n, the step s, the control points c 0 , c 1 , and C 2 , and the weight u, it computes:  
         [0162]    the center point q=0.5(c 0 +C 2 ),  
         [0163]    the factor  
         λ   =     v     v   +   1         ,                         
 
         [0164]    the peak point p[n]=q+λ(c 1 −q),  
         [0165]    and the tangent direction t[n]=c2−c 0 .  
         [0166]    After p[n] and t[n] are computed, if s is still larger than 1, the recursive function gets called twice for the index n−s/2, the step s/2,  
         [0167]    the control points c 0 , c 0 +λ(c 1 −c 0 ), and p[n],  
         [0168]    and the weight u={square root}{square root over (0.5(v+1))}(for the conic between c 0  and p[n]),  
         [0169]    and for the index n+s/2, the step s/2,  
         [0170]    the control points p[n], C 2 +λ(C 1 −C 2 ), and C 2 ,  
         [0171]    and the weight u={square root}{square root over (0.5(v+1))}. (for the conic between p[n] and C 2 ),  
         [0172]    The point p[n] and tangent direction t[n] are the point and tangent direction at the parameter t=n/N, and they are computed faster than using the equation of the original conic.  
         [0173]    Conclusion  
         [0174]    Although the above description is specific, it should not be considered as a limitation on the scope of the invention of the material describe herein, but only as an additional examples of the preferred embodiments. Many substitutes and variations are possible within the teachings of the invention, even for the particular example of conics. The mathematical formulas are only examples how the curves may be determined; any other suitable formulas may be used, even for the particular example of conics.  
         [0175]    For the described point-curvature curves any types curves can be used and a specific description is made for the example of cubic Bezier curves conics. Also, for the embodiments of point-tangent and point curves, in addition to the example of conics, new examples of cubic Bezier curves are described.  
         [0176]    It is also shown how conics can be converted into cubic Bezier curves that are very close, and how cubic Bezier curves can be converted into conics that a fairly close, but are chosen in such a way that allows for shape improvement. The algorithms for these conversions use the peak-point curve concept.